Omron Cp1E Ed Users Manual SYSMAC CP Series E__D_ _ N__D_ NA__D_ CPU Unit

CP1E-NA@@D@-@ to the manual 17bc2557-2fa6-4b6a-a5fe-92cc25c4cb7d

2015-01-24

: Omron Omron-Cp1E-Ed-Users-Manual-332498 omron-cp1e-ed-users-manual-332498 omron pdf

Open the PDF directly: View PDF PDF.
Page Count: 467

DownloadOmron Omron-Cp1E-Ed-Users-Manual- SYSMAC CP Series CP1E-E__D_-_ CP1E-N__D_-_ CP1E-NA__D_-_ CP1E CPU Unit  Omron-cp1e-ed-users-manual
Open PDF In BrowserView PDF
Cat. No. W483-E1-03

SYSMAC CP Series
CP1E-E@@D@-@
CP1E-N@@D@-@
CP1E-NA@@D@-@

CP1E CPU Unit

INSTRUCTIONS
REFERENCE MANUAL

” OMRON, 2009
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.
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 information contained in this manual is subject to change without
notice. Every precaution has been taken in the preparation of this manual. Nevertheless, OMRON assumes no responsibility
for errors or omissions. Neither is any liability assumed for damages resulting from the use of the information contained in
this publication.

SYSMAC CP Series
CP1E-E@@D@-@
CP1E-N@@D@-@
CP1E-NA@@D@-@
CP1E CPU Unit
Instructions Reference Manual
Revised December 2009

Introduction
Thank you for purchasing a SYSMAC CP-series CP1E Programmable Controller.
This manual contains information required to use the CP1E. Read this manual completely and be sure
you understand the contents before attempting to use the CP1E.

Intended Audience
This manual is intended for the following personnel, who must also have knowledge of electrical systems (an electrical engineer or the equivalent).
• Personnel in charge of installing FA systems
• Personnel in charge of designing FA systems
• Personnel in charge of managing FA systems and facilities

Applicable Products
 CP-series CP1E CPU Units
• Basic Models CP1E-ED-
A basic model of CPU Unit that support basic control applications using instructions such as
basic, movement, arithmetic, and comparison instructions.
• Application Models CP1E-N/NAD-
An application model of CPU Unit that supports connections to Programmable Terminals, inverters, and servo drives.
The CP Series is centered around the CP1H, CP1L, and CP1E CPU Units and is designed with the
same basic architecture as the CS and CJ Series.
Always use CP-series Expansion Units and CP-series Expansion I/O Units when expanding I/O
capacity. I/O words are allocated in the same way as for the CPM1A/CPM2A PLCs, i.e., using fixed
areas for inputs and outputs.

CP1E CPU Unit Instructions Reference Manual(W483)

1

CP1E CPU Unit Manuals
Information on the CP1E CPU Units is provided in the following manuals.
Refer to the appropriate manual for the information that is required.

This Manual
CP1E CPU Unit Hardware
User’s Manual(Cat. No. W479)

CP1E CPU Unit Software
User’s Manual(Cat. No. W480)

CP1E CPU Unit Instructions
Reference Manual(Cat. No. W483)

Mounting and

1 Setting Hardware
· Names and specifications of the parts of all Units
· Basic system configuration for each CPU Unit
· Connection methods for Expansion I/O Units
and Expansion Units

2 Wiring
· Wiring methods for the power supply
· Wiring methods between external I/O devices
and Expansion I/O Units or Expansion Units

Connecting

3 Online to the PLC
Connecting Cables for CX-Programmer
Support Software

Procedures for connecting the
CX-Programmer Support Software

4 Software Setup
Software setting methods for the CPU
Units (PLC Setup)

5 Creating the Program
· Program types and basic information
· CPU Unit operation
· Internal memory
· Built-in CPU functions
· Settings

Detailed information on
programming instructions

Checking and

6 Debugging Operation

Maintenance and

· Checking I/O wiring, setting the Auxiliary Area
settings, and performing trial operation
· Monitoring and debugging with the
CX-Programmer

7 Troubleshooting

Error codes and remedies if a problem occurs

2

CP1E CPU Unit Instructions Reference Manual(W483)

Manual Configuration
The CP1E CPU manuals are organized in the sections listed in the following tables. Refer to the appropriate section in the manuals as required.

CP1E CPU Unit Instructions Reference Manual (Cat. No. W483)
(This Manual)
Section

Contents

Section 1 Summary of Instructions

This section provides a summary of instructions used with a CP1E CPU
Unit.

Section 2 Instruction

This section describes the functions, operands and sample programs of
the instructions that are supported by a CP1E CPU Unit.

Section 3 Instruction Execution
Times and Number of Steps

This section provides the execution times for all instructions used with a
CP1E CPU Unit.

Section 4 Monitoring and
Computing the Cycle Time

This section describes how to monitor and calculate the cycle time of a
CP1E CPU Unit that can be used in the programs.

Appendices

The appendices provide a list of instructions by Mnemonic and ASCII
code table for the CP1E CPU Unit.

CP1E CPU Unit Software User’s Manual (Cat. No. W480)
Section

Contents

Section 1 Overview

This section gives an overview of the CP1E, describes its application
procedures.

Section 2 CPU Unit Memory

This section describes the types of internal memory in a CP1E CPU
Unit and the data that is stored.

Section 3 CPU Unit Operation

This section describes the operation of a CP1E CPU Unit.

Section 4 Programming Concepts

This section provides basic information on designing ladder programs
for a CP1E CPU Unit.

Section 5 I/O Memory

This section describes the types of I/O memory areas in a CP1E CPU
Unit and the details.

Section 6 I/O Allocation

This section describes I/O allocation used to exchange data between
the CP1E CPU Unit and other units.

Section 7 PLC Setup

This section describes the PLC Setup, which are used to perform basic
settings for a CP1E CPU Unit.

Section 8 Overview and Allocation
of Built-in Functions

This section lists the built-in functions and describes the overall application flow and the allocation of the functions.

Section 9 Quick-response Inputs

This section describes the quick-response inputs that can be used to
read signals that are shorter than the cycle time.

Section 10 Interrupts

This section describes the interrupts that can be used with CP1E PLCs,
including input interrupts and scheduled interrupts.

Section 11 High-speed Counters

This section describes the high-speed counter inputs, high-speed
counter interrupts, and the frequency measurement function.

Section 12 Pulse Outputs

This section describes positioning functions such as trapezoidal control,
jogging, and origin searches.

Section 13 PWM Outputs

This section describes the variable-duty-factor pulse (PWM) outputs.

Section 14 Serial Communications

This section describes communications with Programmable Terminals
(PTs) without using communications programming, no-protocol communications with general components, and connections with a ModbusRTU Easy Master, Serial PLC Link, and host computer.

CP1E CPU Unit Instructions Reference Manual(W483)

3

Section

Contents

Section 15 Analog I/O Function

This section describes the built-in analog function for NA-type CPU
Units.

Section 16 Built-in Functions

This section describes PID temperature control, clock functions, DM
backup functions, security functions.

Section 17 Operating the Programming Device

This section describes basic functions of the CX-Programmer, such as
using the CX-Programmer to write ladder programs to control the CP1E
CPU Unit, to transfer the programs to the CP1E CPU Unit, and to debug
the programs.

Appendices

The appendices provide lists of programming instructions, the Auxiliary
Area, cycle time response performance, PLC performance at power
interruptions.

CP1E CPU Unit Hardware User’s Manual (Cat. No. W479)
Section

Contents

Section 1 Overview and Specifications

This section gives an overview of the CP1E, describes its features, and
provides its specifications.

Section 2 Basic System Configuration and Devices

This section describes the basic system configuration and unit models
of the CP1E.

Section 3 Part Names and Functions This section describes the part names and functions of the CPU Unit,
Expansion I/O Units, and Expansion Units in a CP1E PLC .

4

Section 4 Programming Device

This section describes the features of the CX-Programmer used for programming and debugging PLCs, as well as how to connect the PLC with
the Programming Device by USB.

Section 5 Installation and Wiring

This section describes how to install and wire CP1E Units.

Section 6 Troubleshooting

This section describes how to troubleshoot problems that may occur
with a CP1E PLC, including the error indications provided by the CP1E
Units.

Section 7 Maintenance and Inspection

This section describes periodic inspections, the service life of the Battery, and how to replace the Battery.

Section 8 Using Expansion Units
and Expansion I/O Units

This section describes application methods for Expansion Units.

Appendices

The appendices provide information on dimensions, wiring diagrams,
and wiring serial communications for the CP1E.

CP1E CPU Unit Instructions Reference Manual(W483)

Manual Structure
Page Structure and Icons
The following page structure and icons are used in this manual.

Installation

Level 1 heading
Level 2 heading
Level 3 heading

Installation Location

Gives the current
headings.

5 Installation and wiring

Level 2 heading
Level 3 heading

5-2
5-2-1

DIN Track Installation

1

Use a screwdriver to pull down the DIN Track mounting pins from the back of the Units to release
them, and mount the Units to the DIN Track.

Indicates a step in a
procedure.
DIN Track mounting pins

5

Fit the back of the Units onto the DIN Track by catching the top of the Units on the Track and then
pressing in at the bottom of the Units, as shown below.

DIN Track

3

5-2-1 Installation Location

Release

2

5-2 Installation

Step in a procedure

Page tab
Gives the number
of the section.

Press in all of the DIN Track mounting pins to securely lock the Units in place.

Special Information
(See below.)
Icons are used to indicate
precautions and
additional information.

DIN Track mounting pins

Precautions for Correct Use
Tighten terminal block screws and cable screws to the following torques.
M4: 1.2 N·m
M3: 0.5 N·m

Manual name

CP1E CPU Unit Hardware User’s Manual(W479)

5-3

This illustration is provided only as a sample and may not literally appear in this manual.

Special Information
Special information in this manual is classified as follows:

Precautions for Safe Use
Precautions on what to do and what not to do to ensure using the product safely.
Precautions for Correct Use
Precautions on what to do and what not to do to ensure proper operation and performance.
Additional Information
Additional information to increase understanding or make operation easier.
References to the location of more detailed or related information.

CP1E CPU Unit Instructions Reference Manual(W483)

5

Terminology and Notation
Term
E-type CPU Unit

Description
A basic model of CPU Unit that support basic control applications using instructions such
as basic, movement, arithmetic, and comparison instructions.
Basic models of CPU Units are called “E-type CPU Units” in this manual.

N-type CPU Unit

An application model of CPU Unit that supports connections to Programmable Terminals,
inverters, and servo drives.
Application models of CPU Units are called “N-type CPU Units” in this manual.

NA-type CPU Unit

An application model of CPU Unit that supports built-in analog and connections to Programmable Terminals, inverters, and servo drives.
Application models of CPU Units with built-in analog are called “NA-type CPU Units” in
this manual.

CX-Programmer

A programming device that applies for programming and debugging PLCs.
The CX-Programmer includes the Micro PLC Edition CX-Programmer (CX-One Lite), the
CX-Programmer (CX-One) and the CX-Programmer for CP1E.
This manual describes the unique applications and functions of the Micro PLC Edition
CX-Programmer version 9.03 or higher CX-Programmer for CP1E.
“CX-Programmer” refers to the Micro PLC Edition CX-Programmer version 9.03 or higher
CX-Programmer for CP1E in this manual.
Note E20/30/40 and N20/30/40 CPU Units are supported by CX-Programmer version 8.2
or higher. E10/14, N14/60 and NA20 CPU Units are supported by CX-Programmer
version 9.03 or higher.

6

CP1E CPU Unit Instructions Reference Manual(W483)

Sections in this Manual

1
2

1

Summary of Instructions
3

2

Instructions
4

3

Instruction Execution Times and Number
of Steps

4

Monitoring and Computing the Cycle Time

A

Appendices

CP1E CPU Unit Instructions Reference Manual(W483)

A

7

CONTENTS
Introduction ............................................................................................................... 1
CP1E CPU Unit Manuals ...........................................................................................2
Manual Structure ....................................................................................................... 5
Safety Precautions .................................................................................................. 15
Precautions for Safe Use ........................................................................................ 18
Regulations and Standards.................................................................................... 19
Related Manuals ...................................................................................................... 20

Section 1
1-1

Section 2

Summary of Instructions .............................................. 1-1
Summary of Instructions ........................................................................................................ 1-2

Instructions .................................................................... 2-1

Notation and Layout of Instruction Descriptions ......................................................................... 2-2
Sequence Input Instructions .......................................................................................................... 2-5
LD/LD NOT ................................................................................................................................................ 2-7
AND/AND NOT .......................................................................................................................................... 2-9
OR/OR NOT ............................................................................................................................................. 2-11
AND LD/OR LD ........................................................................................................................................ 2-13
NOT .......................................................................................................................................................... 2-16
UP/DOWN ................................................................................................................................................ 2-17

Sequence Output Instructions ..................................................................................................... 2-18
OUT/OUT NOT ........................................................................................................................................ 2-18
TR ............................................................................................................................................................ 2-20
KEEP ....................................................................................................................................................... 2-21
DIFU ......................................................................................................................................................... 2-25
DIFD ......................................................................................................................................................... 2-27
SET/RSET ............................................................................................................................................... 2-29
SETA/RSTA .............................................................................................................................................. 2-31
SETB/RSTB ............................................................................................................................................. 2-33

Sequence Control Instructions..................................................................................................... 2-35
END ......................................................................................................................................................... 2-38
NOP ......................................................................................................................................................... 2-39
IL/ILC ....................................................................................................................................................... 2-40
MILH/MILR/MILC ..................................................................................................................................... 2-44
JMP/CJP/JME .......................................................................................................................................... 2-53
FOR/NEXT ............................................................................................................................................... 2-56
BREAK ..................................................................................................................................................... 2-59

Timer and Counter Instructions ................................................................................................... 2-60
TIM/TIMX ................................................................................................................................................. 2-66
TIMH/TIMHX ............................................................................................................................................ 2-69
TMHH/TMHHX ......................................................................................................................................... 2-72
TTIM/TTIMX ............................................................................................................................................. 2-74
TIML/TIMLX ............................................................................................................................................. 2-77
CNT/CNTX ............................................................................................................................................... 2-80

8

CP1E CPU Unit Instructions Reference Manual(W483)

CNTR/CNTRX ......................................................................................................................................... 2-83
CNR/CNRX .............................................................................................................................................. 2-86

Comparison Instructions .............................................................................................................. 2-88
=, <>, <, <=, >, >= .................................................................................................................................... 2-88
=DT, <>DT, DT, >=DT ......................................................................................................... 2-91
CMP/CMPL .............................................................................................................................................. 2-95
CPS/CPSL ............................................................................................................................................... 2-98
TCMP .................................................................................................................................................... 2-101
BCMP .................................................................................................................................................... 2-103
ZCP/ZCPL ............................................................................................................................................. 2-105

Data Movement Instructions....................................................................................................... 2-108
MOV/MOVL/MVN ................................................................................................................................... 2-108
MOVB .................................................................................................................................................... 2-111
MOVD .................................................................................................................................................... 2-113
XFRB ..................................................................................................................................................... 2-115
XFER ..................................................................................................................................................... 2-117
BSET ..................................................................................................................................................... 2-119
XCHG .................................................................................................................................................... 2-121
DIST ...................................................................................................................................................... 2-123
COLL ..................................................................................................................................................... 2-125

Data Shift Instructions ................................................................................................................ 2-127
SFT ........................................................................................................................................................ 2-127
SFTR ..................................................................................................................................................... 2-129
WSFT .................................................................................................................................................... 2-131
ASL ........................................................................................................................................................ 2-133
ASR ....................................................................................................................................................... 2-134
ROL ....................................................................................................................................................... 2-135
ROR ....................................................................................................................................................... 2-137
SLD/SRD ............................................................................................................................................... 2-139
NASL/NSLL ........................................................................................................................................... 2-141
NASR/NSRL .......................................................................................................................................... 2-144

Increment/Decrement Instructions ............................................................................................ 2-147
++/++L ................................................................................................................................................... 2-147
--/--L ...................................................................................................................................................... 2-150
++B/++BL .............................................................................................................................................. 2-153
--B/--BL ................................................................................................................................................. 2-156

Symbol Math Instructions........................................................................................................... 2-158
+/+L ....................................................................................................................................................... 2-158
+C/+CL .................................................................................................................................................. 2-160
+B/+BL ................................................................................................................................................... 2-162
+BC/+BCL ............................................................................................................................................. 2-164
–/–L ........................................................................................................................................................ 2-166
–C/–CL .................................................................................................................................................. 2-170
–B/–BL ................................................................................................................................................... 2-172
–BC/–BCL .............................................................................................................................................. 2-175
*/*L ......................................................................................................................................................... 2-177
*B/*BL .................................................................................................................................................... 2-179
/, /L ......................................................................................................................................................... 2-181
/B, /BL .................................................................................................................................................... 2-183

Conversion Instructions.............................................................................................................. 2-185
BIN/BINL ................................................................................................................................................ 2-185
BCD/BCDL ............................................................................................................................................ 2-187
NEG ....................................................................................................................................................... 2-189
MLPX ..................................................................................................................................................... 2-191
DMPX .................................................................................................................................................... 2-196
ASC ....................................................................................................................................................... 2-201
HEX ....................................................................................................................................................... 2-205

Logic Instructions........................................................................................................................ 2-210
ANDW/ANDL ......................................................................................................................................... 2-210
ORW/ORWL .......................................................................................................................................... 2-212

CP1E CPU Unit Instructions Reference Manual(W483)

9

XORW/XORL ......................................................................................................................................... 2-214
COM/COML ........................................................................................................................................... 2-216

Special Math Instructions ........................................................................................................... 2-218
APR ........................................................................................................................................................ 2-218
BCNT ..................................................................................................................................................... 2-227

Floating-point Math Instructions ................................................................................................ 2-229
FIX/FIXL ................................................................................................................................................. 2-233
FLT/FLTL ................................................................................................................................................ 2-235
+F, –F, *F, /F ........................................................................................................................................... 2-237
=F, <>F, F, >=F ........................................................................................................................ 2-241
FSTR ...................................................................................................................................................... 2-244
FVAL ...................................................................................................................................................... 2-249

Table Data Processing Instructions ........................................................................................... 2-253
SWAP ..................................................................................................................................................... 2-253
FCS ........................................................................................................................................................ 2-255

Data Control Instructions............................................................................................................ 2-257
PIDAT ..................................................................................................................................................... 2-257
TPO ........................................................................................................................................................ 2-269
SCL ........................................................................................................................................................ 2-276
SCL2 ...................................................................................................................................................... 2-280
SCL3 ...................................................................................................................................................... 2-284
AVG ........................................................................................................................................................ 2-287

Subroutines Instructions ............................................................................................................ 2-290
SBS ........................................................................................................................................................ 2-290
SBN/RET ............................................................................................................................................... 2-295

Interrupt Control Instructions..................................................................................................... 2-298
MSKS ..................................................................................................................................................... 2-300
CLI ......................................................................................................................................................... 2-303
DI ........................................................................................................................................................... 2-306
EI ............................................................................................................................................................ 2-307

High-speed Counter/Pulse Output Instructions........................................................................ 2-308
INI .......................................................................................................................................................... 2-308
PRV ........................................................................................................................................................ 2-311
CTBL ...................................................................................................................................................... 2-315
SPED ..................................................................................................................................................... 2-319
PULS ...................................................................................................................................................... 2-323
PLS2 ...................................................................................................................................................... 2-325
ACC ....................................................................................................................................................... 2-331
ORG ....................................................................................................................................................... 2-336
PWM ...................................................................................................................................................... 2-339

Step Instructions ......................................................................................................................... 2-341
SNXT/STEP ........................................................................................................................................... 2-342

Basic I/O Unit Instructions .......................................................................................................... 2-352
IORF ...................................................................................................................................................... 2-352
SDEC ..................................................................................................................................................... 2-354
DSW ....................................................................................................................................................... 2-357
MTR ....................................................................................................................................................... 2-361
7SEG ..................................................................................................................................................... 2-365

Serial Communication Instructions ........................................................................................... 2-369
TXD ........................................................................................................................................................ 2-369
RXD ....................................................................................................................................................... 2-374

Clock Instructions........................................................................................................................ 2-380
CADD/CSUB .......................................................................................................................................... 2-380
DATE ...................................................................................................................................................... 2-385

Failure Diagnosis Instructions ................................................................................................... 2-387
FAL ......................................................................................................................................................... 2-387
FALS ...................................................................................................................................................... 2-393

10

CP1E CPU Unit Instructions Reference Manual(W483)

Other Instructions........................................................................................................................ 2-398
STC/CLC ............................................................................................................................................... 2-398
WDT ...................................................................................................................................................... 2-399

Section 3
3-1

Instruction Execution Times and Number of Steps ... 3-1
CP1E CPU Unit Instruction Execution Times and Number of Steps .................................. 3-2

Section 4
4-1

Monitoring and Computing the Cycle Time................. 4-1
Monitoring the Cycle Time...................................................................................................... 4-2
4-1-1

4-2

Computing the Cycle Time ..................................................................................................... 4-3
4-2-1
4-2-2
4-2-3
4-2-4
4-2-5

Section A

Monitoring the Cycle Time.......................................................................................................... 4-2
CPU Unit Operation Flowchart ................................................................................................... 4-3
Cycle Time Overview.................................................................................................................. 4-4
I/O Refresh Times for PLC Units ................................................................................................ 4-5
Cycle Time Calculation Example ................................................................................................ 4-6
Increase in Cycle Time for Online Editing................................................................................... 4-6

Appendices ....................................................................A-1

Alphabetical List of Instructions by Mnemonic .............................................................................A-2

Revision History ....................................................................................... Revision-1

CP1E CPU Unit Instructions Reference Manual(W483)

11

Read and Understand this Manual
Please read and understand this manual before using the product. Please consult your OMRON representative
if you have any questions or comments.

Warranty and Limitations of Liability
WARRANTY
OMRON’s exclusive warranty is that the products are free from defects in materials and workmanship for a
period of one year (or other period if specified) from date of sale by OMRON.
OMRON MAKES NO WARRANTY OR REPRESENTATION, EXPRESS OR IMPLIED, REGARDING NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR PARTICULAR PURPOSE OF THE
PRODUCTS. ANY BUYER OR USER ACKNOWLEDGES THAT THE BUYER OR USER ALONE HAS
DETERMINED THAT THE PRODUCTS WILL SUITABLY MEET THE REQUIREMENTS OF THEIR
INTENDED USE. OMRON DISCLAIMS ALL OTHER WARRANTIES, EXPRESS OR IMPLIED.

LIMITATIONS OF LIABILITY
OMRON SHALL NOT BE RESPONSIBLE FOR SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES,
LOSS OF PROFITS OR COMMERCIAL LOSS IN ANY WAY CONNECTED WITH THE PRODUCTS,
WHETHER SUCH CLAIM IS BASED ON CONTRACT, WARRANTY, NEGLIGENCE, OR STRICT
LIABILITY.
In no event shall the responsibility of OMRON for any act exceed the individual price of the product on which
liability is asserted.
IN NO EVENT SHALL OMRON BE RESPONSIBLE FOR WARRANTY, REPAIR, OR OTHER CLAIMS
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 OR REPAIR.

12

CP1E CPU Unit Instructions Reference Manual(W483)

Application Considerations
SUITABILITY FOR USE
OMRON shall not be responsible for conformity with any standards, codes, or regulations that apply to the
combination of products in the customer’s application or use of the products.
At the customer’s request, OMRON will provide applicable third party certification documents identifying
ratings and limitations of use that apply to the products. This information by itself is not sufficient for a
complete determination of the suitability of the products in combination with the end product, machine,
system, or other application or use.
The following are some examples of applications for which particular attention must be given. This is not
intended to be an exhaustive list of all possible uses of the products, nor is it intended to imply that the uses
listed may be suitable for the products:
• Outdoor use, uses involving potential chemical contamination or electrical interference, or conditions or
uses not described in this manual.
• Nuclear energy control systems, combustion systems, railroad systems, aviation systems, medical
equipment, amusement machines, vehicles, safety equipment, and installations subject to separate
industry or government regulations.
• Systems, machines, and equipment that could present a risk to life or property.
Please know and observe all prohibitions of use applicable to the products.
NEVER USE THE PRODUCTS FOR AN APPLICATION INVOLVING SERIOUS RISK TO LIFE OR
PROPERTY WITHOUT ENSURING THAT THE SYSTEM AS A WHOLE HAS BEEN DESIGNED TO
ADDRESS THE RISKS, AND THAT THE OMRON PRODUCTS ARE PROPERLY RATED AND INSTALLED
FOR THE INTENDED USE WITHIN THE OVERALL EQUIPMENT OR SYSTEM.

PROGRAMMABLE PRODUCTS
OMRON shall not be responsible for the user’s programming of a programmable product, or any
consequence thereof.

CP1E CPU Unit Instructions Reference Manual(W483)

13

Disclaimers
CHANGE IN SPECIFICATIONS
Product specifications and accessories may be changed at any time based on improvements and other
reasons.
It is our practice to change model numbers when published ratings or features are changed, or when
significant construction changes are made. However, some specifications of the products may be changed
without any notice. When in doubt, special model numbers may be assigned to fix or establish key
specifications for your application on your request. Please consult with your OMRON representative at any
time to confirm actual specifications of purchased products.

DIMENSIONS AND WEIGHTS
Dimensions and weights are nominal and are not to be used for manufacturing purposes, even when
tolerances are shown.

PERFORMANCE DATA
Performance data given in this manual 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 users must
correlate it to actual application requirements. Actual performance is subject to the OMRON Warranty and
Limitations of Liability.

ERRORS AND OMISSIONS
The information in this manual has been carefully checked and is believed to be accurate; however, no
responsibility is assumed for clerical, typographical, or proofreading errors, or omissions.

14

CP1E CPU Unit Instructions Reference Manual(W483)

Safety Precautions
Definition of Precautionary Information
The following notation is used in this manual to provide precautions required to ensure safe usage of a
CP-series PLC. The safety precautions that are provided are extremely important to safety. Always read
and heed the information provided in all safety precautions.

WARNING

Indicates an imminently hazardous situation which,
if not avoided, will result in death or serious injury.
Additionally, there may be severe property damage.

Caution

Indicates a potentially hazardous situation which,
if not avoided, may result in minor or moderate
injury, or property damage.

Precautions for Safe Use
Indicates precautions on what to do and what not to do to ensure using the product safely.
Precautions for Correct Use
Indicates precautions on what to do and what not to do to ensure proper operation
and performance.

Symbols
The triangle symbol indicates precautions (including
warnings). The specific operation is shown in the triangle
and explained in text. This example indicates a precaution for electric shock.

The circle and slash symbol indicates operations that you
must not do. The specific operation is shown in the circle
and explained in text.

The filled circle symbol indicates operations that you
must do. The specific operation is shown in the circle and
explained in text. This example shows a general precaution for something that you must do.

The triangle symbol indicates precautions (including
warnings). The specific operation is shown in the triangle
and explained in text. This example indicates a general
precaution.

The triangle symbol indicates precautions (including
warnings). The specific operation is shown in the triangle
and explained in text. This example indicates a precaution for hot surfaces.

CP1E CPU Unit Instructions Reference Manual(W483)

15

Caution
Be sure to sufficiently confirm the safety at the destination when you transfer
the program or I/O memory or perform procedures to change the I/O memory.
Devices connected to PLC outputs may incorrectly operate regardless of the operating mode of the CPU Unit.

With an E-type CPU Unit or with an N/NA-type CPU Unit without a Battery, the contents of the DM Area (D) *, Holding Area (H), the Counter Present Values (C), the status of Counter Completion Flags (C), and the status of bits in the Auxiliary Area (A)
related to clock functions may be unstable when the power supply is turned ON.
*This does not apply to areas backed up to EEPROM using the DM backup function.
If the DM backup function is being used, be sure to use one of the following methods
for initialization.
1. Clearing All Areas to All Zeros
Select the Clear Held Memory (HR/DM/CNT) to Zero Check Box in the Startup
Data Read Area in the PLC Setup.
2. Clearing Specific Areas to All Zeros or Initializing to Specific Values
Make the settings from a ladder program.
If the data is not initialized, the unit or device may operate unexpectedly because of
unstable data.

Execute online edit only after confirming that no adverse effects will be caused
by extending the cycle time.
Otherwise, the input signals may not be readable.

The DM Area (D), Holding Area (H), Counter Completion Flags (C), and Counter
Present Values (C) will be held by the Battery if a Battery is mounted in a CP1EN/NAD- CPU Unit. When the battery voltage is low, however, I/O memory
areas that are held (including the DM, Holding, and Counter Areas) will be unstable.
The unit or device may operate unexpectedly because of unstable data.
Use the Battery Error Flag or other measures to stop outputs if external outputs are performed from a ladder program based on the contents of the DM
Area or other I/O memory areas.

Sufficiently check safety if I/O bit status or present values are monitored in the
Ladder Section Pane or present values are monitored in the Watch Pane.
If bits are set, reset, force-set, or force-reset by inadvertently pressing a shortcut key,
devices connected to PLC outputs may operate incorrectly regardless of the operating mode.

16

CP1E CPU Unit Instructions Reference Manual(W483)

Caution
Program so that the memory area of the start address is not exceeded when
using a word address or symbol for the offset.
For example, write the program so that processing is executed only when the indirect
specification does not cause the final address to exceed the memory area by using
an input comparison instruction or other instruction.
If an indirect specification causes the address to exceed the area of the start address,
the system will access data in other area, and unexpected operation may occur.

Set the temperature range according to the type of temperature sensor connected to the Unit.
Temperature data will not be converted correctly if the temperature range does not
match the sensor.

Do not set the temperature range to any values other than those for which temperature ranges are given in the following table.
An incorrect setting may cause operating errors.

CP1E CPU Unit Instructions Reference Manual(W483)

17

Precautions for Safe Use
Observe the following precautions when using a CP-series PLC.

 Handling
• To initialize the DM Area, back up the initial contents for the DM Area to backup memory using
one of the following methods.
• Set the number of words of the DM Area to be backed up starting with D0 in the Number of
CH of DM for backup Box in the Startup Data Read Area.
• Include programming to back up specified words in the DM Area to built-in EEPROM by turning ON A751.15 (DM Backup Save Start Bit).
• Check the ladder program for proper execution before actually running it on the Unit. Not checking
the program may result in an unexpected operation.
• The ladder program and parameter area data in the CP1E CPU Units are backed up in the built-in
EEPROM backup memory. The BKUP indicator will light on the front of the CPU Unit when the
backup operation is in progress. Do not turn OFF the power supply to the CPU Unit when the
BKUP indicator is lit. The data will not be backed up if power is turned OFF and a memory error
will occur the next time the power supply is turned ON.
• With a CP1E CPU Unit, data memory can be backed up to the built-in EEPROM backup memory.
The BKUP indicator will light on the front of the CPU Unit when backup is in progress. Do not turn
OFF the power supply to the CPU Unit when the BKUP indicator is lit. If the power is turned OFF
during a backup, the data will not be backed up and will not be transferred to the DM Area in RAM
the next time the power supply is turned ON.
• Before replacing the battery, supply power to the CPU Unit for at least 30 minutes and then complete battery replacement within 5 minutes. Memory data may be corrupted if this precaution is
not observed.
• The equipment may operate unexpectedly if inappropriate parameters are set. Even if the appropriate parameters are set, confirm that equipment will not be adversely affected before transferring the parameters to the CPU Unit.
• Before starting operation, confirm that the contents of the DM Area is correct.
• After replacing the CPU Unit, make sure that the required data for the DM Area, Holding Area, and
other memory areas has been transferred to the new CPU Unit before restarting operation.
• Do not attempt to disassemble, repair, or modify any Units. Any attempt to do so may result in malfunction, fire, or electric shock.
• Confirm that no adverse effect will occur in the system before attempting any of the following. Not
doing so may result in an unexpected operation.
• Changing the operating mode of the PLC (including the setting of the startup operating mode).
• Force-setting/force-resetting any bit in memory.
• Changing the present value of any word or any set value in memory.

 External Circuits
• Always configure the external circuits to turn ON power to the PLC before turning ON power to the
control system. If the PLC power supply is turned ON after the control power supply, temporary
errors may result in control system signals because the output terminals on DC Output Units and
other Units will momentarily turn ON when power is turned ON to the PLC.
• Fail-safe measures must be taken by the customer to ensure safety in the event that outputs from
output terminals remain ON as a result of internal circuit failures, which can occur in relays, transistors, and other elements.
• If the I/O Hold Bit is turned ON, the outputs from the PLC will not be turned OFF and will maintain
their previous status when the PLC is switched from RUN or MONITOR mode to PROGRAM mode.
Make sure that the external loads will not produce dangerous conditions when this occurs. (When
operation stops for a fatal error, including those produced with the FALS instruction, all outputs from
PLC will be turned OFF and only the internal output status in the CPU Unit will be maintained.)
18

CP1E CPU Unit Instructions Reference Manual(W483)

Regulations and Standards
Trademarks
SYSMAC is a registered trademark for Programmable Controllers made by OMRON Corporation.
CX-One is a registered trademark for Programming Software made by OMRON Corporation.
Windows is a registered trademark of Microsoft Corporation.
Other system names and product names in this document are the trademarks or registered trademarks
of their respective companies.

CP1E CPU Unit Instructions Reference Manual(W483)

19

Related Manuals
The following manuals are related to the CP1E. Use them together with this manual.
Manual name

Cat. No.

SYSMAC CP Series
CP1E CPU Unit Instructions Reference Manual
(this manual)

W483

SYSMAC CP Series
CP1E CPU Unit Software User’s Manual

W480

Model numbers
CP1E-ED-
CP1E-ND-
CP1E-NAD-

CP1E-ED-
CP1E-ND-
CP1E-NAD-

Application

Contents

To learn programming instructions in
detail

Describes each programming instruction in
detail.

To learn the software
specifications of the
CP1E PLCs

Describes the following information for CP1E
PLCs.

When programming, use this manual together
with the CP1E CPU Unit Software User’s Manual (Cat. No. W480).

• CPU Unit operation
• Internal memory
• Programming
• Settings
• CPU Unit built-in functions
• Interrupts
• High-speed counter inputs
• Pulse outputs
• Serial communications
• Other functions

Use this manual together with the CP1E CPU Unit Hardware User’s
Manual (Cat. No. W479) and Instructions Reference Manual (Cat. No.
W483).
SYSMAC CP Series
CP1E CPU Unit Hardware User’s Manual

W479

CP1E-ED-
CP1E-ND-
CP1E-NAD-

To learn the hardware specifications
of the CP1E PLCs

Describes the following information for CP1E
PLCs.
• Overview and features
• Basic system configuration
• Part names and functions
• Installation and settings
• Troubleshooting

Use this manual together with the CP1E CPU Unit Software User’s
Manual (Cat. No. W480) and Instructions Reference Manual (Cat. No.
W483).
CS/CJ/CP/NSJ Series
Communications Commands Reference Manual

W342

CS1G/H-CPUH
CS1G/H-CPU-V1
CS1D-CPUH
CS1D-CPUS

To learn communications commands for
CS/CJ/CP/NSJseries Controllers in
detail

CS1W-SCU-V1
CS1W-SCB-V1
CJ1G/H-CPUH
CJ1G-CPUP
CJ1M-CPU

Describes
1) C-mode commands and
2) FINS commands in detail.
Read this manual for details on C-mode and
FINS commands addressed to CPU Units.

Note This manual describes commands addressed to CPU Units. It
does not cover commands addressed to other Units or ports (e.g.,
serial communications ports on CPU Units, communications ports
on Serial Communications Units/Boards, and other Communications Units).

CJ1G-CPU
CJ1W-SCU-V1
SYSMAC CP Series
CP1L/CP1E CPU Unit
Introduction Manual

W461

CP1L-L10D-
CP1L-L14D-
CP1L-L20D-
CP1L-M30D-

To learn the basic
setup methods of the
CP1L/CP1E PLCs

Describes the following information for
CP1L/CP1E PLCs.
• Basic configuration and component names
• Mounting and wiring

CP1L-M40D-

• Programming, data transfer, and debugging
using the CX-Programmer

CP1L-M60D-

• Application program examples

CP1E-ED-
CP1E-ND-
CP1E-NAD-

20

CP1E CPU Unit Instructions Reference Manual(W483)

1

Summary of Instructions
This section provides a summary of instructions used with a CP1E CPU Unit.

1-1 Summary of Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2

CP1E CPU Unit Instructions Reference Manual(W483)

1-1

1 Summary of Instructions

1-1

Summary of Instructions
There are 200 types of instructions can be used by CP1E.

The following table lists the instructions by function. Refer to the reference pages for the
detail of each instruction.
Instrucion
Type
Sequence
Input Instructions

Instruction
LOAD

FUN
No.

Function

Page

Indicates a logical start and creates an ON/OFF execution condition based on
the ON/OFF status of the specified operand bit.

2-7

Indicates a logical start and creates an ON/OFF execution condition based on
the reverse of the ON/OFF status of the specified operand bit.

2-7

Takes a logical AND of the status of the specified operand bit and the current
execution condition.

2-9

Reverses the status of the specified operand bit and takes a logical AND with
the current execution condition.

2-9

Takes a logical OR of the ON/OFF status of the specified operand bit and the
current execution condition.

2-11

Reverses the status of the specified bit and takes a logical OR with the current
execution condition.

2-11

LD

-

@LD

-

%LD

-

!LD

-

!@LD

-

!%LD

-

LD NOT

-

@LD NOT

-

%LD NOT

-

!LD NOT

-

!@LD NOT

-

!%LD NOT

-

AND

-

@AND

-

%AND

-

!AND

-

!@AND

-

!%AND

-

AND NOT

-

@AND NOT

-

%AND NOT

-

!AND NOT

-

!@AND NOT

-

!%AND NOT

-

OR

-

@OR

-

%OR

-

!OR

-

!@OR

-

!%OR

-

OR NOT

-

@OR NOT

-

%OR NOT

-

!OR NOT

-

!@OR NOT

-

!%OR NOT

-

AND LOAD

AND LD

-

Takes a logical AND between logic blocks.

2-13

OR LOAD

OR LD

-

Takes a logical OR between logic blocks.

2-13

LOAD NOT

AND

AND NOT

OR

OR NOT

1-2

Mnemonic

NOT

NOT

520

Reverses the execution condition.

2-16

CONDITION ON

UP

521

UP(521) turns ON the execution condition for one cycle when the execution
condition goes from OFF to ON.

2-17

CONDITION OFF

DOWN

522

DOWN(522) turns ON the execution condition for one cycle when the execution
condition goes from ON to OFF.

2-17

CP1E CPU Unit Instructions Reference Manual(W483)

1 Summary of Instructions

Sequence
Output
Instructions

Instruction
OUTPUT

Mnemonic

FUN
No.

OUT

-

!OUT

-

OUT NOT

-

!OUT NOT

-

TR Bits

TR

-

KEEP

KEEP

OUTPUT NOT

Function

1-1 Summary of Instructions

Instrucion
Type

Page

Outputs the result (execution condition) of the logical processing to the specified bit.

2-18

Reverses the result (execution condition) of the logical processing, and outputs
it to the specified bit.

2-18

TR bits are used to temporarily retain the ON/OFF status of execution conditions in a program when programming in mnemonic code.

2-20

011

Operates as a latching relay.

2-21

013

DIFU(013) turns the designated bit ON for one cycle when the execution condition goes from OFF to ON (rising edge).

2-25

014

DIFD(014) turns the designated bit ON for one cycle when the execution condition goes from ON to OFF (falling edge).

2-27

SET turns the operand bit ON when the execution condition is ON.

2-29

RSET turns the operand bit OFF when the execution condition is ON.

2-29

530

SETA(530) turns ON the specified number of consecutive bits.

2-31

531

RSTA(531) turns OFF the specified number of consecutive bits.

2-31

532

SETB(532) turns ON the specified bit in the specified word when the execution
condition is ON.

2-33

1

!KEEP
DIFFERENTIATE
UP

DIFU

DIFFERENTIATE
DOWN

DIFD

SET

RESET

!DIFU

!DIFD
SET

-

@SET

-

%SET

-

!SET

-

!@SET

-

!%SET

-

RSET

-

@RSET

-

%RSET

-

!RSET

-

!@RSET

-

!%RSET
MULTIPLE BIT SET

SETA

-

@SETA
MULTIPLE BIT
RESET
SINGLE BIT SET

RSTA
@RSTA
SETB
@SETB

Unlike the SET instruction, SETB(532) can be used to set a bit in a DM word.

!SETB
!@SETB
SINGLE BIT RESET

RSTB
@RSTB
!RSTB

533

RSTB(533) turns OFF the specified bit in the specified word when the execution condition is ON.

2-33

Unlike the RSET instruction, RSTB(533) can be used to reset a bit in a DM
word.

!@RSTB

CP1E CPU Unit Instructions Reference Manual(W483)

1-3

1 Summary of Instructions

Instrucion
Type
Sequence
Control
Instructions

Timer and
Counter
Instructions

Instruction

Mnemonic

Function

Page

END

END

001

Indicates the end of a program.

2-38

NO OPERATION

NOP

000

This instruction has no function. (No processing is performed for NOP(000).)

2-39

INTERLOCK

IL

002

Interlocks all outputs between IL(002) and ILC(003) when the execution condition for IL(002) is OFF.

2-40

INTERLOCK
CLEAR

ILC

003

All outputs between IL(002) and ILC(003) are interlocked when the execution
condition for IL(002) is OFF.

2-40

MULTI-INTERLOCK
DIFFERENTIATION
HOLD

MILH

517

When the execution condition for MILH(517) is OFF, the outputs for all instructions between that MILH(517) instruction and the next MILC(519) instruction
are interlocked.

2-44

MULTI-INTERLOCK
DIFFERENTIATION
RELEASE

MILR

518

When the execution condition for MILR(518) is OFF, the outputs for all instructions between that MILR(518) instruction and the next MILC(519) instruction
are interlocked.

2-44

MULTI-INTERLOCK
CLEAR

MILC

519

Clears an interlock started by an MILH(517) or MILR(518) with the same interlock number.

2-44

JUMP

JMP

004

When the execution condition for JMP(004) is OFF, program execution jumps
directly to the first JME(005) in the program with the same jump number.

2-53

JUMP END

JME

005

Indicates the end of a jump initiated by JMP(004) or CJP(510).

2-53

CONDITIONAL
JUMP

CJP

510

The operation of CJP(510) is the basically the opposite of JMP(004). When the
execution condition for CJP(510) is ON, program execution jumps directly to the
first JME(005) in the program with the same jump number.

2-53

FOR LOOP

FOR

512

The instructions between FOR(512) and NEXT(513) are repeated a specified
number of times.

2-56

NEXT LOOP

NEXT

513

The instructions between FOR(512) and NEXT(513) are repeated a specified
number of times.

2-56

BREAK LOOP

BREAK

514

Programmed in a FOR-NEXT loop to cancel the execution of the loop for a
given execution condition. The remaining instructions in the loop are processed
as NOP(000) instructions.

2-59

HUNDRED-MS
TIMER

TIM

TIM/TIMX(550) operates a decrementing timer with units of 0.1-s.

2-66

TIMX

550

TEN-MS TIMER

TIMH

015

TIMH(015)/TIMHX(551) operates a decrementing timer with units of 10-ms.

2-69

TIMHX

551

ONE-MS TIMER

TMHH

540

TMHH(540)/TMHHX(552) operates a decrementing timer with units of 1-ms.

2-72

TMHHX

552

ACCUMULATIVE
TIMER

TTIM

087

TTIM(087)/TTIMX(555) operates an incrementing timer with units of 0.1-s.

2-74

TTIMX

555

LONG TIMER

TIML

542

TIML(542)/TIMLX(553) operates a decrementing timer with units of 0.1-s.

2-77

TIMLX

553
CNT/CNTX(546) operates a decrementing counter.

2-80

CNTR(012)/CNTRX(548) operates a reversible counter.

2-83

CNR(545)/CNRX(547) resets the timers or counters within the specified range
of timer or counter numbers.

2-86

COUNTER

CNT
CNTX

1-4

FUN
No.

-

546

REVERSIBLE
COUNTER

CNTR

012

CNTRX

548

RESET TIMER/
COUNTER

CNR/
@CNR

545

CNRX/
@CNRX

547

CP1E CPU Unit Instructions Reference Manual(W483)

1 Summary of Instructions

Comparison
Instructions

Instruction

Mnemonic

Symbol Comparison

= , <> , < , <= ,
> , >=

Time Comparison

UNSIGNED
COMPARE

FUN
No.

Function

Page

300
∼
328

Symbol comparison instructions compare two values and create an ON execution condition when the comparison condition is true.

2-88

LD, AND,
OR+=DT

341

Time comparison instructions compare two BCD time values and create an ON
execution condition when the comparison condition is true.

2-91

LD, AND,
OR+<>DT

342

LD, AND,
OR+
DT 345 LD, AND, OR+>=DT 346 CMP 020 Compares two unsigned binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. 2-95 1 !CMP DOUBLE UNSIGNED COMPARE CMPL 060 Compares two double unsigned binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. 2-95 SIGNED BINARY COMPARE CPS 114 Compares two signed binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. 2-98 DOUBLE SIGNED BINARY COMPARE CPSL 115 Compares two double signed binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. 2-98 TABLE COMPARE TCMP 085 Compares the source data to the contents of 16 words and turns ON the corresponding bit in the result word when the contents are equal. 2-101 068 Compares the source data to 16 ranges (defined by 16 lower limits and 16 upper limits) and turns ON the corresponding bit in the result word when the source data is within the range. 2-103 !CPS @TCMP Data Movement Instructions 1-1 Summary of Instructions Instrucion Type UNSIGNED BLOCK COMPARE BCMP AREA RANGE COMPARE ZCP 088 Compares the 16-bit unsigned binary value in CD (word contents or constant) to the range defined by LL and UL and outputs the results to the Arithmetic Flags in the Auxiliary Area. 2-105 DOUBLE AREA RANGE COMPARE ZCPL 116 Compares the 32-bit unsigned binary value in CD and CD+1 (word contents or constant) to the range defined by LL and UL and outputs the results to the Arithmetic Flags in the Auxiliary Area. 2-105 MOV 021 Transfers a word of data to the specified word. 2-108 MOVE @BCMP @MOV !MOV !@MOV DOUBLE MOVE MOVL/ @MOVL 498 Transfers two words of data to the specified words. 2-108 MOVE NOT MVN/ @MVN 022 Transfers the complement of a word of data to the specified word. 2-108 MOVE BIT MOVB/ @MOVB 082 Transfers the specified bit. 2-111 MOVE DIGIT MOVD/ @MOVD 083 Transfers the specified digit or digits. (Each digit is made up of 4 bits.) 2-113 MULTIPLE BIT TRANSFER XFRB/ @XFRB 062 Transfers the specified number of consecutive bits. 2-115 BLOCK TRANSFER XFER/ @XFER 070 Transfers the specified number of consecutive words. 2-117 BLOCK SET BSET/ @BSET 071 Copies the same word to a range of consecutive words. 2-119 DATA EXCHANGE XCHG/ @XCHG 073 Exchanges the contents of the two specified words. 2-121 SINGLE WORD DISTRIBUTE DIST/ @DIST 080 Transfers the source word to a destination word calculated by adding an offset value to the base address. 2-123 DATA COLLECT COLL/ @COLL 081 Transfers the source word (calculated by adding an offset value to the base address) to the destination word. 2-125 CP1E CPU Unit Instructions Reference Manual(W483) 1-5 1 Summary of Instructions Instrucion Type Data Shift Instructions Increment/ Decrement Instructions 1-6 Instruction Mnemonic FUN No. Function Page SHIFT REGISTER SFT 010 Operates a shift register. 2-127 REVERSIBLE SHIFT REGISTER SFTR/ @SFTR 084 Creates a shift register that shifts data to either the right or the left. 2-129 WORD SHIFT WSFT/ @WSFT 016 Shifts data between St and E in word units. 2-131 ARITHMETIC SHIFT LEFT ASL/ @ASL 025 ARITHMETIC SHIFT RIGHT ASR/ @ASR 026 Shifts the contents of Wd one bit to the right. 2-134 ROTATE LEFT ROL/ @ROL 027 Shifts all Wd bits one bit to the left including the Carry Flag (CY). 2-135 ROTATE RIGHT ROR/ @ROR 028 Shifts all Wd bits one bit to the right including the Carry Flag (CY). 2-137 ONE DIGIT SHIFT LEFT SLD/ @SLD 074 Shifts data by one digit (4 bits) to the left. 2-139 ONE DIGIT SHIFT RIGHT SRD/ @SRD 075 Shifts data by one digit (4 bits) to the right. 2-139 SHIFT N-BITS LEFT NASL/ @NASL 580 Shifts the specified 16 bits of word data to the left by the specified number of bits. 2-141 DOUBLE SHIFT N-BITS LEFT NSLL/ @NSLL 582 Shifts the specified 32 bits of word data to the left by the specified number of bits. 2-141 SHIFT N-BITS RIGHT NASR/ @NASR 581 Shifts the specified 16 bits of word data to the right by the specified number of bits. 2-144 DOUBLE SHIFT N-BITS RIGHT NSRL/ @NSRL 583 Shifts the specified 32 bits of word data to the right by the specified number of bits. 2-144 INCREMENT BINARY ++/ @++ 590 Increments the 4-digit hexadecimal content of the specified word by 1. 2-147 DOUBLE INCREMENT BINARY ++L/ @++L 591 Increments the 8-digit hexadecimal content of the specified words by 1. 2-147 DECREMENT BINARY --/ @-- 592 Decrements the 4-digit hexadecimal content of the specified word by 1. 2-150 DOUBLE DECREMENT BINARY --L/ @--L 593 Decrements the 8-digit hexadecimal content of the specified words by 1. 2-150 INCREMENT BCD ++B/ @++B 594 Increments the 4-digit BCD content of the specified word by 1. 2-153 DOUBLE INCREMENT BCD ++BL/ @++BL 595 Increments the 8-digit BCD content of the specified words by 1. 2-153 DECREMENT BCD --B/ @--B 596 Decrements the 4-digit BCD content of the specified word by 1. 2-156 DOUBLE DECREMENT BCD --BL/ @--BL 597 Decrements the 8-digit BCD content of the specified words by 1. 2-156 Shifts the contents of Wd one bit to the left. 2-133 CP1E CPU Unit Instructions Reference Manual(W483) 1 Summary of Instructions Symbol Math Instructions Instruction Mnemonic FUN No. Function Page SIGNED BINARY ADD WITHOUT CARRY +/ @+ 400 Adds 4-digit (single-word) hexadecimal data and/or constants. 2-158 DOUBLE SIGNED BINARY ADD WITHOUT CARRY +L/ @+L 401 Adds 8-digit (double-word) hexadecimal data and/or constants. 2-158 SIGNED BINARY ADD WITH CARRY +C/ @+C 402 Adds 4-digit (single-word) hexadecimal data and/or constants with the Carry Flag (CY). 2-160 DOUBLE SIGNED BINARY ADD WITH CARRY +CL/ @+CL 403 Adds 8-digit (double-word) hexadecimal data and/or constants with the Carry Flag (CY). 2-160 BCD ADD WITHOUT CARRY +B/ @+B 404 Adds 4-digit (single-word) BCD data and/or constants. 2-162 DOUBLE BCD ADD WITHOUT CARRY +BL/ @+BL 405 Adds 8-digit (double-word) BCD data and/or constants. 2-162 BCD ADD WITH CARRY +BC/ @+BC 406 Adds 4-digit (single-word) BCD data and/or constants with the Carry Flag (CY). 2-164 DOUBLE BCD ADD WITH CARRY +BCL/ @+BCL 407 Adds 8-digit (double-word) BCD data and/or constants with the Carry Flag (CY). 2-164 SIGNED BINARY SUBTRACT WITHOUT CARRY -/ @- 410 Subtracts 4-digit (single-word) hexadecimal data and/or constants. 2-166 DOUBLE SIGNED BINARY SUBTRACT WITHOUT CARRY -L/ @-L 411 Subtracts 8-digit (double-word) hexadecimal data and/or constants. 2-166 SIGNED BINARY SUBTRACT WITH CARRY -C/ @-C 412 Subtracts 4-digit (single-word) hexadecimal data and/or constants with the Carry Flag (CY). 2-170 DOUBLE SIGNED BINARY WITH CARRY -CL/ @-CL 413 Subtracts 8-digit (double-word) hexadecimal data and/or constants with the Carry Flag (CY). 2-170 BCD SUBTRACT WITHOUT CARRY -B/ @-B 414 Subtracts 4-digit (single-word) BCD data and/or constants. 2-172 DOUBLE BCD SUBTRACT WITHOUT CARRY -BL/ @-BL 415 Subtracts 8-digit (double-word) BCD data and/or constants. 2-172 BCD SUBTRACT WITH CARRY -BC/ @-BC 416 Subtracts 4-digit (single-word) BCD data and/or constants with the Carry Flag (CY). 2-175 DOUBLE BCD SUBTRACT WITH CARRY -BCL/ @-BCL 417 Subtracts 8-digit (double-word) BCD data and/or constants with the Carry Flag (CY). 2-175 SIGNED BINARY MULTIPLY ∗/ @∗ 420 Multiplies 4-digit signed hexadecimal data and/or constants. 2-177 DOUBLE SIGNED BINARY MULTIPLY ∗L/ @∗L 421 Multiplies 8-digit signed hexadecimal data and/or constants. 2-177 BCD MULTIPLY ∗B/ @∗B 424 Multiplies 4-digit (single-word) BCD data and/or constants. 2-179 DOUBLE BCD MULTIPLY ∗BL/ @∗BL 425 Multiplies 8-digit (double-word) BCD data and/or constants. 2-179 SIGNED BINARY DIVIDE / @/ 430 Divides 4-digit (single-word) signed hexadecimal data and/or constants. 2-181 DOUBLE SIGNED BINARY DIVIDE /L @/L 431 Divides 8-digit (double-word) signed hexadecimal data and/or constants. 2-181 BCD DIVIDE /B @/B 434 Divides 4-digit (single-word) BCD data and/or constants. 2-183 DOUBLE BCD DIVIDE /BL @/BL 435 Divides 8-digit (double-word) BCD data and/or constants. 2-183 CP1E CPU Unit Instructions Reference Manual(W483) 1-7 1-1 Summary of Instructions Instrucion Type 1 1 Summary of Instructions Instrucion Type Conversion Instructions Logic Instructions Special Math Instructions 1-8 Instruction Mnemonic FUN No. Function Page BCD TO BINARY BIN/ @BIN 023 Converts BCD data to binary data. 2-185 DOUBLE BCD TO DOUBLE BINARY BINL/ @BINL 058 Converts 8-digit BCD data to 8-digit hexadecimal (32-bit binary) data. 2-185 BINARY TO BCD BCD/ @BCD 024 Converts a word of binary data to a word of BCD data. 2-187 DOUBLE BINARY TO DOUBLE BCD BCDL/ @BCDL 059 Converts 8-digit hexadecimal (32-bit binary) data to 8-digit BCD data. 2-187 2’S COMPLEMENT NEG/ @NEG 160 Calculates the 2' complement of a word of hexadecimal data. 2-189 DATA DECODER MLPX/ @MLPX 076 Reads the numerical value in the specified digit (or byte) in the source word, turns ON the corresponding bit in the result word (or 16-word range), and turns OFF all other bits in the result word (or 16-word range). 2-191 DATA ENCODER DMPX/ @DMPX 077 FInds the location of the first or last ON bit within the source word (or 16-word range), and writes that value to the specified digit (or byte) in the result word. 2-196 ASCII CONVERT ASC/ @ASC 086 Converts 4-bit hexadecimal digits in the source word into their 8-bit ASCII equivalents. 2-201 ASCII TO HEX HEX/ @HEX 162 Converts up to 4 bytes of ASCII data in the source word to their hexadecimal equivalents and writes these digits in the specified destination word. 2-205 LOGICAL AND ANDW/ @ANDW 034 Takes the logical AND of corresponding bits in single words of word data and/or constants. 2-210 DOUBLE LOGICAL AND ANDL/ @ANDL 610 Takes the logical AND of corresponding bits in double words of word data and/or constants. 2-210 LOGICAL OR ORW/ @ORW 035 Takes the logical OR of corresponding bits in single words of word data and/or constants. 2-212 DOUBLE LOGICAL OR ORWL/ @ORWL 611 Takes the logical OR of corresponding bits in double words of word data and/or constants. 2-212 EXCLUSIVE OR XORW/ @XORW 036 Takes the logical exclusive OR of corresponding bits in single words of word data and/or constants. 2-214 DOUBLE EXCLUSIVE OR XORL/ @XORL 612 Takes the logical exclusive OR of corresponding bits in double words of word data and/or constants. 2-214 COMPLEMENT COM/ @COM 029 Turns OFF all ON bits and turns ON all OFF bits in Wd. 2-216 DOUBLE COMPLEMENT COML/ @COML 614 Turns OFF all ON bits and turns ON all OFF bits in Wd and Wd+1. 2-216 ARITHMETIC PROCESS APR/ @APR 069 Calculates the sine, cosine, or a linear extrapolation of the source data. 2-218 BIT COUNTER BCNT/ @BCNT 067 Counts the total number of ON bits in the specified word(s). 2-227 CP1E CPU Unit Instructions Reference Manual(W483) 1 Summary of Instructions Floating-point Math Instructions Instruction Data Control Instructions Subroutine Instructions Interrupt Control Instructions FUN No. Function Page FLOATING TO 16-BIT FIX/ @FIX 450 Converts a 32-bit floating-point value to 16-bit signed binary data and places the result in the specified result word. 2-233 FLOATING TO 32-BIT FIXL/ @FIXL 451 Converts a 32-bit floating-point value to 32-bit signed binary data and places the result in the specified result words. 2-233 16-BIT TO FLOATING FLT/ @FLT 452 Converts a 16-bit signed binary value to 32-bit floating-point data and places the result in the specified result words. 2-235 32-BIT TO FLOATING FLTL/ @FLTL 453 Converts a 32-bit signed binary value to 32-bit floating-point data and places the result in the specified result words. 2-235 FLOATINGPOINT ADD +F/ @+F 454 Adds two 32-bit floating-point numbers and places the result in the specified result words. 2-237 FLOATINGPOINT SUBTRACT -F/ @-F 455 Subtracts one 32-bit floating-point number from another and places the result in the specified result words. 2-237 FLOATINGPOINT MULTIPLY ∗F/ @∗F 456 Multiplies two 32-bit floating-point numbers and places the result in the specified result words. 2-237 FLOATINGPOINT DIVIDE /F @/F 457 Divides one 32-bit floating-point number by another and places the result in the specified result words. 2-237 Compares the specified single-precision data (32 bits) or constants and creates an ON execution condition if the comparison result is true. Three kinds of symbols can be used with the floating-point symbol comparison instructions: LD (Load), AND, and OR. 2-241 FLOATING SYMBOL COMPARISON Table Data Processing Instructions Mnemonic =F 329 <>F 330 F 333 2-241 >=F 334 2-241 FLOATINGPOINT TO ASCII FSTR/ @FSTR 448 Converts the specified single-precision floating-point data (32-bit decimal- point or exponential format) to text string data (ASCII) and outputs the result to the destination word. 2-244 ASCII TO FLOATING-POINT FVAL/ @FVAL 449 Converts the specified text string (ASCII) representation of single-precision floating-point data (decimal-point or exponential format) to 32-bit single-precision floating-point data and outputs the result to the destination words. 2-249 SWAP BYTES SWAP/ @SWAP 637 Switches the leftmost and rightmost bytes in all of the words in the range. 2-253 FRAME CHECKSUM FCS/ @FCS 180 Calculates the ASCII FCS value for the specified range. 2-255 PID CONTROL WITH AUTOTUNING PIDAT 191 Executes PID control according to the specified parameters. The PID constants can be auto-tuned with PIDAT(191). 2-257 TIME-PROPORTIONAL OUTPUT TPO 685 Inputs the duty ratio or manipulated variable from the specified word, converts the duty ratio to a time-proportional output based on the specified parameters, and outputs the result from the specified output. 2-269 SCALING SCL/ @SCL 194 Converts unsigned binary data into unsigned BCD data according to the specified linear function. 2-276 SCALING 2 SCL2/ @SCL2 486 Converts signed binary data into signed BCD data according to the specified linear function. An offset can be input in defining the linear function. 2-280 SCALING 3 SCL3/ @SCL3 487 Converts signed BCD data into signed binary data according to the specified linear function. An offset can be input in defining the linear function. 2-284 AVERAGE AVG 195 Calculates the average value of an input word for the specified number of cycles. 2-287 SUBROUTINE CALL SBS/ @SBS 091 Calls the subroutine with the specified subroutine number and executes that program. 2-290 SUBROUTINE ENTRY SBN 092 Indicates the beginning of the subroutine program with the specified subroutine number. 2-295 SUBROUTINE RETURNI RET 093 Indicates the end of a subroutine program. 2-295 SET INTERRUPT MASK MSKS/ @MSKS 690 Sets up interrupt processing for I/O interrupts or scheduled interrupts. 2-300 CLEAR INTERRUPT CLI/ @CLI 691 Clears or retains recorded interrupt inputs for I/O interrupts or sets the time to the first scheduled interrupt for scheduled interrupts. 2-303 DISABLE INTERRUPTS DI/ @DI 693 Disables execution of all interrupt tasks except the power OFF interrupt. 2-306 ENABLE INTERRUPTS EI 694 Enables execution of all interrupt tasks that were disabled with DI(693). 2-307 CP1E CPU Unit Instructions Reference Manual(W483) 2-241 2-241 1-9 1-1 Summary of Instructions Instrucion Type 1 1 Summary of Instructions Instrucion Type High-speed Counter and Pulse Output Instructions Instruction Mnemonic FUN No. Function Page MODE CONTROL INI/ @INI 880 INI(880) is used to start and stop target value comparison, to change the present value (PV) of a high-speed counter, to change the PV of an interrupt input (counter mode), to change the PV of a pulse output, or to stop pulse output. 2-308 HIGH-SPEED COUNTER PV READ PRV/ @PRV 881 PRV(881) is used to read the present value (PV) of a highspeed counter, pulse output, or interrupt input (counter mode). 2-311 COMPARISON TABLE LOAD CTBL/ @CTBL 882 CTBL(882) is used to perform target value or range comparisons for the present value (PV) of a high-speed counter. 2-315 SPEED OUTPUT SPED/ @SPED 885 SPED(885) is used to specify the frequency and perform pulse output without acceleration or deceleration. 2-319 SET PULSES PULS/ @PULS 886 PULS(886) is used to set the number of pulses for pulse output. 2-323 PULSE OUTPUT PLS2/ @PLS2 887 PLS2(887) is used to set the pulse frequency and acceleration/deceleration rates, and to perform pulse output with acceleration/deceleration (with different acceleration/deceleration rates). Only positioning is possible. 2-325 ACCELERATION CONTROL ACC/ @ACC 888 ACC(888) is used to set the pulse frequency and acceleration/deceleration rates, and to perform pulse output with acceleration/deceleration (with the same acceleration/deceleration rate). Both positioning and speed control are possible. 2-331 ORIGIN SEARCH ORG/ @ORG 889 ORG(889) is used to perform origin searches and returns. 2-336 PULSE WITH PWM/ @PWM 891 PWM(891) is used to output pulses with a variable duty factor. 2-339 SNXT 009 SNXT(009) is used in the following three ways: 2-342 VARIABLE DUTY FACTOR Step Instructions STEP START (1)To start step programming execution. (2)To proceed to the next step control bit. (3)To end step programming execution. STEP DEFINE STEP 008 STEP(008) functions in following 2 ways, depending on its position and whether or not a control bit has been specified. 2-342 (1)Starts a specific step. (2)Ends the step programming area (i.e., step execution). Basic I/O Unit Instructions Serial Communications Instructions Clock Instructions Failure Diagnosis Instructions 1-10 I/O REFRESH IORF/ @IORF 097 Refreshes the specified I/O words. 2-352 7-SEGMENT DECODER SDEC/ @SDEC 078 Converts the hexadecimal contents of the designated digit(s) into 8-bit, 7-segment display code and places it into the upper or lower 8-bits of the specified destination words. 2-354 DIGITAL SWITCH INPUT DSW 210 Reads the value set on an external digital switch (or thumbwheel switch) connected to an Input Unit or Output Unit and stores the 4-digit or 8-digit BCD data in the specified words. 2-357 MATRIX INPUT MTR 213 Inputs up to 64 signals from an 8 ⋅ 8 matrix connected to an Input Unit and Output Unit (using 8 input points and 8 output points) and stores that 64-bit data in the 4 destination words. 2-361 7-SEGMENT DISPLAY OUTPUT 7SEG 214 Converts the source data (either 4-digit or 8-digit BCD) to 7-segment display data, and outputs that data to the specified output word. 2-365 TRANSMIT TXD/ @TXD 236 Outputs the specified number of bytes of data from the RS-232C port built into the CPU Unit or the serial port of a Serial Communications Board (version 1.2 or later). 2-369 RECEIVE RXD/ @RXD 235 Reads the specified number of bytes of data from the RS-232C port built into the CPU Unit or the serial port of a Serial Communications Board (version 1.2 or later). 2-374 CALENDAR ADD CADD/ @CADD 730 Adds time to the calendar data in the specified words. 2-380 CALENDAR SUBTRACT CSUB/ @CSUB 731 Subtracts time from the calendar data in the specified words. 2-380 CLOCK ADJUSTMENT DATE/ @DATE 735 Changes the internal clock setting to the setting in the specified source words. 2-385 FAILURE ALARM FAL/ @FAL 006 Generates or clears user-defined non-fatal errors. 2-387 SEVERE FAILURE ALARM FALS 007 Generates user-defined fatal errors. 2-393 CP1E CPU Unit Instructions Reference Manual(W483) 1 Summary of Instructions Other Instructions Instruction Mnemonic FUN No. Function Page SET CARRY STC/ @STC 040 Sets the Carry Flag (CY). 2-398 CLEAR CARRY CLC/ @CLC 041 Turns OFF the Carry Flag (CY). 2-398 EXTEND MAXIMUM CYCLE TIME WDT/ @WDT 094 Extends the maximum cycle time, but only for the cycle in which this instruction is executed. 2-399 1-1 Summary of Instructions Instrucion Type 1 CP1E CPU Unit Instructions Reference Manual(W483) 1-11 1 Summary of Instructions 1-12 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions This section describes the functions, operands and sample programs of the instructions that are supported by a CP1E CPU Unit. Notation and Layout of Instruction Descriptions . . . . . . . . . . . . . . . . . . . . 2-2 Sequence Input Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5 Sequence Output Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-18 Sequence Control Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-35 Timer and Counter Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-60 Comparison Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-88 Data Movement Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-108 Data Shift Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-127 Increment/Decrement Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-147 Symbol Math Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-158 Conversion Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-185 Logic Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-210 Special Math Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-218 Floating-point Math Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-229 Table Data Processing Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-253 Data Control Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-257 Subroutines Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-290 Interrupt Control Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-298 High-speed Counter/Pulse Output Instructions . . . . . . . . . . . . . . . . . . . 2-308 Step Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-341 Basic I/O Unit Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-352 Serial Communication Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-369 Clock Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-380 Failure Diagnosis Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-387 Other Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-398 CP1E CPU Unit Instructions Reference Manual(W483) 2-1 2 Instructions Notation and Layout of Instruction Descriptions Instructions are described in groups by function. Refer to Appendix A List of Instructions by Function Code for a list of instructions by mnemonic that lists the page number in this section for each instruction. The description of each instruction is organized as described in the following table. Item Contents Instruction Indicates the name of the instruction. Example: MOVE BIT Mnemonic Indicates the mnemonic. Variations Differentiation Example: MOVB(082) @ Instruction that differentiates when the execution condition turns ON. % Instruction that differentiates when the execution condition turns OFF. Immediate refreshing ! Refreshes data in the I/O area specified by the operands or the Special I/O Unit words when the instruction is executed. A repeatedly as long a execution condition JMP a Function code N Indicates the function code. Function The basic purpose of the instruction is described after the section heading. Symbol The ladder symbol used to represent the instruction on the CX-Programmer is shown, as in the example for the MOVE BIT instruction given below. The name of each operand is also provided with the ladder symbol. MOVB S S: Source word or data C C: Control word D: Destination word D Applicable Program Areas Operands The program areas in which the instruction can be used are specified. “OK” indicates the areas in which the instruction can be used. Area Step program areas Subroutines Usage OK OK Interrupt tasks OK Indicates a description of the operand, the data type, and the size. Where necessary, the meaning of words and bits used in specific operands, such as control words, is given. 15 C 8 7 0 m n Source bit: 00 to 0F (0 to 15 decimal) Destination bit: 00 to 0F (0 to 15 decimal) Operand Specifications The memory areas addresses that can be used each operand are listed in a table like the following one. The letters used in the column headings on the above are the same as those used in the ladder symbol. “---” is used to indicate when an area cannot be specific for an operand. S C D 2-2 Indirect DM addresses Word addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants OK CF --- Pulse TR bits bits --- --- --- CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Item Contents Flags Name Function Label Notation and Layout of Instruction Descriptions The flags table indicates the status of the condition flags immediately after execution of the instruction. Any flags that are not listed are not affected by the instruction. “OFF” indicates that a flag is turned OFF immediately after execution of the instruction regardless of the results of executing the instruction. Operation Error Flag ER OFF Equal Flag = • ON if the data being transferred (D) is 0. • OFF in all other cases. Negative Flag N • ON if the leftmost bit of the data being transferred (D) is 1. • OFF in all other cases. Indicates the function of the instruction. Hint Indicates a supplemental explanation of other than the main function. Precautions Indicates important points when using an instruction. Sample program An example of using the instruction with specific operands is provided to further explain the function of the instruction. 2 Constants Constants input for operands are given as listed below. Operand Descriptions and Operand Specifications • Operands Specifying Bit Strings (Normally Input as Hexadecimal): Only the hexadecimal form is given for operands specifying bit strings, e.g., only “#0000 to #FFFF” is specified as the S operand for the MOV(021) instruction. On the CX-Programmer, however, bit strings can be input in decimal form by using the & prefix. • Operands Specifying Numeric Values (Normally Input as Decimal, Including Jump Numbers): Both the decimal and hexadecimal forms are given for operands specifying numeric values, e.g., “#0000 to #FFFF” and “&0 to &65535” are given for the N operand for the XFER(070) instruction. • Operands Indicating Control Numbers (Except for Jump Numbers): The decimal form is given for control numbers, e.g., “0 to 1023” is given for the N operand for the SBS(091) instruction. Examples In the examples, constants are given using the CX-Programmer notation, e.g., operands specifying numeric values are given in decimal for with an & prefix, as shown in the following example. XFER &10 D100 D200 The input methods for constants for the Programming Devices are given in the following table. Operand Operands specifying bit strings (normally input as hexadecimal) CX-Programmer Input as decimal with an & prefix or input as hexadecimal with an # prefix. (See note.) Operands specifying numeric values (normally input as decimal) Operands specifying control numbers (except for jump numbers) Input as decimal with an # prefix. (See note.) Note When operands are input on the CX-Programmer, the input ranges will be displayed along with the appropriate prefixes. CP1E CPU Unit Instructions Reference Manual(W483) 2-3 2 Instructions Condition Flags With the CX-Programmer, the condition flags are registered in advance as global symbols with “P_” in front of the symbol name. Flag CX-Programmer label Error Flag P_ER Access Error Flag P_AER Carry Flag P_CY Greater Than Flag P_GT Equals Flag P_EQ Less Than Flag P_LT Negative Flag P_N Overflow Flag P_OF Underflow Flag P_UF Greater Than or Equals Flag P_GE Not Equal Flag P_NE Less Than or Equals Flag P_LE Always ON Flag P_On Always OFF Flag P_Off Symbol Instructions Some of the C/CV-series PLC instructions have been changed to different instructions with the same functionality for the CP1E-series PLCs. Instruction group CP1E Series EQU AND= Data Movement MOVQ MOV Increment/Decrement INC ++B INCL ++BL INCB ++ Symbol Math Interrupt Control 2-4 C/CV Series Comparison INBL ++L DEC --B DECL --BL DECB -- DCBL --L ADB +C ADBL +CL ADD +BC ADDL +BCL SBB -C SBBL -CL SUB -BC SUBL -BCL MBS * MBSL *L MUL *B MULL *BL DBS / DBSL /L DIV /B DIVL /BL INT MSKS / CLIDI / EI CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Differentiated and Immediate Refreshing Instructions • The LOAD, AND, and OR instructions have differentiated and immediate refreshing variations in addition to their ordinary forms, and there are also two combinations available. • The LOAD NOT, AND NOT, OR NOT, OUT, and OUT NOT instructions have immediate refreshing variations in addition to their ordinary forms. • The I/O timing for data handled by instructions differs for ordinary and differentiated instructions, immediate refreshing instructions, and immediate refreshing differentiated instructions. • Ordinary and differentiated instructions are executed using data input by previous I/O refresh processing, and the results are output with the next I/O processing. Here “I/O refreshing” means the data exchanged between the CPU’s internal memory and the I/O Unit. • In addition to the above I/O refreshing, an immediate refresh instruction exchanges data with the I/O Unit for those words that are accessed by the instruction. An immediate refresh instruction refreshes eight bits simultaneously (leftmost or rightmost eight bits) in addition to the specified bit. Immediate refresh instructions (i.e., instructions with !) cannot be used for I/O on CP Expansion Units or CP Expansion I/O Units. Use IORF(097) for I/O on CP Expansion Units or CP Expansion I/O Units. Instruction variation Ordinary Mnemonic Function I/O refresh LD, AND, OR, LD NOT, AND NOT, OR NOT The ON/OFF status of the specified bit is taken by the CPU with cyclic refreshing, and it is reflected in the next instruction execution. OUT, OUT NOT After the instruction is executed, the ON/OFF status of the specified bit is output with the next cyclic refreshing. Differentiated up @LD, @AND, @OR The instruction is executed once when the specified bit turns from OFF to ON and the ON state is held for one cycle. Differentiated down %LD, %AND, %OR The instruction is executed once when the specified bit turns from ON to OFF and the ON state is held for one cycle. Immediate refresh !LD, !AND, !OR, !LD NOT, !AND NOT, !OR NOT The input data for the specified bit is taken by the CPU and the instruction is executed. Before instruction execution !OUT, !OUT NOT After the instruction is executed, the data for the specified bit is output. After instruction execution Differentiated up / immediate refresh !@LD, !@AND, !@OR The input data for the specified bit is refreshed by the CPU, and the instruction is executed once when the bit turns from OFF to ON and the ON state is held for one cycle. Before instruction execution Differentiated down / immediate refresh !%LD, !%AND, !%OR The input data for the specified bit is refreshed by the CPU, and the instruction is executed once when the bit turns from ON to OFF and the ON state is held for one cycle. CP1E CPU Unit Instructions Reference Manual(W483) Cyclic refreshing 2-5 Sequence Input Instructions Sequence Input Instructions 2 2 Instructions Operation Timing for I/O Instructions The following chart shows the differences in the timing of instruction operations for a program configured from LD and OUT. A A ↑ A ↓ A ! A !↑ A !↓ A ! A ↑ A B2 Input received B1 Input received B2 B3 B3 B4 Input received B5 Input received B4 B5 B6 ! Input received Input received Input received B6 B7 Input received B8 Input received Input received B7 ! B8 ↓ A B9 ! A B10 !↑ A B11 !↓ A B1 Input received ! ! ! ! Input received B9 B10 B11 B12 B12 CPU processing Instruction execution 2-6 I/O refreshing CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic LOAD LOAD NOT Function code Variations Function LD @LD, %LD, !LD, !@LD, !%LD --- Indicates a logical start and creates an ON/OFF execution condition based on the ON/OFF status of the specified operand bit. LD NOT @LD NOT, %LD NOT, ! LD NOT, !@LD NOT, !%LD NOT --- Indicates a logical start and creates an ON/OFF execution condition based on the reverse of the ON/OFF status of the specified operand bit. LD 2 LD NOT Bus bar Starting point of block Bus bar Sequence Input Instructions LD/LD NOT Starting point of block LD/LD NOT Symbol Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size --- --- BOOL ---  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK --- --- --- Constants CF Pulse bits --- OK OK LD TR bits OK LD NOT --- Flags There are no flags affected by this instruction. Function  LD LD is used for the first normally open bit from the bus bar or for the first normally open bit of a logic block. If there is no immediate refreshing specification, the specified bit in I/O memory is read. If there is an immediate refreshing specification, the status of the CPU Unit’s built-in input terminal is read and used.  LD NOT LD NOT is used for the first normally closed bit from the bus bar, or for the first normally closed bit of a logic block. If there is no immediate refreshing specification, the specified bit in I/O memory is read and reversed. If there is an immediate refreshing specification, the status of the CPU Unit’s built-in input terminal is read, reversed, and used. CP1E CPU Unit Instructions Reference Manual(W483) 2-7 2 Instructions Hint • LD/LD NOT is used in the following circumstances as an instruction for indicating a logical start. 1. When directly connecting to the bus bar. 2. When logic blocks are connected by AND LD or OR LD, i.e., at the beginning of a logic block. The AND LOAD and OR LOAD instructions are used to connect in series or in parallel logic blocks beginning with LD or LD NOT. • At least one LOAD or LOAD NOT instruction is required for the execution condition when outputrelated instructions cannot be connected directly to the bus bar. If there is no LOAD or LOAD NOT instruction, a programming error will occur with the program check by the Peripheral Device. • When logic blocks are connected by AND LOAD or OR LOAD instructions, the total number of AND LOAD/OR LOAD instructions must match the total number of LOAD/LOAD NOT instructions minus1. If they do not match, a programming error will occur. For details, refer to AND LOAD: AND LD and OR LOAD: OR LD. Precautions • Differentiate up (@) or differentiate down (%) can be specified for LD. If differentiate up (@) is specified, the execution condition is turned ON for one cycle only after the status of the operand bit goes from OFF to ON. If differentiate down (%) is specified, the execution condition is turned ON for one cycle only after the status of the operand bit goes from ON to OFF. • Immediate refreshing (!) can be specified for LD/LD NOT. An immediate refresh instruction updates the status of the built-in input bit just before the instruction is executed from the CPU Unit. • For LD, it is possible to combine immediate refreshing and up or down differentiation (!@ or !%). If either of these is specified, the input is refreshed from the Basic Input Unit just before the instruction is executed and the execution condition is turned ON for one cycle only after the status goes from OFF to ON, or from ON to OFF. Sample program i LD LD 0.02 0.04 0.05 LD NOT 2-8 100.00 0.01 0.00 LD 0.03 Instruction Operand LD 0.00 LD 0.01 LD 0.02 AND 0.03 OR LD -- AND LD -- LD NOT 0.04 AND 0.05 OR LD -- OUT 100.00 OR LD AND LD OR LD CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic AND AND NOT Variations Function code Function AND @AND, %AND, !AND, !@AND, !%AND --- Takes a logical AND of the status of the specified operand bit and the current execution condition. AND NOT @AND NOT, %AND NOT, !AND NOT, !@AND NOT, !%AND NOT --- Reverses the status of the specified operand bit and takes a logical AND with the current execution condition. Sequence Input Instructions AND/AND NOT 2 AND AND NOT Symbol AND/AND NOT Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size --- --- BOOL ---  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK --- --- --- Constants CF Pulse bits TR bits --- OK OK --- AND AND NOT Flags There are no flags affected by this instruction. Function  AND AND is used for a normally open bit connected in series. AND cannot be directly connected to the bus bar, and cannot be used at the beginning of a logic block. If there is no immediate refreshing specification, the specified bit in I/O memory is read. If there is an immediate refreshing specification, the status of the CPU Unit’s built-in input terminal is read.  AND NOT AND NOT is used for a normally closed bit connected in series. AND NOT cannot be directly connected to the bus bar, and cannot be used at the beginning of a logic block. If there is no immediate refreshing specification, the specified bit in I/O memory is read. If there is an immediate refreshing specification, the status the CPU Unit’s built-in input terminals is read. CP1E CPU Unit Instructions Reference Manual(W483) 2-9 2 Instructions Precautions • Differentiate up (@) or differentiate down (%) can be specified for AND. If differentiate up (@) is specified, the execution condition is turned ON for one cycle only after the status of the operand bit goes from OFF to ON. If differentiate down (%) is specified, the execution condition is turned ON for one cycle only after the status of the operand bit goes from ON to OFF. • Immediate refreshing (!) can be specified for AND/AND NOT. An immediate refresh instruction updates the status of the built-in input bit just before the instruction is executed from the CPU Unit. • For AND, it is possible to combine immediate refreshing and up or down differentiation (!@ or !%). If either of these is specified, the input is refreshed from the Basic Input Unit just before the instruction is executed and the execution condition is turned ON for one cycle only after the status goes from OFF to ON, or from ON to OFF. Sample program i AND 0.00 0.01 AND 0.02 0.04 100.00 0.03 0.05 AND NOT 2-10 Instruction Operand LD 0.00 AND 0.01 LD 0.02 AND 0.03 LD 0.04 AND NOT 0.05 OR LD -- AND LD -- OUT 100.00 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic OR OR NOT Function code Variations Function OR @OR, %OR, !OR, !@OR, !%OR --- Takes a logical OR of the ON/OFF status of the specified operand bit and the current execution condition. OR NOT @OR NOT, %OR NOT, !OR NOT, !@OR NOT, !%OR NOT --- Reverses the status of the specified bit and takes a logical OR with the current execution condition. OR Sequence Input Instructions OR/OR NOT 2 OR NOT Bus bar Bus bar OR/OR NOT Symbol Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size --- --- BOOL ---  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK --- --- --- Constants CF Pulse bits TR bits --- OK OK --- OR OR NOT Flags There are no flags affected by this instruction. Function  OR OR is used for a normally open bit connected in parallel. A normally open bit is configured to form a logical OR with a logic block beginning with a LOAD or LOAD NOT instruction (connected to the bus bar or at the beginning of the logic block). If there is no immediate refreshing specification, the specified bit in I/O memory is read. If there is an immediate refreshing specification, the status of the CPU Unit’s builtin input terminal is read.  OR NOT OR NOT is used for a normally closed bit connected in parallel. A normally closed bit is configured to form a logical OR with a logic block beginning with a LOAD or LOAD NOT instruction (connected to the bus bar or at the beginning of the logic block). If there is no immediate refreshing specification, the specified bit in I/O memory is read. If there is an immediate refreshing specification, the status of the CPU Unit’s built-in input terminal is read. CP1E CPU Unit Instructions Reference Manual(W483) 2-11 2 Instructions Precautions • Differentiate up (@) or differentiate down (%) can be specified for OR. If differentiate up (@) is specified, the execution condition is turned ON for one cycle only after the status of the operand bit goes from OFF to ON. If differentiate down (%) is specified, the execution condition is turned ON for one cycle only after the status of the operand bit goes from ON to OFF. • Immediate refreshing (!) can be specified for OR/OR NOT. An immediate refresh instruction updates the status of the built-in input bit just before the instruction is executed from the CPU Unit. • For OR, it is possible to combine immediate refreshing and up or down differentiation (!@ or !%). If either of these is specified, the input is refreshed from the Basic Input Unit just before the instruction is executed and the execution condition is turned ON for one cycle only after the status of the operand bit goes from OFF to ON, or from ON to OFF. Sample program i 0.00 0.01 0.02 0.04 0.05 100.00 0.06 Instruction 0.03 0.07 OR 2-12 OR NOT Operand LD 0.00 AND 0.01 AND 0.02 OR 0.03 AND 0.04 LD 0.05 AND 0.06 OR NOT 0.07 AND LD -- OUT 100.00 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic Function code Variations Sequence Input Instructions AND LD/OR LD Function AND LOAD AND LD --- --- Takes a logical AND between logic blocks. OR LOAD OR LD --- --- Takes a logical OR between logic blocks. AND LD OR LD Logic block Symbol Logic block Logic block 2 Logic block AND LD/OR LD Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Flags There are no flags affected by this instruction. Function  AND LD AND LD connects in series the logic block just before this instruction with another logic block. The logic block consists of all the instructions from a LOAD or LOAD NOT instruction until just before the next LOAD or LOAD NOT instruction on the same rungs. LD to LD to AND LD  OR LD OR LD connects in parallel the logic block just before this instruction with another logic block. The logic block consists of all the instructions from a LOAD or LOAD NOT instruction until just before the next LOAD or LOAD NOT instruction on the same rungs. Logic block A Logic block B Serial connection between logic block A and logic block B. LD to Logic block A LD to OR LD Logic block B Parallel connection between logic block A and logic block B. Hint  AND LD • Three or more logic blocks can be connected in series using this instruction to first connect two of the logic blocks and then to connect the next and subsequent ones in order. It is also possible to continue placing this instruction after three or more logic blocks and connect them together in series.  OR LD • Three or more logic blocks can be connected in parallel using this instruction to first connect two of the logic blocks and then to connect the next and subsequent ones in order. It is also possible to continue placing this instruction after three or more logic blocks and connect them together in parallel. CP1E CPU Unit Instructions Reference Manual(W483) 2-13 2 Instructions Precautions When a logic block is connected by AND LOAD or OR LOAD instructions, the total number of AND LOAD/OR LOAD instructions must match the total number of LOAD/LOAD NOT instructions minus 1. If they do not match, a programming error will occur.  AND LD In the following diagram, the two logic blocks are indicated by dotted lines. Studying this example shows that an ON execution condition will be produced when either of the execution conditions in the left logic block is ON (i.e., when either CIO 0.00 or CIO 0.01 is ON) and either of the execution conditions in the right logic block is ON (i.e., when either CIO 0.02 is ON or CIO 0.03 is OFF). i 0.00 0.02 0.01 0.03 100.00 Coding Instruction Operand LD 0.00 OR 0.01 LD 0.02 OR NOT 0.03 AND LD --- OUT 100.00 Second LD: Used for first bit of next block connected in series to previous block.  OR LD The following diagram requires an OR LOAD instruction between the top logic block and the bottom logic block. An ON execution condition would be produced either when CIO 0.00 is ON and CIO 0.01 is OFF or when CIO 0.02 and CIO 0.03 are both ON. The operation of and mnemonic code for the OR LOAD instruction is exactly the same as those for a AND LOAD instruction except that the current execution condition is ORed with the last unused execution condition. i 0.00 0.01 100.01 Coding Instruction 0.02 0.03 Operand LD 0.00 AND NOT 0.01 LD 0.02 AND 0.03 OR LD --- OUT 100.01 Second LD: Used for first bit of next block connected in series to previous block. 2-14 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sample program i 0.00 0.02 0.04 0.01 0.03 0.05 100.00 Coding Example (1) Instruction Coding Example (2) Operand Instruction Operand LD 0.00 LD 0.00 OR NOT 0.01 OR NOT 0.01 LD NOT 0.02 LD NOT 0.02 OR 0.03 OR 0.03 AND LD --- LD 0.04 LD 0.04 OR 0.05 OR 0.05 AND LD --- . . . . . . . . AND LD --- AND LD --- OUT 100.00 . . . . OUT 100.00 2 AND LD/OR LD • The AND LOAD instruction can be used repeatedly. In programming method (2) above, however, the number of AND LOAD instructions becomes one less than the number of LOAD and LOAD NOT instructions before that. • In method (2), make sure that the total number of LOAD and LOAD NOT instructions before AND LOAD is not more than eight. • To use nine or more, program using method (1). • If there are nine or more with method (2), then a program error will occur during the program check by the Peripheral Device.  OR LD i 0.00 0.01 0.02 0.03 0.04 0.05 100.01 Coding Example (1) Instruction Coding Example (2) Operand Instruction Operand LD 0.00 LD 0.00 AND NOT 0.01 AND NOT 0.01 LD NOT 0.02 LD NOT 0.02 AND NOT 0.03 AND NOT 0.03 OR LD --- LD 0.04 LD 0.04 AND 0.05 AND 0.05 OR LD --- . . . . . . . . OR LD --- OR LD --- OUT 100.01 . . . . OUT 100.01 • The OR LOAD instruction can be used repeatedly. In programming method (2) above, however, the number of OR LOAD instructions becomes one less than the number of LOAD and LOAD NOT instructions before that. • In method (2), make sure that the total number of LOAD and LOAD NOT instructions before OR LOAD is not more than eight. • To use nine or more, program using method (1). • If there are nine or more with method (2), then a program error will occur during the program check by the Peripheral Device. CP1E CPU Unit Instructions Reference Manual(W483) Sequence Input Instructions  AND LD 2-15 2 Instructions NOT Instruction Mnemonic NOT NOT Variations Function code --- 520 Function Reverses the execution condition. NOT Symbol NOT(520) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Flags There are no flags affected by NOT(520). Function NOT(520) is placed between an execution condition and another instruction to invert the execution condition. Precautions NOT(520) is an intermediate instruction, i.e., it cannot be used as a right-hand instruction. Be sure to program a right-hand instruction after NOT(520). Sample program i 0.00 100.00 0.01 NOT(520) 0.02 2-16 NOT(520) reverses the execution condition in the following example. 0.00 0.01 0.02 100.00 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic Variations Function code Function CONDITION ON UP --- 521 UP(521) turns ON the execution condition for the next instruction for one cycle when the execution condition it receives goes from OFF to ON. CONDITION OFF DOWN --- 522 DOWN(522) turns ON the execution condition for the next instruction for one cycle when the execution condition it receives goes from ON to OFF. UP DOWN UP(521) DOWN(522) Symbol 2 UP/DOWN Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Flags There are no flags affected by UP(521) and DOWN(522). Function  UP UP(521) is placed between an execution condition and another instruction to turn the execution condition into an up-differentiated condition. UP(521) causes the connecting instruction to be executed just once when the execution condition goes from OFF to ON.  DOWN DOWN(522) is placed between an execution condition and another instruction to turn the execution condition into a down-differentiated condition. DOWN(522) causes the connecting instruction to be executed just once when the execution condition goes from ON to OFF. Precautions • The operation of UP(521) and DOWN(522) depends on the execution condition for the instruction as well as the execution condition for the program section when it is programmed in an interlocked program section, a jumped program section, or a subroutine. • The operation of UP(521) and DOWN(522) will not be consistent if the same subroutine is executed more than once in the same cycle. • An subroutine will not be executed while the input condition for the subroutine is OFF. Caution is thus required when using UP(521) and DOWN(522) in a function block definition. For details, refer to information on SBS(091). Sample program  UP i 0.00 100.01 UP When CIO 0.00 goes from OFF to ON, CIO 100.01 is turned ON for just one cycle. 0.00 100.01 Cycle time CP1E CPU Unit Instructions Reference Manual(W483) Sequence Input Instructions UP/DOWN 2-17 2 Instructions Sequence Output Instructions OUT/OUT NOT Instruction Mnemonic OUTPUT OUT OUTPUT NOT OUT NOT Variations Function code !OUT --- !OUT NOT --- Function Outputs the result (execution condition) of the logical processing to the specified bit. Reverses the result (execution condition) of the logical processing, and outputs it to the specified bit. OUT OUT NOT Symbol Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size --- --- BOOL ---  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK --- --- OK --- --- Constants CF Pulse bits TR bits --- --- --- OK OUT OUT NOT Flags There are no flags affected by this instruction. Function  OUT If there is no immediate refreshing specification, the status of the execution condition (power flow) is written to the specified bit in I/O memory. If there is an immediate refreshing specification, the status of the execution condition (power flow) is also written to the CPU Unit’s built-in output terminal in addition to the output bit in I/O memory.  OUT NOT If there is no immediate refreshing specification, the status of the execution condition (power flow) is reversed and written to a specified bit in I/O memory. If there is an immediate refreshing specification, the status of the execution condition (power flow) is reversed and also written to the CPU Unit’s built-in output terminal in addition to the output bit in I/O memory. 2-18 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Hint • Difference between SET/RSET and OUT For OUT, the operand bit is turned ON when the input condition turns ON and is turned OFF when the input condition turns OFF. For SET and RSET, the operand bit turns ON or OFF, respectively, when the input condition turns ON and the operand bit does not change when the input condition turns OFF. Sample program 2 100.00 0.00 Sequence Output Instructions • Immediate refreshing (!) can be specified for OUT and OUT NOT. An immediate refresh instruction updates the status of the built-in output terminal just after the instruction is executed for the CPU Unit, at the same time as it writes the status of the execution condition (power flow) to the specified output bit in I/O memory. 100.01 OUT/OUT NOT Instruction Operand LD 0.00 OUT 100.00 OUT NOT 100.01 CP1E CPU Unit Instructions Reference Manual(W483) 2-19 2 Instructions TR Instruction Mnemonic TR Bits Variations Function code Function --- --- TR bits are used to temporarily retain the ON/OFF status of execution conditions in a program when programming in mnemonic code. TR Function TR bits are used to temporarily retain the ON/OFF status of execution conditions in a program when programming in mnemonic code. They are not used when programming directly in ladder program form because the processing is automatically executed by the Peripheral Device. The following diagram shows a simple application using two TR bits. Coding 0.00 TR0 0.01 TR1 0.02 0.03 100.00 100.01 0.04 100.02 0.05 100.03 Instruction Operands LD 0.00 OUT TR0 AND 0.01 OUT TR1 AND 0.02 OUT 100.00 LD TR1 AND 0.03 OUT 100.01 LD TR0 AND 0.04 OUT 100.02 LD TR0 AND NOT 100.00 OUT 100.03 Relay Address Temporary Relay TR0 to TR15  Using TR0 to TR15 • TR0 to TR15 are used only with LOAD and OUTPUT instructions. • There are no restrictions on the order in which the bit addresses are used. • Sometimes it is possible to simplify a program by rewriting it so that TR bits are not required. The following diagram shows one case in which a TR bit is unnecessary and one in which a TR bit is required. In instruction block (1), the ON/OFF status at point A is the same as for output CIO 100.00, so AND 0.01 and OUT 100.01 can be coded without requiring a TR bit. In instruction block (2), the status of the branching point and that of output CIO 100.02 are not necessarily the same, so a TR bit must be used. In this case, the number of steps in the program could be reduced by using instruction block (1) in place of instruction block (2). 2-20 0.00 0.02 100.00 A TR0 0.01 100.01 0.03 100.02 100.03 (1) (2) CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic KEEP KEEP Variations Function code !KEEP 011 Sequence Output Instructions KEEP Function Operates like a latching relay. KEEP S(SET) Symbol KEEP(011) R(RESET) R R: Bit 2 Applicable Program Areas Step program areas Subroutines Interrupt tasks OK OK OK KEEP Area Usage Operands Operand Description Data type Size R Bit BOOL ---  Operand Specifications Word addresses Indirect DM addresses Area R CIO WR HR AR T C DM @DM *DM OK OK OK OK --- --- --- --- --- Constants CF Pulse bits TR bits --- --- --- OK Flags No flags are affected by KEEP(011). Function When S turns ON, the designated bit will go ON and stay ON until reset, regardless of whether S stays ON or goes OFF. When R turns ON, the designated bit will go OFF. The relationship between execution conditions and KEEP(011) bit status is shown below on the right. CP1E CPU Unit Instructions Reference Manual(W483) Set KEEP A C = A B C Reset B C S execution condition ON OFF R execution condition ON OFF Status of C ON OFF 2-21 2 Instructions Hint • KEEP(011) has an immediate refreshing variation (!KEEP(011)). When a CPU Unit built-in output bit has been specified for R in a !KEEP(011) instruction, any changes to R will be refreshed when !KEEP(011) is executed and reflected immediately in the output bit. • KEEP(011) operates like the self-maintaining bit, but a self-maintaining bit programmed with KEEP(011) requires one less instruction. 0.02 100.00 0.03 5.00 0.02 KEEP 100.00 0.03 Self-maintaining bits programmed with KEEP(011) will maintain status even in an interlock program section, unlike the self-maintaining bit programmed without KEEP(011). IL IL KEEP A C B A B C C ILC Output bit C will maintain its previous status in an interlock. ILC Output bit C will be turned OFF in an interlock. • KEEP(011) can be used to create flip-flops as shown below. A B ↑ KEEP B A B ↑ A B 2-22 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions 0.02 KEEP H0.00 0.03 Indicates emergency situation 0.04 0.05 H0.00 Sequence Output Instructions • If a holding bit is used for R, the bit status will be retained even during a power interruption. KEEP(011) can thus be used to program bits that will maintain status after restarting the PLC following a power interruption. An example of this that can be used to produce a warning display following a system shutdown for an emergency situation is shown below. 2 Reset input • The status of I/O Area bits can be retained in the event of a power interruption by turning ON the IOM Hold Bit and setting IOM Hold Bit Hold in the PLC Setup. In this case, I/O Area bits used in KEEP(011) will maintain status after restarting the PLC following a power interruption, just like holding bits. Be sure to restart the PLC after changing the PLC Setup; otherwise the new settings will not be used. Precautions • If S and R are ON simultaneously, the reset input takes precedence. • The set input (S) cannot be received while R is ON. • Never use an input bit in a normally closed condition on the reset (R) for KEEP(011) when the input device uses an AC power supply. The delay in shutting down the PLC’s DC power supply (relative to the AC power supply to the input device) can cause the operand bit of KEEP(011) to be reset. This situation is shown on the right. CP1E CPU Unit Instructions Reference Manual(W483) Set ON OFF Reset ON OFF Status of C ON OFF Set ON OFF Reset ON OFF Status of C ON OFF Input Unit A S A NEVER KEEP R 2-23 KEEP 100.00 Activates warning display 2 Instructions Sample program 0.00 KEEP 100.00 0.01 0.02 When CIO 0.00 goes ON in the left example, CIO 100.00 is turned ON. CIO 100.00 remains ON until CIO 0.01 goes ON. When CIO 0.02 goes ON and CIO 0.03 goes OFF in the left example, CIO 100.01 is turned ON. CIO 100.01 remains ON until CIO 0.04 or CIO 0.05 goes ON. 0.03 KEEP 100.01 0.04 0.05 Coding Instruction Operand LD 0.00 LD 0.01 KEEP (011) 100.00 LD 0.02 AND NOT 0.03 LD 0.04 OR 0.05 KEEP (011) 100.01 Note KEEP(011) is input in different orders on in ladder and mnemonic form. In ladder form, input the set input, KEEP(011), and then the reset input. In mnemonic form, input the set input, the reset input, and then KEEP(011). 2-24 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic DIFFERENTIATE UP DIFU Variations Function code !DIFU 013 Function DIFU(013) turns the designated bit ON for one cycle when the execution condition goes from OFF to ON (rising edge). DIFU Symbol Sequence Output Instructions DIFU DIFU(013) R 2 R: Bit Applicable Program Areas Step program areas Subroutines Interrupt tasks Usage OK OK OK DIFU Area Operands Operand Description Data type Size R Bit BOOL ---  Operand Specifications Word addresses Indirect DM addresses Area R CIO WR HR AR T C DM @DM *DM OK OK OK OK --- --- --- --- --- Constants CF Pulse bits TR bits --- --- --- --- Flags No flags are affected by DIFU(013). Function When the execution condition goes from OFF to ON, DIFU(013) turns R ON. When DIFU(013) is reached in the next cycle, R is turned OFF. Execution condition Status of R 1 cycle Hint • UP(521) can be used to execute an instruction for just one cycle when the execution condition goes from OFF → ON. • DIFU(013) has immediate refreshing variation (!DIFU(013)). When a CPU Unit built-in output bit has been specified for R in this instruction, any changes to R will be refreshed when the instruction is executed and reflected immediately in the output bit. CP1E CPU Unit Instructions Reference Manual(W483) 2-25 2 Instructions Precautions • The operation of DIFU(013) depends on the execution condition for the instruction itself as well as the execution condition for the program section when it is programmed in an interlocked program section, a jumped program section, or a subroutine. • An subroutine will not be executed while the input condition for the subroutine is OFF. Caution is thus required when using DIFU(013) in a function block definition. For details, refer to information on SBS(091). • The operation of DIFU(013) will not be consistent if the same subroutine is executed more than once in the same cycle. Sample program When CIO 0.00 goes from ON to OFF in the following example, CIO 100.00 is turned ON for one cycle. i 0.00 DIFU 100.00 0.00 100.00 1 cycle 2-26 1 cycle CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic DIFFERENTIATE DOWN DIFD Variations Function code Function !DIFD 014 DIFD(014) turns the designated bit ON for one cycle when the execution condition goes from ON to OFF (falling edge). DIFD Symbol DIFD(014) R 2 R: Bit Area Step program areas Subroutines Interrupt tasks Usage OK OK OK DIFD Applicable Program Areas Operands Operand Description R Data type Size BOOL --- Bit  Operand Specifications Word addresses Indirect DM addresses Area B Sequence Output Instructions DIFD CIO WR HR AR T C DM @DM *DM OK OK OK OK --- --- --- --- --- Constants CF Pulse bits TR bits --- --- --- --- Flags No flags are affected by DIFD(014). Function When the execution condition goes from ON to OFF, DIFD(014) turns R ON. When DIFD(014) is reached in the next cycle, R is turned OFF. Execution condition Status of R 1 cycle Hint • DOWN(522) can be used to execute an instruction for just one cycle when the execution condition goes from ON → OFF. • The operation of DIFD(014) depends on the execution condition for the instruction itself as well as the execution condition for the program section when it is programmed in an interlocked program section, a jumped program section, or a subroutine. • DIFD(014) has immediate refreshing variation (!DIFD(014)). When a CPU Unit built-in output bit has been specified for R in this instruction, any changes to R will be refreshed when the instruction is executed and reflected immediately in the output bit. CP1E CPU Unit Instructions Reference Manual(W483) 2-27 2 Instructions Precautions • The operation of DIFD(014) will not be consistent if the same function block instance is executed more than once in the same cycle. • An subroutine will not be executed while the input condition for the subroutine is OFF. Caution is thus required when using DIFD(014) in a function block definition. For details, refer to information on SBS(091). Sample program When CIO 0.00 goes from ON to OFF in the following example, CIO 100.00 is turned ON for one cycle. i 0.00 DIFD 100.00 0.00 100.00 1 cycle 2-28 1 cycle CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic SET RESET Variations SET @SET, %SET, !SET, !@SET, !%SET RSET @RSET, %RSET, !RSET, !@RSET, !%RSET Function code Function --- SET turns the operand bit ON when the execution condition is ON. After this, the specified contact will remain ON regardless of ON/OFF of the input condition. --- RSET turns the operand bit OFF when the execution condition is ON. After this, the specified contact will remain OFF regardless of ON/OFF of the input condition. Sequence Output Instructions SET/RSET 2 SET RSET SET R R R: Bit SET/RSET Symbol RSET R: Bit Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description R Data type Size BOOL --- Bit  Operand Specifications Word addresses Indirect DM addresses Area R CIO WR HR AR T C DM @DM *DM OK OK OK OK --- --- --- --- --- Constants CF Pulse bits TR bits --- --- --- --- Flags No flags are affected by SET and RSET. Function  SET SET turns the operand bit ON when the execution condition is ON, and does not affect the status of the operand bit when the execution condition is OFF. Use RSET to turn OFF a bit that has been turned ON with SET. Execution condition of SET ON OFF Status of R ON OFF  RSET RSET turns the operand bit OFF when the execution condition is ON, and does not affect the status of the operand bit when the execution condition is OFF. Use SET to turn ON a bit that has been turned OFF with RSET. CP1E CPU Unit Instructions Reference Manual(W483) Execution condition of RSET Status of R ON OFF ON OFF 2-29 2 Instructions Hint • Differences between OUT/OUT NOT and SET/RSET The operation of SET differs from that of OUT because the OUT instruction turns the operand bit OFF when its execution condition is OFF. Likewise, RSET differs from OUT NOT because OUT NOT turns the operand bit ON when its execution condition is OFF. For OUT, the operand bit is turned ON when the input condition turns ON and is turned OFF when the input condition turns OFF. For SET and RSET, the operand bit turns ON or OFF, respectively, when the input condition turns ON and the operand bit does not change when the input condition turns OFF. 0.00 100.00 CIO 100.00 is turned ON/OFF when CIO 0.00 goes ON/OFF. 0.01 SET 100.00 CIO 100.00 is turned ON when CIO 0.01 goes ON; it remains ON until CIO 0.02 goes ON. 0.02 RSET 100.00 • The set and reset inputs for a KEEP(011) instruction must be programmed with the instruction, but the SET and RSET instructions can be programmed completely independently. Furthermore, the same bit may be used as the operand in any number of SET or RSET instructions. • SET and RSET have immediate refreshing variations (!SET and !RSET). When a CPU Unit built-in output bit has been specified for R in one of these instructions, any changes to R will be refreshed when the instruction is executed and reflected immediately in the output bit. If external output is specified for R by !SET (or !RSET), R will be OUT-refreshed as soon as it turns ON (or OFF) (when the instruction is executed). R, which turned ON (or OFF), will remain ON (or OFF) as normal until a RSET instruction (or SET instruction) is executed. Precautions • SET and RSET cannot be used to set and reset timers and counters. When SET or RSET is programmed between IL(002) and ILC(003) or JMP(004) and JME(005), the status of the specified bit will not be changed if the program section is interlocked or jumped. 2-30 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic Function code Variations Function MULTIPLE BIT SET SETA @SETA 530 SETA(530) turns ON the specified number of consecutive bits. MULTIPLE BIT RESET RSTA @RSTA 531 RSTA(531) turns OFF the specified number of consecutive bits. SETA RSTA SETA(530) Symbol RSTA(531) 2 D: Beginning word D D: Beginning word N1 N1: Beginning bit N1 N1: Beginning bit N2 N2: Number of bits N2 N2: Number of bits SETA/RSTA D Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size D Beginning Word UINT Variable N1 Beginning Bit UINT 1 N2 Number of Bits UINT 1  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK D CF Pulse bits TR bits --- --- --- --- N1,N2 OK Flags Operand Error Flag Description P_ER Data type • ON if N1 is not within the specified range of 0000 to 000F (&0 to &15). • OFF in all other cases. Function  SETA SETA(530) turns ON N2 bits, beginning from bit N1 of D, and continuing to the left (more-significant bits). All other bits are left unchanged. (No changes will be made if N2 is set to 0.) N1 15 D 1 0 D+1 1 D+2 N2 bits are set to 1 (ON). 1 1 1 1 1 Bits turned ON by SETA(530) can be turned OFF by any other instructions, not just RSTA(531). CP1E CPU Unit Instructions Reference Manual(W483) Sequence Output Instructions SETA/RSTA 2-31 2 Instructions  RSTA N1 RSTA(531) turns OFF N2 bits, beginning from bit N1 of D, and continuing to the left (more-significant bits). All other bits are left unchanged. (No changes will be made if N2 is set to 0.) 15 0 D 0 0 0 D+1 0 0 0 D+2 N2 bits are reset to 0 (OFF). 0 Bits turned OFF by RSTA(531) can be turned ON by any other instructions, not just SETA(530). Hint  SETA • SETA(530) can be used to turn ON bits in data areas that are normally accessed by words only, such as the DM areas.  RSTA • RSTA(531) can be used to turn OFF bits in data areas that are normally accessed by words only, such as the DM areas. Sample program  SETA When CIO 0.00 is turned ON in the following example, the 20 bits (0014 hexadecimal) beginning with bit 5 of CIO 100 are turned ON. 0.00 SETA D N1 N2 N1: Bit 5 100 &5 &20 15 1211 8 7 5 4 3 0 D: 100 1 1 1 1 1 1 1 1 1 1 1 N2: 20 bits 1 1 1 1 1 1 1 1 1 101  RSTA When CIO 0.00 is turned ON in the following example, the 20 bits (0014 hexadecimal) beginning with bit 3 of CIO 100 are turned OFF. 0.00 RSTA D N1 N2 2-32 N1: Bit 3 100 &3 &20 15 1211 8 7 4 3 0 D: 100 0 0 0 0 0 0 0 0 0 0 0 0 0 101 N2: 20 bits 0 0 0 0 0 0 0 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic Function code Variations Function SINGLE BIT SET SETB @SETB, !SETB, !@SETB 532 SETB(532) turns ON the specified bit. SINGLE BIT RESET RSTB @RSTB, !RSTB, !@RSTB 533 RSTB(533) turns OFF the specified bit. SETB RSTB 2 RSTB(533) SETB(532) Symbol Sequence Output Instructions SETB/RSTB D D: Word address D D: Word address N N: Bit number N N: Bit number SETB/RSTB Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size D Word address UINT 1 N Bit number UINT 1  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK D CF Pulse bits TR bits --- --- --- --- N OK Flags Operand Error Flag Description P_ER Data type • ON if N is not within the specified range of 0000 to 000F (&0 to &15). • OFF in all other cases. Function  SETB 15 SETB(532) turns ON bit N of word D when the execution condition is ON. The status of the bit is not affected when the execution condition is OFF. CP1E CPU Unit Instructions Reference Manual(W483) This bit is turned OFF. Execution condition ON OFF Bit N of word D ON OFF 2-33 2 Instructions  RSTB 15 RSTB(533) turns OFF bit N of word D when the execution condition is ON. The status of the bit is not affected when the execution condition is OFF. (Use SETB(532) to turn ON the bit.) This bit is turned OFF. Execution condition ON OFF Bit N of word D ON OFF Hint • Differences between SET/RSET and SETB(532)/RSTB(533) The instructions operate in the same way when the specified bit is in the CIO, W, H, or A Area. The SETB(532) and RSTB(533) instructions can control bits in the DM Areas, unlike SET and RSET. • The set and reset inputs for a KEEP(011) instruction must be programmed with the instruction, but the SETB(532) and RSTB(533) instructions can be programmed completely independently. Furthermore, the same bit may be used as the operand in any number of SETB(532) and RSTB(533) instructions. Precautions • Bits turned ON by SETB(532) can be turned OFF by any other instruction, not just RSTB(533). Bits turned OFF by RSTB(533) can be turned ON by any other instruction, not just SETB(532). • SETB(532) and RSTB(533) cannot set/reset timers and counters. • When SETB(532) or RSTB(533) is programmed between IL(002) and ILC(003) or JMP(004) and JME(005), the status of the specified bit will not be changed if the program section is interlocked or jumped, i.e., when the interlock condition or jump condition is OFF. • SETB(532) and RSTB(533) have immediate refreshing variations (!SETB(532) and !RSTB(533)). When a CPU Unit built-in output bit has been specified in one of these instructions, any changes to the specified bit will be refreshed when the instruction is executed and reflected immediately in the output bit. • When a CPU Unit built-in output is specified for bit address N of word D by !SETB (or !RSTB instruction), bit address N of word D which turned ON (or OFF) will be OUT-refreshed at that point (when the instruction is executed). Bit address N of word D which was turned ON (or OFF) remains ON (or OFF) as normal until an RSTB instruction (or SETB instruction) is executed. Sample program 0.00 SETB Bit 02 of D0 is turned ON when CIO 0.00 is ON. D0 &2 0.01 RSTB Bit 02 of D0 is turned OFF when CIO 0.01 is ON. D0 &2 2-34 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Overview of Interlock Instructions  Interlock Instructions The following instruction combinations can be used to interlock outputs in a program section. • INTERLOCK and INTERLOCK CLEAR (IL(002) and IL(003)) • MULTI-INTERLOCK DIFFERENTIATION HOLD and MULTI-INTERLOCK CLEAR (MILH(517) and MILC(519))* Note MILH(517) holds the status of the Differentiation Flag, so differentiated instructions that were interlocked are executed after the interlock is cleared. • MULTI-INTERLOCK DIFFERENTIATION RELEASE and MULTI-INTERLOCK CLEAR (MILR(518) and MILC(519))* Note MILR(518) does not hold the status of the Differentiation Flag, so differentiated instructions that were interlocked are not executed after the interlock is cleared.  Differences between Interlocks and Multiple Interlocks Regular interlocks (IL(002) and IL(003)) cannot be nested, but multiple interlocks (MILH(517), MILR(518), and MILC(519)) can be nested. Ladder programming can be simplified by nesting multiple interlocks, as shown in the following diagram. Interlocks with MILH and MILC a MILH Interlocks with IL and ILC a IL 0 A1 A1 ILC b MILH a b IL 1 A2 A2 ILC c MILH a b c IL 2 A3 A3 MILC ILC 2 MILC 1 MILC 0 CP1E CPU Unit Instructions Reference Manual(W483) 2-35 Sequence Control Instructions Sequence Control Instructions 2 2 Instructions  Differences between MILH(517) and MILR(518) Differentiated instructions (DIFU, DIFD, or instructions with a @ or % prefix) operate differently in interlocks created with MILH(517) and MILR(518). The operation of differentiated instructions in an interlock created with MILH(517) is identical to the operation in an interlock created with IL(002). For details, refer to MULTI-INTERLOCK DIFFERENTIATION HOLD, MULTI-INTERLOCK DIFFERENTIATION RELEASE, and MULTI-INTERLOCK CLEAR: MILH(517), MILR(518), and MILC(519).  Precautions Do not combine interlocks created with different interlock instructions (IL-ILC, MILH-MILC, and MILRMILC). The interlocks may not operate properly if different interlock methods are used together. For details on combining instructions, refer to MULTI-INTERLOCK DIFFERENTIATION HOLD, MULTIINTERLOCK DIFFERENTIATION RELEASE, and MULTI-INTERLOCK CLEAR: MILH(517), MILR(518), and MILC(519). For example, an MILH(517) instruction cannot be inserted between IL(002) and IL(003). IL MILH MILH(517) is in an interlocked area between IL(002) and ILC.(003). ILC Note The different interlocks (IL-ILC, MILH-MILC, and MILR-MILC) can be used together as long as the interlocked program sections do not overlap. For example, all three interlock methods can be used without overlapping, as shown in the following diagram. IL ILC MILH MILC Different interlock methods can be used as long as the interlocked areas do not overlap. MILR MILC 2-36 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Differences between Interlocks and Jumps Instruction execution Except OUT, OUT NOT, and timer instructions, all instructions are not executed. No instructions are executed. Output status in instructions Except for outputs in OUT, OUT NOT, and timer instructions, all outputs retain their previous status. All outputs retain their previous status. Sequence Control Instructions Bits in OUT, OUT NOT OFF All outputs retain their previous status. 2 Status of timer instructions (except (TTIM(087), TTIMX(555), MTIM(543), and MTIMX(554)) Reset Operating timers (TIM, TIMX(550), TIMH(015), TIMHX(551), TMHH(540), TMHHX(552) only) continue timing because the PVs are updated even when the timer instruction is not being executed. The following table shows the differences between interlocks (created with IL(002)/ILC(003), MILH(517)/MILC(519), or MILR(518)/MILC(519)) and jumps created with JMP(004)/JME(005). Item Treatment in IL(002)/ILC(003), MILH(517)/MILC (519), or MILR(518)/MILC (519) CP1E CPU Unit Instructions Reference Manual(W483) Treatment in JMP(004)/JME(005) 2-37 2 Instructions END Instruction END Mnemonic END Variations Function code --- 001 Function Indicates the end of a program. END Symbol END(001) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage Not allowed Not allowed OK Flags There are no flags affected by this instruction. Function END(001) completes the execution of a program for that cycle. No instructions written after END(001) will be executed. Precautions • Always place END(001) at the end of each program. A programming error will occur if there is not an END(001) instruction in the program. 2-38 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction NO OPERATION Mnemonic NOP Variations Function code --- 000 Sequence Control Instructions NOP Function This instruction has no function. NOP Symbol (There is no ladder symbol associated with NOP(000).) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK 2 Flags NOP No flags are affected by NOP(000). Function • No processing is performed for NOP(000), but this instruction can be used to set aside lines in the program where instructions will be inserted later. • NOP(000) can only be used with mnemonic displays, not with ladder programs. Hint • When the instructions are inserted later, there will be no change in program addresses. CP1E CPU Unit Instructions Reference Manual(W483) 2-39 2 Instructions IL/ILC Instruction Mnemonic Variations Function code Function INTERLOCK IL --- 002 Interlocks all outputs between IL(002) and ILC(003) when the execution condition for IL(002) is OFF. INTERLOCK CLEAR ILC --- 003 Indicates the end of the interlock range. IL Symbol ILC ILC(003) IL(002) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage Not allowed OK OK Flags There are no flags affected by this instruction. Function When the execution condition for IL(002) is OFF, the outputs for all instructions between IL(002) and ILC(003) are interlocked. When the execution condition for IL(002) is ON, the instructions between IL(002) and ILC(003) are executed normally. The following table shows the treatment of various outputs in an interlocked section between IL(002) and ILC(003). Instruction Treatment Bits specified in OUT, OUT NOT OFF TIM, TIMX(550), TIMH(015), TIMHX(551), TMHH(540), TMHHX(552), TIML(542), and TIMXL(553) Completion Flag OFF (reset) PV Time set value (reset) Bits/words specified in all other instructions (See note.) Retain previous status. Note Bits and words in all other instructions including TTIM(087), TTIMX(555), SET, RSET, CNT, CNTX(546), CNTR(012), CNTRX(548), SFT, and KEEP(011) retain their previous status. Execution condition ON Execution condition Execution condition OFF IL Interlocked section of the program Normal Outputs execution interlocked. ILC 2-40 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Hint Sequence Control Instructions • If there are bits which you want to remain ON in an interlocked program section, set these bits to ON with SET just before IL(002). IL A A • It is often more efficient to switch a program section with IL(002) and ILC(003). When several processes are controlled with the same execution condition, it takes fewer program steps to put these processes between IL(002) and ILC(003). IL 2 Precautions • The cycle time is not shortened when a section of the program is interlocked because the interlocked instructions are executed internally. IL a A IL b Execution condition a b OFF ON OFF OFF ON OFF ON ON Program section A Interlocked Interlocked Not interlocked Not interlocked B Interlocked Interlocked Interlocked Not interlocked B ILC • IL(002) and ILC(003) cannot be nested, as in the following diagram. (Use MILH(517)/MILR(518) and MILC(519) when it is necessary to nest interlocks.) IL A IL B ILC B ILC CP1E CPU Unit Instructions Reference Manual(W483) 2-41 IL/ILC • In general, IL(002) and ILC(003) are used in pairs, although it is possible to use more than one IL(002) with a single ILC(003) as shown in the following diagram. If IL(002) and ILC(003) are not paired, an error message will appear when the program check is performed but the program will be executed properly. 2 Instructions  Operation of Differentiated Instructions If there is a differentiated instruction (DIFU, DIFD, or instruction prefixed by @ or %) between IL(002) and ILC(003) instructions, that instruction will be executed when the interlock is cleared if the differentiation condition of the instruction is satisfied by means of a change in the input condition between starting and clearing of the interlock. Example: When a DIFFERENTIATE UP (DIFU(013)) instruction is used and the input condition is OFF when the interlock starts and ON when the interlock is cleared, the DIFFERENTIATE UP (DIFU(013)) instruction will be executed when the interlock is cleared. i 0.00 IL 1. When 0.00 is OFF (interlock starts), input condition 0.01 of DIFU is OFF. 2. Input condition 0.01 of DIFU goes from OFF to ON while 0.00 is OFF (interlock in effect), 3. When 0.00 goes from OFF to ON (interlock cleared), the DIFU instruction is executed if input condition 0.01 of DIFU is ON. 0.01 DIFU 10.00 ILC Reference: An IL(002) instruction operates in the same way as an MILH(517) instruction in relation to differentiated instruction operation. Timing Chart Not interlocked Interlocked Not interlocked ON 0.00 OFF ON Differentiation condition is satisfied ON 0.01 OFF OFF The DIFU(013) instruction is executed. ON 10.00 OFF 1 cycle 2-42 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sample program 0.00 0.00 ON Sequence Control Instructions When CIO 0.00 is OFF in the right example, all outputs between IL(002) and ILC(003) are interlocked. When CIO 0.00 is ON in the right example, the instructions between IL(002) and ILC(003) are executed normally. 0.00 OFF IL 0.01 2.00 OFF 0.02 H0 OFF TIM 2 Outputs interlocked Normal execution Reset IL/ILC SET Retained 0.03 CNT Retained ILC CP1E CPU Unit Instructions Reference Manual(W483) 2-43 2 Instructions MILH/MILR/MILC Instruction Mnemonic Variations Function code Function MULTI-INTERLOCK DIFFERENTIATION HOLD MILH --- 517 Interlocks all outputs between MILH(517) and MILC(519) when the execution condition for MILH(517) is OFF. MULTI-INTERLOCK DIFFERENTIATION RELEASE MILR --- 518 Interlocks all outputs between MILR(518) and MILC(519) when the execution condition for MILR(518) is OFF. MULTI-INTERLOCK CLEAR MILC --- 519 Indicates the end of a multi-interlock range by means of an MILH or MILR instruction with the same interlock number. MILH MILR MILC MILH(517) MILR(518) MILC(519) N N N D D Symbol N: Interlock Number N: Interlock Number N: Interlock Number D: Interlock Status Bit D: Interlock Status Bit Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage Not allowed OK OK Operands Operand Description N Interlock number D Interlock status bit Data type Size -- 1 BOOL -- N: Interlock Number The interlock number must be between 0 and 15. Match the interlock number of the MILH(517) (or MILR(518)) instruction with the same number in the corresponding MILC(519) instruction. The interlock numbers can be used in any order. D: Interlock Status Bit • ON when the program section is not interlocked. • OFF when the program section is interlocked. When the interlock is engaged, the Interlock Status Bit can be force-set to release the interlock. Conversely, when the interlock is not engaged, the Interlock Status Bit can be force-reset to engage the interlock.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR N --- --- --- --- D OK OK OK OK T C DM @DM *DM --- --- --- --- --- CF Pulse bits TR bits --- --- --- OK --- Flags Name Error Flag 2-44 Label P_ER Operation OFF CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function  Interlock Status The following table shows the treatment of various outputs in an interlocked section between MILH(517)/MILR(518) instruction and the next MILC(519). Instruction Bits specified in OUT, OUT NOT 2 OFF Completion Flag PV OFF (reset) Time set value (reset) Bits/words specified in all other instructions (See note.) Retain previous status. Note Bits and words in all other instructions including TTIM(087), TTIMX(555), SET, RSET, CNT, CNTX(546), CNTR(012), CNTRX(548), SFT, and KEEP(011) retain their previous status. The MILH(517)/MILR(518) instruction turns OFF the Interlock Status Bit (operand D) when the interlock is in engaged and turns ON the bit when the interlock is not engaged. Consequently, the Interlock Status Bit can be monitored to check whether or not the interlock for a given interlock number is engaged. Input condition ON (Normal operation) Input condition OFF MILH Input condition n d Interlocked program section Normal operation Interlock Status Bit (d) ON Outputs interlocked. (Outputs OFF, timers reset, etc.) Interlock Status Bit (d) OFF MILC n  Nesting Interlocks are nested when an interlocked program section (MILH(517)/MILR(518) and MILC(519) combination) is placed within another interlocked program section (MILH(517)/MILR(518) and MILC(519) combination). Interlocks can be nested up to 16 levels. Nesting can be used for the following kinds of applications. Example 1 Interlocking the entire program with one condition and interlocking a part of the program with another condition (1 nesting level) Global interlock (Emergency stop) A1 (Peripheral processing) Partial interlock (Conveyor RUN) A2 (Conveyor operation) CP1E CPU Unit Instructions Reference Manual(W483) 2-45 MILH/MILR/MILC TIM, TIMX(550), TIMH(015), TIMHX(551), TMHH(540), TMHHX(552), TIML(542), and TIMXL(553) Treatment Sequence Control Instructions When the execution condition for MILH(517) (or MILR(518)) with interlock number N is OFF, the outputs for all instructions between that MILH(517)/MILR(518) instruction and the next MILC(519) with interlock number N are interlocked. When the execution condition for MILH(517) (or MILR(518)) with interlock number N is ON, the instructions between that MILH(517)/MILR(518) instruction and the next MILC(519) with interlock number N are executed normally. 2 Instructions • A1 and A2 are interlocked when the Emergency Stop Button is ON. Global interlock (Emergency stop) MILH • A2 is interlocked when Conveyor RUN is OFF. 0 A1 (Peripheral processing) When the Emergency Stop is ON (input condition OFF), both A1 and A2 are interlocked. When the Emergency Stop is OFF (input condition ON), A1 is executed normally and A2 is controlled by the Conveyor RUN switch as described below. Partial interlock (Conveyor RUN) MILH 1 When the Conveyor RUN switch is OFF (input condition OFF), A2 is interlocked. When the Conveyor RUN switch is ON (input condition ON), A2 is executed normally. A2 (Conveyor operation) MILC 1 MILC 0 Example 2 Global interlock (Emergency stop) Interlocking the entire program with one condition and interlocking two overlapping parts of the program with other conditions (2 nesting levels) A1 (Peripheral processing) Partial interlock (Conveyor RUN) A2 (Conveyor operation) Partial interlock (Arm RUN) A3 (Arm operation) • A1, A2, and A3 are interlocked when the Emergency Stop Button is ON. Global interlock (Emergency stop) MILH 0 • A2 and A3 are interlocked when Conveyor RUN is OFF. • A3 is interlocked when Arm RUN is OFF. When the Emergency Stop is ON (input condition OFF), A1, A2, and A3 are interlocked. When the Emergency Stop is OFF (input condition ON), A1 is executed normally and A2 and A3 are controlled by the Conveyor RUN and Arm RUN switches as described below. A1 (Peripheral processing) Partial interlock (Conveyor RUN) MILH 1 When the Conveyor RUN switch is OFF (input condition OFF), both A2 and A3 are interlocked. When the Conveyor RUN switch is ON (input condition ON), A2 is executed normally and A3 is controlled by the Arm RUN switch as described below. A2 (Conveyor operation) Partial interlock (Arm RUN) MILH 2 When the Arm RUN switch is OFF (input condition OFF), A3 is interlocked. When the Arm RUN switch is ON (input condition ON), A3 is executed normally. A3 (Arm operation) MILC 2 MILC 1 MILC 0 2-46 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Differentiated instructions (DIFU, DIFD, or instructions with a @ or % prefix) operate differently in interlocks created with MILH(517) and MILR(518). When a program section is interlocked with MILR(518), a differentiated instruction will not be executed when the interlock is cleared even if the differentiation condition was activated during the interlock (comparing the status of the execution condition when the interlock started to its status when the interlock was cleared). When a program section is interlocked with MILH(517), a differentiated instruction will be executed when the interlock is cleared if the differentiation condition was activated during the interlock (comparing the status of the execution condition when the interlock started to its status when the interlock was cleared). Instruction MILH(517) MULTI-INTERLOCK DIFFERENTIATION HOLD  Operation of Differentiated Instructions in an MILH(517) Interlock If there is a differentiated instruction (DIFU, DIFD, or instruction with a @ or % prefix) between MILH(517) and the corresponding MILC(519), that instruction will be executed after the interlock is cleared if the differentiation condition of the instruction was established. In the same way, a differentiated instruction will be executed if its execution condition is established at the same time that the interlock is started or cleared. Many other conditions in the program may cause the differentiation condition to be reset even if it was established during the interlock. In this case, the differentiation instruction will not be executed when the interlock is cleared. Example When a DIFFERENTIATE UP (DIFU(013)) instruction is being used and the input condition is OFF when the interlock starts and ON when the interlock is cleared, DIFU(013) will be executed when the interlock is cleared. (Differentiated instructions operate the same in the MILH(517) interlock as they would in an IL(002) interlock.) Timing chart 0.00 Not interlocked Interlocked Not interlocked MILH 0 ON 0.00 OFF , 1. When CIO 0.00 is OFF (interlock starts), the DIFU s CIO 0.01 input condition is OFF. , 2. The DIFU s CIO 0.01 input condition goes from OFF to ON while CIO 0.00 is OFF (DIFU interlocked), 3. When CIO 0.00 goes from OFF to ON (interlock cleared), DIFU is executed if CIO 0.01 is still ON. 0.01 ON Status (OFF) at start of interlock ON Differentiation condition established 0.01 OFF DIFU W0.0 MILC 0 OFF MILH(517) interlock Status (ON) when interlock is cleared DIFU(013) is executed. ON W0.0 OFF 1 cycle CP1E CPU Unit Instructions Reference Manual(W483) 2-47 2 MILH/MILR/MILC MILR(518) MULTI-INTERLOCK DIFFERENTIATION RELEASE Operation of Differentiated Instructions A differentiated instruction (DIFU, DIFD, or instruction with a @ or % prefix) will be executed after the interlock is cleared if the differentiation condition of the instruction was established while the instruction was interlocked. (The status of the execution condition when the interlock started is compared to its status when the interlock was cleared.) A differentiated instruction (DIFU, DIFD, or instruction with a @ or % prefix) will not be executed after the interlock is cleared even if the differentiation condition of the instruction was established while the instruction was interlocked. Sequence Control Instructions  Differences between MILH(517) and MILR(518) 2 Instructions  Operation of Differentiated Instructions in an MILR(518) Interlock If there is a differentiated instruction (DIFU, DIFD, or instruction with a @ or % prefix) between MILR(518) and the corresponding MILC(519), that instruction will not be executed after the interlock is cleared even if the differentiation condition of the instruction was established. In the same way, a differentiated instruction will not be executed if its execution condition is established at the same time that the interlock is started or cleared. Example When a DIFFERENTIATE UP (DIFU(013)) instruction is being used and the input condition is OFF when the interlock starts and ON when the interlock is cleared, DIFU(013) will not be executed when the interlock is cleared. Timing chart Not interlocked 0.00 MILR 0 Interlocked Not interlocked ON 0.00 OFF , 1. When CIO 0.00 is OFF (interlock starts), the DIFU s CIO 0.01 input condition is OFF. , 2. The DIFU s CIO 0.01 input condition goes from OFF to ON while CIO 0.00 is OFF (DIFU interlocked), 3. When CIO 0.00 goes from OFF to ON (interlock cleared), DIFU is not executed even though CIO 0.01 is still ON. 0.01 ON ON 0.01 OFF OFF DIFU W0.0 MILR(518) interlock DIFU(013) is not executed. ON MILC 0 W0.0 OFF  Controlling Interlock Status from a Programming Device An interlock can be engaged or released manually by force-resetting or force-setting the Interlock Status Bit (specified with operand D of MILH(517) and MILR(518)) from a Programming Device. The forced status of the Interlock Status Bit has priority and overrides the interlock status calculated by program execution. Force-set: Releases the interlock. ON OFF MILH n 100.00 Program section controlled by interlock MILC n 2-48 Force-reset: Engages the interlock. MILH CIO 100.00 is OFF when the interlock is engaged. If CIO 100.00 is force-set (ON), the interlock is released. n 100.00 Program section controlled by interlock CIO 100.00 is ON when the interlock is not engaged. If CIO 100.00 is force-reset (OFF), the interlock is engaged. MILC n CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Hint • When nesting interlocks, assign interlock numbers so that the nested program section does not exceed the outer program section. a MILH 0 Execution condition a b OFF ON A1 ON b Program section OFF OFF ON A1 Interlocked A2 Interlocked A3 Interlocked Not interlocked Not interlocked Interlocked Not interlocked Interlocked Not interlocked Sequence Control Instructions • The cycle time is not shortened when a section of the program is interlocked by MILH(517) or MILR(518) because the interlocked instructions are executed internally. 2 MILH 1 MILH/MILR/MILC A2 MILC 0 A3 MILC The nested program section must not go beyond the outer program section. 1 • Other instructions can be input between the MILC(519) instructions, as shown in the following diagram. a MILH 0 100.00 A1 b MILH 1 100.01 A2 MILC 1 A3 MILC Other instructions can be inserted between two MILC(519) instructions. In this case, sections A1 and A3 operate together. (They are interlocked when “a” is OFF, regardless of the ON/OFF status of “b”.) 0 • If there is an ILC(003) instruction between an MILH(517) and MILC(519) pair, the program section between MILH(517) and ILC(003) will be interlocked. a MILH 0 When input condition “a” is OFF, only program section A1 is interlocked. A1 ILC If there is an ILC(003) instruction, the interlock is cleared at that point. A2 MILC The MILC(519) instruction is ignored. 0 CP1E CPU Unit Instructions Reference Manual(W483) 2-49 2 Instructions • If there is an ILC(003) instruction between an MILR(518) and MILC(519) pair, the ILC(003) instruction will be ignored and the full program section between MILR(518) and MILC(519) will be interlocked. a MILR 0 When input condition “a” is OFF, program sections A1 and A2 are interlocked. A1 ILC The ILC(003) instruction is ignored. A2 MILC 0 • If there is another MILH(517) or MILR(518) instruction with the same interlock number between an MILH(517) and MILC(519) pair and the first MILH(517) instruction’s interlock is engaged, the second MILH(517)/MILR(518) will not operate. a MILH 0 When input condition “a” is OFF, program sections A1 and A2 are both interlocked, even if input condition “b” is ON. A1 b MILH • If there is another MILH(517) or MILR(518) instruction with the same interlock number between an MILH(517) and MILC(519) pair and the first MILH(517) instruction’s interlock is not engaged, the second MILH(517)/MILR(518) will operate normally. 0 When input condition “a” is ON and “b” is OFF, only program section A2 is interlocked. A2 MILC 0 Note The MILR(518) interlocks operate in the same way if there is another MILH(517) or MILR(518) instruction with the same interlock number between an MILR(518) and MILC(519) pair. • If there is an MILC(519) instruction with a different interlock number between an MILH(517)/MILR(518) and MILC(519) pair, that MILC(519) instruction will be ignored. a MILH 0 When input condition “a” is OFF, program sections A1 and A2 are both interlocked. A1 MILC This MILC(519) instruction is ignored. 1 A2 MILC 0 • If there is an MILH(517) instruction between an IL(002) and ILC(003) pair and the IL(002) interlock is engaged, the MILH(517) instruction has no effect. In this case, the program section between IL(002) and ILC(003) will be interlocked. If the IL(002) interlock is not engaged and the MILH(517) instruction’s execution condition (b in this case) is OFF, the program section between MILH(517) and ILC(003) will be interlocked. • If there is an MILC(519) instruction between an IL(002) and ILC(003) pair, that MILC(519) instruction will be ignored and the entire program section between IL(002) and ILC(003) will be interlocked. a IL When input condition “a” is OFF, program sections A1 and A2 are both interlocked. A1 b MILH 0 If the program section is not interlocked by IL(002) and “b” is OFF, program section A2 is interlocked. A2 ILC a IL When input condition “a” is OFF, program sections A1 and A2 are both interlocked. A1 MILC The MILC(519) instruction is ignored. 0 A2 ILC 2-50 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions a a MILH A1 0 b A2 A1 b MILH 1 Sequence Control Instructions • Program operation can be switched more efficiently by using interlocks with MILH(517) or MILR(518). Instead of switching processing with compound conditions, insert an MILH(517) or MILR(518) instruction before each process and an MILC(519) instruction after each process. 2 A2 MILC 1 0 • Unlike the IL(002) interlocks, MILH(517) and MILR(518) interlocks can be nested, so the operation of similar programs will be different if MILH(517) or MILR(518) is used instead of ILC(002). • Program with MILH(517)/MILC(519) Interlocks a MILH 0 100.00 A1 b MILH 1 100.01 Execution condition a b OFF ON OFF ON OFF ON ON Program section A1 Interlocked A2 Interlocked A3 Not interlocked Not interlocked Not interlocked Interlocked Not interlocked Not interlocked Not interlocked A2 MILC 1 A3 MILC 0 • Program with IL(002)/ILC(003) Interlocks a IL A1 b Execution condition a OFF ON ON IL A2 b Program section ON A1 Interlocked A2 Interlocked OFF OFF ON Not interlocked Not interlocked Interlocked Not interlocked A3 Not interlocked (Not controlled by the IL(002)/ILC(003) interlock.) ILC This program section is not controlled by the interlock. A3 ILC This ILC(003) instruction is ignored so ... • If there are bits which you want to remain ON in a program section interlocked by MILH(517) or MILR(518), set these bits to ON with SET just before the MILH(517) or MILR(518) instruction. CP1E CPU Unit Instructions Reference Manual(W483) 2-51 MILH/MILR/MILC MILC 2 Instructions Sample program When W0.00 and W0.01 are both ON, the instructions between MILH(517) with interlock number 0 and MILC(519) with interlock number 0 are executed normally. When W0.00 is OFF, the instructions between MILH(517) with interlock number 0 and MILC(519) with interlock number 0 are interlocked. When W0.00 is ON and W0.01 are OFF, the instructions between MILH(517) with interlock number 1 and MILC(519) with interlock number 1 are interlocked. The other instructions are executed normally. i W0.00 and W0.01 both ON W0.00 W0.00 OFF W0.00 ON and W0.01 OFF MILH 0 100.00 0.01 Executed normally. 2.00 OFF W0.01 MILH 1 100.01 0.02 H0 SET Executed normally. OFF Held Outputs interlocked. Outputs interlocked. 0.03 MILC 1 CNT 1 #0010 Held Executed normally. MILC 0 2-52 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic JUMP Variations JMP --- Function code Function 004 When the execution condition for JMP(004) is OFF, program execution jumps directly to the first JME(005) in the program with the same jump number. CONDITIONAL JUMP CJP --- 510 When the execution condition for CJP(510) is ON, program execution jumps directly to the first JME(005) in the program with the same jump number. JUMP END JME --- 005 Indicates the end position of a jump by JMP or CJP instruction. JME JME(005) JMP(004) N:Jump number N N N: Jump number Symbol CJP CJP(510) N: Jump number N Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage Not allowed OK OK Operands Operand Description N Data type Size UINT 1 Jump number N: Jump Number The jump number must be 0000 to 007F (&0 to &127 decimal).  Operand Specifications Word addresses Indirect DM addresses Area JMP/CJP N JME N CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK --- --- --- --- --- --- --- --- --- Constants CF Pulse bits TR bits OK --- --- --- Flags  JMP/CJP Name Error Flag Label P_ER Operation • ON if N is not within the specified range of 0000 to 007F. • ON if there is a JMP(004) in the program without a JME(005) with the same jump number. • OFF in all other cases.  JME There are no flags affected by this instruction. CP1E CPU Unit Instructions Reference Manual(W483) 2 JMP/CJP/JME JMP Sequence Control Instructions JMP/CJP/JME 2-53 2 Instructions Function  JMP When the execution condition for JMP(004) is ON, no jump is made and the program is executed consecutively as written. When the execution condition for JMP(004) is OFF, program execution jumps directly to the first JME(005) in the program with the same jump number. The instructions between JMP(004) and JME(005) are not executed, so the status of outputs between JMP(004) and JME(005) is maintained. In block programs, the instructions between JMP(004) and JME(005) are skipped regardless of the status of the execution condition.  CJP Execution condition OFF When the execution condition for CJP(510) is OFF, no jump is made and the program is executed consecutively as written. When the execution condition for CJP(510) is ON, program execution jumps directly to the first JME(005) in the program with the same jump number. Execution condition ON OFF JMP Instructions jumped N Instructions in this section are not executed and output status is maintained. The instruction execution time for these instructions is eliminated. Instructions executed JME N Execution condition ON Instructions jumped CJP N Instructions in this section are not executed and output status is maintained. The instruction execution time for these instructions is eliminated. Instructions executed JME N Hint • Because all of instructions between JMP(004)/CJP(510) and JME(005) are skipped when the execution condition for JMP(004) is OFF, the cycle time is reduced by the total execution time of the skipped instructions. In contrast, processing time equivalent to NOP(000) processing is required for instructions between JMP0(515) and JME0(516), so the cycle time is not reduced as much with those jump instructions. • The following table compares the various jump instructions. JMP(004) JME(005) Item Execution condition for jump Number allowed OFF 128 Instruction processing when jumped Instruction execution time when jumped Status of outputs (bits and words) when jumped Status of operating timers when jumped Processing in block programs Not executed. CJP(510) JME(005) ON None Bits and words maintain their previous status. Operating timers continue timing. Always jump. Jump when ON. Precautions • All of the outputs (bits and words) in jumped instructions retain their previous status. Operating timers (TIM, TIMX(550), TIMH(015), TIMHX(551), TMHH(540) and TMHHX(552)) continue timing because the PVs are updated even when the timer instruction is not being executed. 2-54 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions JME N Program section A is executed repeatedly as long as execution condition a is OFF. A Sample program When CIO 0.00 is OFF in the right example, the instructions between JMP(004) and JME(005) are not executed and the outputs maintain their previous status. When CIO 0.00 is ON in the right example, the instructions between JMP(004) and JME(005) are executed normally. 0.00 JMP &1 &1 CIO 0.00 ON Normal execution TIM CIO 0.00 OFF Instructions not executed. (Outputs remain unchanged.) SET CNT JME &1 CP1E CPU Unit Instructions Reference Manual(W483) 2-55 2 JMP/CJP/JME • CJP(510) jumps to the first JME(005) when the execution condition is ON and JMP(004) jumps JMP a to the first JME(005) when the execution condiN tion is OFF. • When JME(005) precedes JMP(004)/CJP(510) in the program, the instructions between JME(005) and JMP(004)/CJP(510) will be executed repeatedly as long as the execution condition for JMP(004)/CJP(510) is OFF. A Cycle Time Too Long error will occur if the execution condition is not turned ON or END(001) is not executed within the maximum cycle time. • The operation of DIFU(013), DIFD(014), and differentiated instructions is not dependent solely on the status of the execution condition when they are programmed between JMP(004)/CJP(510) and JME(005). When DIFU(013), DIFD(014), or a differentiated instruction is executed in an jumped section immediately after the execution condition for the JMP(004)/CJP(510) has gone ON, the execution condition for the DIFU(013), DIFD(014), or differentiated instruction will be compared to the execution condition that existed before the jump became effective (i.e., before the execution condition for JMP(004) went OFF). Sequence Control Instructions • When there are two or more JME(005) instructions with the same jump number, only the instruction with the lower address will be valid. The JME(005) with the higher program address will be ignored. 2 Instructions FOR/NEXT Variations Function code FOR --- 512 NEXT --- 513 Instruction Mnemonic Function The instructions between FOR(512) and NEXT(513) are repeated a specified number of times. --- FOR NEXT NEXT(513) FOR(512) Symbol N: Number of loops N Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage --- OK OK Operands Operand Description N Data type Size UINT 1 Number of loops N: Number of loops The number of loops must be 0000 to FFFF (0 to 65,535 decimal).  Operand Specifications Word addresses Indirect DM addresses Area N CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits OK --- --- --- Flags Name Label Operation Error Flag P_ER • ON if more than 15 loops are nested. Equals Flag P_EQ OFF Negative Flag P_N OFF • OFF in all other cases. Function The instructions between FOR(512) and NEXT(513) are executed N times and then program execution continues with the instruction after NEXT(513). The BREAK(514) instruction can be used to cancel the loop. If N is set to 0, the instructions between FOR(512) and NEXT(513) are processed as NOP(000) instructions. Loops can be used to process tables of data with a minimum amount of programming. 2-56 FOR Repeated N times N Repeated program section NEXT CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Hint • FOR-NEXT Loop with BREAK Start a FOR-NEXT loop with a maximum of N repetitions. Program BREAK(514) within the loop with the desired execution condition. The loop will end before N repetitions if the execution condition is input. • JME(005)-JMP(004) Loop Program a loop with JME(005) before JMP(004). The instructions between JME(005) and JMP(004) will be executed repeatedly as long as the execution condition for JMP(004) is OFF. (A Cycle Time Too Long error will occur if the execution condition is not turned ON or END(001) is not executed within the maximum cycle time.) 2 Precautions • If a loop repeats in one cycle and a differentiated instruction is used in the FOR-NEXT loop, that instruction will be executed only once.It is not executed the number of loops. • UP(521),DOWN(522) • DIFU(013),DIFD(014) • Differentiated up instruction(Differentiation variation:@) • Differentiated down instruction(Differentiation variation:%) • FOR-NEXT loops can be nested up to 15 levels. FOR &3 A FOR &2 B NEXT C NEXT In the example above, program sections A, B, and C are executed as follows: A → B → B → C, A → B → B → C, and A → B → B → C • Use BREAK(514) to escape from a FOR-NEXT loop. Several BREAK(514) instructions (the number of levels nested) are required to escape from nested loops. • The remaining instructions in the loop after BREAK(514) are processed as NOP(000) instructions. 2-57 FOR/NEXT • Program FOR(512) and NEXT(513) in the same task. Execution will not be repeated if these instructions are not in the same task. CP1E CPU Unit Instructions Reference Manual(W483) Sequence Control Instructions There are two ways to repeat a program section until a given execution condition is input. 2 Instructions FOR FOR &3 &3 &3 Escapes from loop when condition a is ON. BREAK a FOR Remaining &2 instructions are processed as NEXT NOP(000). Breaks FOR-NEXT loop 2. 1 2 BREAK NEXT Breaks FOR-NEXT loop 1. BREAK NEXT • A jump instruction such as JMP(004) may be executed within a FOR-NEXT loop, but do not jump beyond the FOR-NEXT loop. • The following instructions cannot be used within FOR-NEXT loops: • STEP DEFINE and STEP START: STEP(008)/SNXT(009) Sample program FOR &3 Repeated 3 times. In the left example, the looped program section transfers the content of D100 to the address indicated in D200 and then increments the content of D200 by 1. MOV D100 @D200 MOV ++ D100 D0 D200 D1 D2 NEXT 2-58 D200 #0000 #0000 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction BREAK LOOP Mnemonic Variations BREAK --- Function code 514 Function Programmed in a FOR-NEXT loop to cancel the execution of the loop for a given execution condition. The remaining instructions in the loop are processed as NOP(000) instructions. BREAK Symbol BREAK(514) Sequence Control Instructions BREAK 2 Applicable Program Areas Step program areas Subroutines Interrupt tasks Usage --- OK OK BREAK Area Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ OFF Negative Flag P_N OFF Function Program BREAK(514) between FOR(512) and NEXT(513) to cancel the FOR-NEXT loop when BREAK(514) is executed. When BREAK(514) is executed, the rest of the instructions up to NEXT(513) are processed as NOP(000). Condition a ON N repetitions FOR N BREAK Repetitions forced to end. a Processed as NOP(000). NEXT Precautions • A BREAK(514) instruction cancels only one loop, so several BREAK(514) instructions (the number of levels nested) are required to escape from nested loops. • BREAK(514) can be used only in a FOR-NEXT loop. CP1E CPU Unit Instructions Reference Manual(W483) 2-59 2 Instructions Timer and Counter Instructions Refresh Methods for Timer/Counter PV  Overview There are two PV refresh methods for instructions related to timer/counters, “BCD” and “BINARY”. Method Description BCD Binary Setting range Set value Sets the timer set value in BCD. 0~9.999 #0000~9999 Sets the timer set value in BINARY. 0~65.535 &0~65535 or #0000~FFFF The PLC Setup for all of the timer/counter-related instructions. The refresh method is valid also when setting an SV indirectly (i.e., using the contents of memory word). (That is, the contents of the addressed word is taken as either BCD or binary data according to the refresh method that is set.)  Applicable Instructions Classification Timer/counter instructions Mnemonic Instruction BCD Binary HUNDRED-MS TIMER TIM TIMX(550) TEN-MS TIMER TIMH(015) TIMHX(551) ONE-MS TIMER TMHH(540) TMHHX(552) ACCUMULATIVE TIMER TTIM(087) TTIMX(555) LONG TIMER TIML(542) TIMLX(553) COUNTER CNT CNTX(546) REVERSIBLE COUNTER CNTR(012) CNTRX(548) RESET TIMER/COUNTER CNR(545) CNRX(547)  Setting method for PV refresh BCD and binary PV refreshing can both be used in the same project. The setting of the PV refresh method in the PLC Setup will be ignored.  Basic Timer Specifications Item TIM/TIMX (550) TIMH(015)/ TIMHX(551) TMHH(540)/ TMHHX(552) TTIM(087)/ TTIMX(555) TIML(542)/ TIMLX(553) Timing method Decrementing Decrementing Decrementing Incrementing Decrementing Timing units 100 ms 10 ms 1 ms 100 ms 100 ms TIM: 999.9 s TIMH: 99.99 s TMHH: 9.999 s TTIM: 999.9 s TIML:115 days TIMX: 6,553.5 s TIMHX: 655.35 s TMHHX: 65.535 s TTIMX: 6,553.5 s TIMLX: 49,710 days Outputs/instruction 1 1 1 1 1 Timer numbers Used Used Used Used Not used Completion Flag refreshing When the instruction is executed When the instruction is executed When the instruction is executed When the instruction is executed When the instruction is executed Timer PV refreshing (See note) When the instruction is executed When the instruction is executed When the instruction is executed When the instruction is executed When the instruction is executed Completion Flags OFF OFF OFF OFF OFF PVs SV SV SV 0 SV Maximum SV Value after reset 2-60 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Item TIM/TIMX (550) TIMH(015)/ TIMHX(551) TMHH(540)/ TMHHX(552) TTIM(087)/ TTIMX(555) TIML(542)/ TIMLX(553) Operating mode change PV = 0 Completion Flag = OFF --- Power interrupt/reset PV = 0 Completion Flag = OFF --- Execution of CNR(545)/CNRX(547) Binary: PV = FFFF, Completion Flag = OFF BCD: PV = FFFF or 9999, Completion Flag = OFF Not applicable Operation in jumped program section (JMP(004)-JME(005)) Operating timers continue timing. Timer status is maintained. Operation in interlocked program section (IL(002)-ILC(003)) PV = SV Completion Flag = OFF Timer status maintained. PV = SV Completion Flag = OFF Completion Flag ON --- PVs Set to 0. --- Completion Flags OFF --- PVs Reset to SV. Forced set Forced reset CP1E CPU Unit Instructions Reference Manual(W483) Set to 0. --- 2-61 Timer and Counter Instructions  Operating Mode 2 2 Instructions  Example Timer and Counter Applications Example 1: Long-term Timers The following program examples show three ways to create long-term timers with standard TIM and CNT instructions. 1) Two TIM Instructions In this example, two TIM instructions are combined to make a 30-minute timer. 0.00 (900 seconds) TIM Instruction Operands 0001 LD 0.00 #9000 TM 1 T0001 #9000 (900 seconds) TIM LD 0002 #9000 100.00 T0002 T0001 TM 2 #9000 LD T000 OUT 100.00 2) TIM and CNT Instructions In this example, a TIM instruction and a CNT instruction are combined to make a 500-second timer. TIM 0001 generates a pulse every 5 s and CNT 0002 counts these pulses. The set value for this combination is the timer interval × counter SV. In this case, the timer SV would be 5 s × 100 = 500 s. With this combination, the long-term timer’s PV is actually the PV of a counter, which is maintained through power interruptions. 100.00 CNT (100 times) 0002 #0100 0.01 Instruction Operands LD 100.00 LD 0.01 CNT 2 #0100 0.00 100.00 C0002 LD 0.00 AND NOT 100.00 0001 AND NOT C0002 #0050 TIM TIM Start Count up (5 seconds) 100.00 T0001 100.01 C0002 1 #0050 LD T0001 OUT 100.00 LD C0002 OUT 100.01 3) Clock Pulse and CNT Instruction In this example, a CNT instruction counts the pulses from the 1-s clock pulse to make a 700-second timer. If the First Cycle Flag (A200.11) is ORed with the counter’s reset input (CIO 0.01), the counter’s PV will be reset to the SV (0700) when program execution begins rather than resuming the count from the previous PV. 0.00 P_1s (1-s clock) CNT 0001 0.01 #0700 Instruction Operands LD 0.00 AND 1s LD NOT 0.01 CNT A200.11 1 #0700 C0001 C0001 2-62 100.02 100.02 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Example 2: Two-stage Counter 0.00 0.01 CNT Instruction Operands LD 0.00 (100 times) 0001 0.02 AND 0.01 LD NOT 0.02 OR C0001 OR C0002 #0100 C0001 CNT 1 C0002 #0100 C0001 CNT LD C0001 LD NOT 0.02 (200 times) CNT #0200 #0200 100.03 C0002 2 2 0002 0.02 LD C0002 OUT 100.03 Example 3: ON/OFF Delay In this example two TIM timers are combined with KEEP(011) to make an ON delay and an OFF delay. CIO 5.00 will be turned ON 5.0 seconds after CIO 0.00 goes ON and it will be turned OFF 3.0 seconds after CIO 0.00 goes OFF. 0.00 Instruction Operands 0001 LD 0.00 #0050 TIM TIM 5.00 1 #0050 0.00 TIM 0002 #0030 LD 5.00 LD NOT 0.00 TIM 2 #0030 T0001 LD T0002 T0001 KEEP LD T0002 100.05 KEEP(011) 100.05 0.00 100.05 5.0 s 3.0 s CP1E CPU Unit Instructions Reference Manual(W483) Timer and Counter Instructions When an SV higher than 9999 is required, two counters can be combined as shown in the following example. In this case, two CNT instructions are combined to make a BCD counter with an SV of 20,000. 2-63 2 Instructions Example 4: One-shot Bit A TIM timer can be combined with OUT or OUT NOT to control how long a particular bit is ON or OFF. In this example, CIO 2.04 will be ON for 1.5 seconds (the SV of T0001) after CIO 0.00 goes ON. 10.00 0.00 10.00 Instruction 0.00 LD 10.00 AND NOT 100.00 100.00 OR LD -- OUT 10.00 0001 LD 10.00 #0015 TIM 10.00 TIM (1.5seconds) 1 #0015 100.00 T0001 10.00 Operands LD 100.04 100.00 LD T0001 OUT 100.00 LD 10.00 AND NOT 100.00 OUT 100.04 0.00 100.04 1.5 s 1.5 s Example 5: Flicker Bit 1) Two TIM Instructions Two TIM timers can be combined to make a bit turn ON and OFF at regular intervals while the execution condition is ON. In this example, CIO 2.05 will be OFF for 1.0 second and then ON for 1.5 seconds as long as CIO 0.00 is ON. 0.00 T0002 Instruction TIM (1 second) 0001 #0010 Operands LD 0.00 AND LD T0002 TIM 1 #0010 2.05 TIM 0002 (1.5 seconds) LD TIM 100.05 2 #0015 #0015 T0001 2.05 LD T0001 OUT 100.05 0.00 100.05 1.0 s 2-64 1.5 s 1.0 s 1.5 s CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions 2) Clock Pulse 0.00 P. 1s (1-s clock pulse) 0.00 100.06 Instruction Operands LD 0.00 AND 1s OUT 100.06 • The internal clock pulse (0.1 s, 0.2 s, 1 s) can be used to easily program a flicker circuit. 1s A B Timer and Counter Instructions The desired execution condition can be combined with a clock pulse to mimic the clock pulse (0.1 s, 0.2 s, or 1.0 s). 100.06 2 A,B=0.5s  Timer reset method There are two methods for resetting a timer instruction. 1. Turn OFF the execution condition for the timer instruction. The timer will be reset when its execution condition turns OFF. The timer will start timing again when its execution condition turns ON. With this method, a timer cannot be reset and then restarted within the same cycle. 0.01 TIM 0010 When CIO 0.01 turns ON, the timer starts timing. When CIO 0.01 turns OFF, the timer is reset. #100 Timer input CIO 0.01 ON OFF Timer PV T0010 Completion Flag T0010 The timer cannot be reset and then restarted within the same cycle. ON OFF 2. Use the RESET TIMER/COUNTER instruction. The specified instruction will be reset when the RESET TIMER/COUNTER instruction (CNR/CNRX) is executed. CP1E CPU Unit Instructions Reference Manual(W483) 2-65 2 Instructions TIM/TIMX Instruction Mnemonic HUNDRED-MS TIMER Variations Function code Function --- 550 TIM or TIMX(550) operates a decrementing timer with units of 0.1-s. TIM/TIMX TIM TIMX BCD Binary TIMX(550) TIM Symbol N N:Timer number S S: Set value N N: Timer number S S: Set value Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Data type Operand Description Size TIM TIMX N Timer Number TIMER TIMER 1 S Set Value WORD UINT 1 N: Timer Number The timer number must be between 0000 and 0255 (decimal). S: Set Value (100-ms Units) TIM (BCD): #0000 to #9999. TIMX (Binary): &0 to &65535 (decimal) or #0000 to #FFFF (hex).  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR N --- --- --- --- S OK OK OK OK T C DM @DM CF Pulse bits TR bits --- --- --- *DM --- --- --- --- --- OK OK OK OK OK OK Flags Name Error Flag Label P_ER Operation • ON if in BCD mode and S does not contain BCD data. • OFF in all other cases. 2-66 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • When the timer input is OFF, the timer specified by N is reset, i.e., the timer’s PV is reset to the SV and its Completion Flag is turned OFF. • When the timer input goes from OFF to ON, TIM/TIMX(550) starts decrementing the PV. The PV will continue timing down as long as the timer input remains ON and the timer’s Completion Flag will be turned ON when the PV reaches 0. • The setting range for the set value (SV) is 0 to 999.9 s for TIM and 0 to 6,553.5 s for TIMX(550). ON OFF Timer input SV Timer PV 0 Completion Flag ON OFF The following timing chart shows the behavior of the timer’s PV and Completion Flag when the timer input is turned OFF before the timer times out. 2 TIM/TIMX • The status of the timer’s PV and Completion Flag will be maintained after the timer times out. To restart the timer, the timer input must be turned OFF and then ON again or the timer’s PV must be changed to a non-zero value (by MOV(021), for example). Timer and Counter Instructions Function ON OFF Timer input SV Timer PV 0 ON OFF Completion Flag • The timer accuracy is -0.01 to 0 s. Hint • A TIM/TIMX(550) instruction’s PV and Completion Flag can be refreshed in the following ways depending on the timer number that is used. Refresh timing Execution of TIM/TIMX(550) Description • The PV is updated every time that TIM/TIMX(550) is executed. • The Completion Flag is turned ON if the PV is 0. The Completion Flag is turned OFF if the PV is not 0. • Timers are reset (PV = SV, Completion Flag OFF) by power interruptions unless the IOM Hold Bit (A500.12) is ON and the bit is protected in the PLC Setup. It is also possible use a clock pulse bit and a counter instruction to program a timer that will retain its PV in the event of a power interruption, as shown in the following diagram. Execution condition 1-s clock pulse bit Count input CNT N Reset input S • When the timer set value is #0000, timeup occurs when the instruction is executed. Precautions • Timer numbers are shared with other timer instructions. If two timers share the same timer number, but are not used simultaneously, a duplication error will be generated when the program is checked, but the timers will operate normally. Timers which share the same timer number will not operate properly if they are used simultaneously. • Timers will not operate properly when the CPU Unit cycle time exceeds 4s. Use timer instructions when the cycle time is no longer than 4s. • Timers will be reset or paused in the following cases. (When a timer is reset, its PV is reset to the SV and its Completion Flag is turned OFF.) CP1E CPU Unit Instructions Reference Manual(W483) 2-67 2 Instructions Condition PV Completion Flag Operating mode changed from RUN or MONITOR mode to PROGRAM mode or vice versa.*1 0 OFF Power off and reset 0 OFF Execution of CNR(545)/CNRX(547), the RESET TIMER/COUNTER instructions*2 BCD: 9999 Binary: FFFF OFF Operation in interlocked program section (IL(002)–ILC(003)) Reset to SV. OFF Operation in jumped program section (JMP(004)–JME(005)) Retains previous status. Retains previous status. *1 If the IOM Hold Bit (A500.12) has been turned ON, the status of timer Completion Flags and PVs will be maintained when the operating mode is changed. *2 The PV will be set to the SV when TIM/TIMX(550) is executed. • When TIM/TIMX(550) is in a program section between IL(002) and ILC(003) and the program section is interlocked, the PV will be reset to the SV and the Completion Flag will be turned OFF. • When an operating TIM/TIMX(550) timer is in a jumped program section (JMP(004), CJP(510), JME(005)), the timer’s PV will not be refreshed. • When a TIM/TIMX(550) timer is forced set, its Completion Flag will be turned ON and its PV will be set to 0000. When a TIM/TIMX(550) timer is forced reset, its Completion Flag will be turned OFF and its PV will be reset to the SV. • The timer’s Completion Flag is refreshed only when TIM/TIMX(550) is executed, so a delay of up to one cycle may be required for the Completion Flag to be turned ON after the timer times out. • If online editing is used to overwrite a timer instruction, always reset the Completion Flag. The timer will not operate properly unless the Completion Flag is reset. Sample program When timer input CIO 0.00 goes from OFF to ON in the following example, the timer PV will begin counting down from the SV. Timer Completion Flag T0000 will be turned ON when the PV reaches 0. When CIO 0.00 goes OFF, the timer PV will be reset to the SV and the Completion Flag will be turned OFF. i 0.00 TIM 0000 or #0100 0.00 TIMX 0000 &0100 Timer input 0.00 Timer PV T0000 Timer Completion Flag T0000 2-68 ON OFF ON OFF 100 ON OFF CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Variations Function code TIMH --- 015 TIMHX --- 551 Instruction Mnemonic TEN-MS TIMER Function TIMH(015)/TIMHX(551) operates a decrementing timer with units of 10-ms. TIMH TIMHX BCD Binary TIMHX(551) TIMH(015) Symbol N N: Timer number N N: Timer number S S: Set value S S: Set value 2 Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed TIMH/TIMHX Applicable Program Areas Operands Data type Operand Description Size TIMH TIMHX N Timer Number TIMER TIMER 1 S Set Value WORD UINT 1 N: Timer Number The timer number must be between 0000 and 0255 (decimal). S: Set Value TIMH (BCD): #0000 to #9999 TIMHX (Binary): &0 to &65535 (decimal) or #0000 to #FFFF (hex)  Operand Specifications Word addresses Indirect DM addresses Area N Constants CIO WR HR AR --- --- --- --- T C DM @DM *DM --- --- --- --- --- OK OK OK OK OK OK S OK OK OK OK CF Pulse bits TR bits --- --- --- Flags Name Error Flag Label ER Operation • ON if in BCD mode and S does not contain BCD data. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) Timer and Counter Instructions TIMH/TIMHX 2-69 2 Instructions Function • When the timer input is OFF, the timer specified by N is reset, i.e., the timer’s PV is reset to the SV and its Completion Flag is turned OFF. • When the timer input goes from OFF to ON, TIMH(015)/TIMHX(551) starts decrementing the PV. The PV will continue timing down as long as the timer input remains ON and the timer’s Completion Flag will be turned ON when the PV reaches 0000. • The status of the timer’s PV and Completion Flag will be maintained after the timer times out. To restart the timer, the timer input must be turned OFF and then ON again or the timer’s PV must be changed to a non-zero value (by MOV(021), for example). • The setting range for the set value (SV) is 0 to 99.99 s for TIMH(015) and 0 to 655.35 s for TIMHX(551). • The timer accuracy is 0 to 0.01 s. Timer input ON OFF SV Timer PV 0 Completion Flag ON OFF The following timing chart shows the behavior of the timer’s PV and Completion Flag when the timer input is turned OFF before the timer times out. Timer input ON OFF SV Timer PV 0 Completion Flag ON OFF Hint A TIMH(015)/TIMHX(551) instruction’s PV and Completion Flag can be refreshed in the following ways depending on the timer number that is used. Refresh timing Execution of TIMH(015)/TIMHX(551) Description • The PV is updated every time that TIMH(015)/TIMHX(551) is executed. • The Completion Flag is turned ON if the PV is 0. The Completion Flag is turned OFF if the PV is not 0. Precautions • Timer numbers are shared with other timer instructions. If two timers share the same timer number, but are not used simultaneously, a duplication error will be generated when the program is checked, but the timers will operate normally. Timers which share the same timer number will not operate properly if they are used simultaneously. • Timers will not operate properly when the CPU Unit cycle time exceeds 4s. Use timer instructions when the cycle time is no longer than 4s. • Timers will be reset or paused in the following cases. (When a timer is reset, its PV is reset to the SV and its Completion Flag is turned OFF.) 2-70 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions PV Completion Flag 0 OFF Power off and reset 0 OFF Execution of CNR(545)/CNRX(547), the RESET TIMER/COUNTER instructions*2 BCD: 9999 Binary: FFFF OFF Operation in interlocked program section (IL(002)-ILC(003)) Reset to SV. OFF Operation in jumped program section Retains previous status. Retains previous status. (JMP(004)-JME(005)) Timer and Counter Instructions Condition Operating mode changed from RUN or MONITOR mode to PROGRAM mode or vice versa.*1 *1 If the IOM Hold Bit (A500.12) has been turned ON, the status of timer Completion Flags and PVs will be maintained when the operating mode is changed. 2 *2 The PV will be set to the SV when TIMH(015)/TIMHX(551) is executed. • When TIMH(015)/TIMHX(551) is in a program section between IL(002) and ILC(003) and the program section is interlocked, the PV will be reset to the SV and the Completion Flag will be turned OFF. • When a TIMH(015)/TIMHX(551) timer is forced set, its Completion Flag will be turned ON and its PV will be set to 0000. When a TIMH(015)/TIMHX(551) timer is forced reset, its Completion Flag will be turned OFF and its PV will be reset to the SV. • The timer’s Completion Flag is refreshed only when TIMH(015)/TIMHX(551) is executed, so a delay of up to one cycle may be required for the Completion Flag to be turned ON after the timer times out. • If online editing is used to overwrite a timer instruction, always reset the Completion Flag. The timer will not operate properly unless the Completion Flag is reset. Sample program When timer input CIO 0.00 goes from OFF to ON in the following example, the timer PV will begin counting down from the SV (#0064 = 100 = 1.00 s). The Timer Completion Flag, T0000, will be turned ON when the PV reaches 0. When CIO 0.00 goes OFF, the timer PV will be reset to the SV and the Completion Flag will be turned OFF. i 0.00 TIMH 0 #0100 Timer input 0.00 Timer PV T0000 100 (1.00 s) ON OFF 100 0 or 0.00 TIMHX Timer Completion Flag T0000 ON OFF 0 &100 CP1E CPU Unit Instructions Reference Manual(W483) 2-71 TIMH/TIMHX • When an operating TIMH(015)/TIMHX(551) timer is in a jumped program section (JMP(004), CJP(510), JME(005)), the timer’s PV will not be refreshed in the above case. 2 Instructions TMHH/TMHHX Instruction Variations Function code TMHH --- 540 TMHHX --- 552 Mnemonic ONE-MS TIMER Function TMHH(540)/TMHHX(552) operates a decrementing timer with units of 1-ms. TMHH TMHHX BCD Binary TMHHX(552) TMHH(540) Symbol N N: Timer number N N: Timer number S S: Set value S S: Set value Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Data type Operand Description Size TMHH TMHHX N Timer Number TIMER TIMER 1 S Set Value WORD UINT 1 N: Timer Number The timer must be between 0000 and 0015 decimal. S: Set Value TMHH (BCD): #0000 to #9999 TMHHX (Binary): &0 to &65535 (decimal) or #0000 to #FFFF (hex)  Operand Specifications Word addresses Indirect DM addresses Area Constants N CIO WR HR AR --- --- --- --- T C DM @DM *DM --- --- --- --- --- OK OK OK OK OK OK S OK OK OK OK CF Pulse bits TR bits --- --- --- Flags Name Error Flag Label P_ER Operation • ON if in BCD mode and S does not contain BCD data. • OFF in all other cases. Function • When the timer input is OFF, the timer specified by N is reset, i.e., the timer’s PV is reset to the SV and its Completion Flag is turned OFF. • When the timer input goes from OFF to ON, TMHH(540)/TMHHX(552) starts decrementing the PV. The PV will continue timing down as long as the timer input remains ON and the timer’s Completion Flag will be turned ON when the PV reaches 0000. • The status of the timer’s PV and Completion Flag will be maintained after the timer times out. To restart the timer, the timer input must be turned OFF and then ON again or the timer’s PV must be changed to a non-zero value (by MOV(021), for example). 2-72 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • The timer accuracy is -0.01 to 0 s. Hint The timer PV and timeup used in TMHH/TMHHX instructions are refreshed at the timing below. Refresh timing When each instruction is executed Description • The PV is updated every time that each instruction is executed. • The timeup flag is ON when the PV is 0 and OFF otherwise. Precautions • The Completion Flag is updated only when TMHH(540)/TMHHX(552) is executed. The Completion Flag can thus be delayed by up to one cycle time from the actual set value. • The present value of a timer will not be refreshed even if the task is on standby. • Timers will be reset or paused in the following cases. (When a timer is reset, its PV is reset to the SV and its Completion Flag is turned OFF.) Condition PV Completion Flag Operating mode changed from RUN or MONITOR mode to PROGRAM mode or vice versa.*1 0 OFF Power supply interrupted and reset 0 OFF Execution of CNR(545)/CNRX(547), the RESET TIMER/COUNTER instructions*2 BCD: 9999 Binary: FFFF OFF Operation in interlocked program section (IL(002)-ILC(003)) Reset to SV. OFF Operation in jumped program section Retains previous status. Retains previous status. (JMP(004)-JME(005)) *1 If the IOM Hold Bit (A500.12) has been turned ON, the status of timer Completion Flags and PVs will be maintained when the operating mode is changed. *2 The PV will be set to the SV when TMHH(540)/TMHHX(552) is executed. • The present value of all operating timers will not be refreshed even if the timer is in a program section that is jumped using JMP(004), CJP(510), JME(005). • When TMHH(540)/TMHHX(552) is in a program section between IL(002) and ILC(003) and the program section is interlocked, the PV will be reset to the SV and the Completion Flag will be turned OFF. • When a TMHH(540)/TMHHX(552) timer is forced set, its Completion Flag will be turned ON and its PV will be set to 0. When a TMHH(540)/TMHHX(552) timer is forced reset, its Completion Flag will be turned OFF and its PV will be reset to the SV. • If online editing is used to overwrite a timer instruction, always reset the Completion Flag. The timer will not operate properly unless the Completion Flag is reset. CP1E CPU Unit Instructions Reference Manual(W483) 2-73 2 TMHH/TMHHX • Timer numbers are shared with other timer instructions. If two timers share the same timer number, but are not used simultaneously, a duplication error will be generated when the program is checked, but the timers will operate normally. Timers which share the same timer number will not operate properly if they are used simultaneously. Timer and Counter Instructions • The setting range for the set value (SV) is 0 to 9.999 s for TMHH(540) and 0 to 65.535 for TMHHX(552). 2 Instructions TTIM/TTIMX Instruction Variations Function code TTIM --- 087 TTIMX --- 555 Mnemonic ACCUMULATIVE TIMER Function TTIM(087)/TTIMX(555) operates an incrementing timer with units of 0.1-s. TTIM TTIMX BCD Binary Timer input Timer input TTIM(087) Symbol TTIMX(555) N N: Timer number S S: Set value Reset input N N: Timer number S S: Set value Reset input Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Data type Operand Description Size TTIM TTIMX N Timer Number TIMER TIMER 1 S Set Value WORD UINT 1 N: Timer Number The timer number must be between 0000 to 0255 (decimal). S: Set Value TTIM (BCD): #0000 to #9999 TTIMX (Binary): &0 to &65535 (decimal) or #0000 to #FFFF (hex)  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR N --- --- --- --- S OK OK OK OK T C DM @DM CF Pulse bits TR bits --- --- --- *DM --- --- --- --- --- OK OK OK OK OK OK Flags Name Error Flag Label P_ER Operation • ON if in BCD mode and S does not contain BCD data. • OFF in all other cases. 2-74 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • When the timer input is ON, TTIM(087)/TTIMX(555) increments the PV. When the timer input goes OFF, the timer will stop incrementing the PV, but the PV will retain its value. The PV will resume timing when the timer input goes ON again. The timer’s Completion Flag will be turned ON when the PV reaches the SV. SV Timer PV Timing resumes. PV maintained. 0 Completion Flag ON OFF Reset input ON OFF 2 TTIM/TTIMX • The status of the timer’s PV and Completion Flag will be maintained after the timer times out. There are three ways to restart the timer: the timer’s PV can be changed to a non-zero value (by MOV(021), for example), the reset input can be turned ON, or CNR(545)/CNRX(547) can be executed. ON OFF Timer input • The setting range for the set value (SV) is 0 to 999.9 s for TTIM(087) and 0 to 6,553.5 s for TTIMX(555). • The timer accuracy is 0 to 0.01 s. Hint • Typical timers such as TIM/TIMX(550) are decrementing counters and the PV shows the time remaining until the timer times out. The PV of TTIM(087)/TTIMX(555) shows how much time has elapsed, so the PV can be used unchanged in many calculations and display outputs. Precautions • Timer numbers are shared with other timer instructions. If two timers share the same timer number, but are not used simultaneously, a duplication error will be generated when the program is checked, but the timers will operate normally. Timers which share the same timer number will not operate properly if they are used simultaneously. • Timers will be reset or paused in the following cases. (When a TTIM(087)/TTIMX(555) timer is reset, its PV is reset to 0 and its Completion Flag is turned OFF.) Condition PV Completion Flag Operating mode changed from RUN or MONITOR mode to PROGRAM mode or vice versa.*1 0 OFF Power supply interrupted and reset 0 OFF Execution of CNR(545)/CNRX(547), the RESET TIMER/COUNTER instructions*2 BCD: 9999 Binary: FFFF OFF Operation in interlocked program section (IL(002)-ILC(003)) Retains previous status. Retains previous status. Operation in jumped program section Retains previous status. Retains previous status. (JMP(004)-JME(005)) *1 If the IOM Hold Bit (A500.12) has been turned ON, the status of timer Completion Flags and PVs will be maintained when the operating mode is changed. *2 The PV will be set to the SV when TTIM(087)/TTIMX(555) is executed. • When TTIM(087)/TTIMX(555) is in a program section between IL(002) and ILC(003) and the program section is interlocked, the PV will retain its previous value (it will not be reset). Be sure to take this fact into account when TTIM(087)/TTIMX(555) is programmed between IL(002) and ILC(003). • When an operating TTIM(087)/TTIMX(555) timer is in a program section between JMP(004) and JME(005) and the program section is jumped, the PV will retain its previous value. Be sure to take this fact into account when TTIM(087)/TTIMX(555) is programmed between JMP(004) and JME(005). CP1E CPU Unit Instructions Reference Manual(W483) Timer and Counter Instructions Function 2-75 2 Instructions • When a TTIM(087)/TTIMX(555) timer is forced set, its Completion Flag will be turned ON and its PV will be reset to 0. When a TTIM(087)/TTIMX(555) timer is forced reset, its Completion Flag will be turned OFF and its PV will be reset to 0. The forced set and forced reset operations take priority over the status of the timer and reset inputs. • The timer’s PV is refreshed only when TTIM(087)/TTIMX(555) is executed, so the timer will not operate properly when the cycle time exceeds 100 ms because the timer increments in 100-ms units. • The timer’s Completion Flag is refreshed only when TTIM(087)/TTIMX(555) is executed, so a delay of up to one cycle may be required for the Completion Flag to be turned ON after the timer times out. Sample program When timer input CIO 0.00 is ON in the following example, the timer PV will begin counting up from 0. Timer Completion Flag T0001 will be turned ON when the PV reaches the SV. If the reset input is turned ON, the timer PV will be reset to 0 and the Completion Flag (T0001) will be turned OFF. (Usually the reset input is turned ON to reset the timer and then the timer input is turned ON to start timing.) If the timer input is turned OFF before the SV is reached, the timer will stop timing but the PV will be maintained. The timer will resume from its previous PV when the timer input is turned ON again. 0.00 0.00 TTIM 0001 0.01 Timer input 0.00 Timer PV T0001 ON OFF #0100 TTIMX 0001 or #0100 0.01 &0100 ON OFF #0100 Timing resumes. PV maintained. Timer Completion Flag T0001 Reset input 2-76 0 0 ON OFF ON OFF ON OFF ON OFF CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Variations Function code TIML --- 542 TIMLX --- 553 Instruction Mnemonic LONG TIMER Function TIML(542)/TIMLX(553) operates a decrementing timer with units of 0.1s. TIML TIMLX BCD Binary TIML(542) Symbol TIMLX(553) D1 D1: Completion Flag D1 D1: Completion Flag D2 D2: PV word D2 D2: PV word S S S: SV word TIML/TIMLX Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Data type Description Size TIML TIMLX D1 Completion Flag WORD UINT 1 D2 PV word DWORD UDINT 2 S SV word DWORD UDINT 2 D1: Completion Flag The PV and SV can range from #00000000 to #99999999 for TIML(542) and &00000000 to &4294967294 (decimal) or #00000000 to #FFFFFFFF (hexadecimal) for TIMLX(553). 0 15 D1 Do not use. Completion Flag D2: PV Word D2+1 D2 D2 Note S, S+1, D2 and D2+1 must be in the same data area. D2+1 is the leftmost 4 digits, D2 is the rightmost 4 digits S: SV Word S+1 S S S+1 is the leftmost 4 digits, S is the rightmost 4 digits  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR OK OK OK OK D1,D2 S T C --- --- OK OK DM @DM *DM OK OK OK CF Pulse bits TR bits --- --- --- --OK Flags Name Error Flag Label P_ER Operation • ON if in BCD mode and D2 does not contained BCD data. • ON if in BCD mode and S does not contained BCD data. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2 S: SV word Applicable Program Areas Operand Timer and Counter Instructions TIML/TIMLX 2-77 2 Instructions Function • When the timer input is OFF, the timer is reset, i.e., the timer’s PV is reset to the SV and its Completion Flag is turned OFF. • When the timer input goes from OFF to ON, TIML(542)/TIMLX(553) starts decrementing the PV in D2+1 and D2. The PV will continue timing down as long as the timer input remains ON and the timer’s Completion Flag will be turned ON when the PV reaches 0. Timer input ON OFF SV Timer PV 0 Completion Flag (Bit 00 of D1) ON OFF • The status of the timer’s PV and Completion Flag will be maintained after the timer times out. To restart the timer, the timer input must be turned OFF and then ON again or the timer’s PV must be changed to a non-zero value (by MOV(021), for example). • TIML(542)/TIMLX(553) can time up to 115 days for TIML(542) and 4,971 days for TIMLX(553). • The timer accuracy is 0 to 0.01 s. Precautions • Unlike most timers, TIML(542)/TIMLX(553) does not use a timer number. (Timer area PV refreshing is not performed for TIML(542)/TIMLX(553).) • Since the Completion Flag for TIML(542)/TIMLX(553) is in a data area it can be forced set or forced reset like other bits, but the PV will not change. • The timer’s PV is refreshed only when TIML(542)/TIMLX(553) is executed, so the timer will not operate properly when the cycle time exceeds 100 ms because the timer increments in 100-ms units. • The timer’s Completion Flag is refreshed only when TIML(542)/TIMLX(553) is executed, so a delay of up to one cycle may be required for the Completion Flag to be turned ON after the timer times out. • When TIML(542)/TIMLX(553) is in a program section between IL(002) and ILC(003) and the program section is interlocked, the PV will be reset to the SV and the Completion Flag will be turned OFF. • When an operating TIML(542)/TIMLX(553) timer is in a program section between JMP(004) and JME(005) and the program section is jumped, the PV will retain its previous value. Be sure to take this fact into account when TIML(542)/TIMLX(553) is programmed between JMP(004) and JME(005). • Be sure that the words specified for the Completion Flag and PV (D1, D2, and D2+1) are not used in other instructions. If these words are affected by other instructions, the timer might not time out properly. 2-78 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions When timer input CIO 0.00 is ON in the following example, the timer PV (in D201 and D200) will be set to the SV (in D101 and D100) and the PV will begin counting down. The timer Completion Flag (CIO 200.00) will be turned ON when the PV reaches 0. When CIO 0.00 goes OFF, the timer PV will be reset to the SV and the Completion Flag will be turned OFF. 0.00 TIML D1 200 D2 D100 S D200 ON OFF Timer input Timer SV S: D200 and up S+1: Content of D201 1000.00 Timer and Counter Instructions Sample program 2 Timer PV (D101 and D100) 0 TIML/TIMLX ON Timer Completion OFF Flag (CIO 200.00) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D1:200 Timer Completion Flag (CIO 0200.00) 15 0 D2:D100 Timer’s PV (LSB) D101 Timer’s PV (MSB) CP1E CPU Unit Instructions Reference Manual(W483) D201 D200 #0010 #0000 Timer SV: (100,000 decimal= 10,000 s) 2-79 2 Instructions CNT/CNTX Instruction Mnemonic COUNTER Variations Function code --- 546 CNT/CNTX Function CNT/CNTX(546) operates a decrementing counter. CNT CNTX BCD Binary Count input Count input Symbol CNTX(546) CNT Reset input N N: Counter number S S: Set value Reset input N N: Counter number S S: Set value Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Description N Counter Number S Set Value Size CNT CNTX COUNTER COUNTER 1 WORD UINT 1 N: Counter Number The counter number must be between 0000 and 0255 (decimal). S: Set Value CNT (BCD): #0000 to #9999 CNTX (Binary): &0 to &65535 (decimal) or #0000 to #FFFF (hex)  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T N --- --- --- --- --- S OK OK OK OK OK C DM @DM CF Pulse bits TR bits *DM --- --- --- --- --- --- OK OK OK OK OK OK OK --- Flags Name Error Flag Label P_ER Operation • ON if in BCD mode and S does not contain BCD data. • OFF in all other cases. 2-80 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • The counter PV is decremented by 1 every time that the count input goes from OFF to ON. The Completion Flag is turned ON when the PV reaches 0. • Once the Completion Flag is turned ON, reset the counter by turning the reset input ON or by using the CNR(545)/CNRX(547) instruction. Otherwise, the counter cannot be restarted. Timer and Counter Instructions Function ON Count input OFF ON Reset input Counter PV OFF SV 0 Completion Flag ON • The counter is reset and the count input is OFF ignored when the reset input is ON. (When a counter is reset, its PV is reset to the SV and the Completion Flag is turned OFF.) • The setting range 0 to 9,999 for CNT and 0 to 65,535 for CNTX(546). 2 CNT/CNTX Hint • Counter PVs are retained even through a power interruption. If you want to restart counting from the SV instead of resuming the count from the retained PV, add the First Cycle Flag (A200.11) as a reset input to the counter. CNT N S First Cycle Flag (A200.11) Note 1 In case CP1E CPU Unit is backed up in the capacitor and power remained OFF for a period in excess of the following, the Counters PVs and Countup Flags are unfixed. E-type CPU Unit 9 hours (60°C), 50 hours (25°C) N/NA-type CPU Unit 7 hours (60°C), 40 hours (25°C) 2 By setting “Zero Clear Holding Memory” for the PLC Setup, the Counters PVs and Countup Flags will be cleared each time power turns ON. In this case, the DM area (D) and Holding Area (H) will be cleared at the same time. 3 N/NA-type CP1E CPU Unit (CP1E-N/NAD-) can be equipped with a battery. With the battery installed, the Counters PVs and Countup Flags can be retained during power OFF. Precautions • Counter numbers are shared by the CNT, CNTX(546), CNTR(012) and CNTRX(548) instructions. If two counters share the same counter number but are not used simultaneously, a duplication error will be generated when the program is checked but the counters will operate normally. Counters which share the same counter number will not operate properly if they are used simultaneously. • A counter’s PV is refreshed when the count input goes from OFF to ON and the Completion Flag is refreshed each time that CNT/CNTX(546) is executed. The Completion Flag is turned ON if the PV is 0 and it is turned OFF if the PV is not 0. CP1E CPU Unit Instructions Reference Manual(W483) 2-81 2 Instructions • When a CNT/CNTX(546) counter is forced set, its Completion Flag will be turned ON and its PV will be reset to 0000. When a CNT/CNTX(546) counter is forced reset, its Completion Flag will be turned OFF and its PV will be set to the SV. • Be sure to reset the counter by turning the reset input from OFF → ON → OFF before beginning counting with the count input, as shown in the following diagram. The count input will not be received if the reset input is ON. Reset input ON OFF Count input ON OFF SV Counter PV 0 Completion ON Flag OFF Ready to start counting • The reset input will take precedence and the counter will be reset if the reset input and count input are both ON at the same time. (The PV will be reset to the SV and the Completion Flag will be turned OFF.) ON Reset input OFF ON Count input OFF SV Counter PV 0 Completion Flag ON OFF Count input Reset input Count input can be takes can be precedence. received. received. • If online editing is used to add a counter, the counter must be reset before it will work properly. If the counter is not reset, the previous value will be used as the counter’s present value (PV), and the counter may not operate properly after it is written. 2-82 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Variations Function code CNTR --- 012 CNTRX --- 548 Instruction Mnemonic REVERSIBLE COUNTER Timer and Counter Instructions CNTR/CNTRX Function --- CNTR CNTRX BCD Binary Increment input Increment input CNTR(012) Symbol Decrement input Reset input CNTRX(548) N N: Counter number S S: Set value Decrement input Reset input N N: Counter number S S: Set value CNTR/CNTRX Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Description N Counter Number S Set Value Size CNTR CNTRX COUNTER COUNTER 1 WORD UINT 1 N: Counter Number The counter number must be between 0000 and 0255(decimal). S: Set Value CNTR (BCD):#0000 to #9999 CNTRX (Binary): &0 to &65535 (decimal) or #0000 to #FFFF (hex)  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T N --- --- --- --- --- S OK OK OK OK OK C DM @DM CF Pulse bits TR bits --- --- --- *DM --- --- --- --- OK OK OK OK OK Flags Name Error Flag Label P_ER Operation • ON if in BCD mode and S does not contain BCD data. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2 2-83 2 Instructions Function The counter PV is incremented by 1 every time that the increment input goes from OFF to ON and it is decremented by 1 every time that the decrement input goes from OFF to ON. The PV can fluctuate between 0 and the SV. When incrementing, the Completion Flag will be turned ON when the PV is incremented from the SV back to 0 and it will be turned OFF again when the PV is incremented from 0 to 1. When decrementing, the Completion Flag will be turned ON when the PV is decremented from 0 up to the SV and it will be turned OFF again when the PV is decremented from the SV to SV-1. Increment input Decrement input Counter PV 0 SV Counter PV 0 Completion Flag +1 ON OFF SV -1 Counter PV 0 ON Completion Flag OFF Precautions • Counter numbers are shared by the CNT, CNTX(546), CNTR(012) and CNTRX(548) instructions. If two counters share the same counter number but are not used simultaneously, a duplication error will be generated when the program is checked but the counters will operate normally. Counters which share the same counter number will not operate properly if they are used simultaneously. • The PV will not be changed if the increment and decrement inputs both go from OFF to ON at the same time. When the reset input is ON, the PV will be reset to 0 and both count inputs will be ignored. • The Completion Flag will be ON only when the PV has been incremented from the SV to 0 or decremented from 0 to the SV; it will be OFF in all other cases. • When inputting the CNTR(012)/CNTRX(548) instruction with mnemonics, first enter the increment input (II), then the decrement input (DI), the reset input (R), and finally the CNTR(012)/CNTRX(548) instruction. When entering with the ladder diagrams, first input the increment input (II), then the CNTR(012)/CNTRX(548) instruction, the decrement input (DI), and finally the reset input (R). Sample program The counter PV is reset to 0 by turning the reset input (CIO 0.02) ON and OFF. The PV is incremented by 1 each time that the increment input (CIO 0.00) goes from OFF to ON. When the PV is incremented from the SV (3), it is automatically reset to 0 and the Completion Flag is turned ON. Likewise, the PV is decremented by 1 each time that the decrement input (CIO 0.01) goes from OFF to ON. When the PV is decremented from 0, it is automatically set to the SV (3) and the Completion Flag is turned ON. 2-84 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Increment input 0.01 Decrement input Timer and Counter Instructions 0.00 CNTR 0.02 0001 #0003 Increment input 0.00 Reset input 0.01 0.02 OFF ON Decrement input OFF 0.01 or 0.00 ON Increment input Reset input 0.02 CNTRX ON OFF 0001 Decrement input &3 Counter PV C0001 2 SV 3 0 Reset input The add and subtract count inputs increase/decrease the count once when the signal rises (OFF to ON). When both inputs turn ON at the same time, neither increases/decreases the count. When the reset input turns ON, the PV changes to 0 and count input is not accepted. In the following example, the SV for CNTR(012) 0007 is determined by the content of CIO 0001. When the content of CIO 0001 is controlled by an external switch, the set value can be changed manually from the switch. 0.00 CNTR Fixed SV: 5000 0006 0.01 #5000 0.02 Instruction Operands LD 0.00 LD 0.01 LD 0.02 CNTR (012) 0006 LD 200.07 OUT 0.03 LD 0.04 #5000 200.07 C0006 0.03 CNTR SV: CIO 0001 0007 0.04 1 LD 0.05 LD 0007 CNTR (012) 1 LD NOT C0007 OUT 200.08 0.05 200.08 C0007 4999 5000 0 1 2 Increment input 1 0 5000 4999 Decrement input Completion Flag Roll-over Roll-over CP1E CPU Unit Instructions Reference Manual(W483) 2-85 CNTR/CNTRX ON Completion Flag OFF C0001 2 Instructions CNR/CNRX Instruction Mnemonic RESET TIMER/COUNTER Function code Variations CNR @CNR 545 CNRX @CNRX 547 Function Resets the timers or counters within the specified range of timer or counter numbers. CNR CNRX BCD Binary CNRX(547) CNR(545) Symbol N1 N1: First number in range N1 N1: First number in range N2 N2: Last number in range N2 N2: Last number in range Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Description Size CNT CNTX N1 First number in range TIMER/COUNTER*1 Variable N2 Last number in range TIMER/COUNTER*1 Variable N1: First Number in Range N1 must be a timer number between T000 and T255 or a counter number between C000 and C255. N2: Last Number in Range N2 must be a timer number between T000 and T255 or a counter number between C000 and C255.  Operand Specifications Word addresses Indirect DM addresses Area N1,N2 CIO WR HR AR T C DM @DM *DM --- --- --- --- OK OK --- --- --- Constants CF Pulse bits TR bits --- --- --- --- Flags Name Error Flag Label P_ER Operation • ON if N1 and N2 are not in the same data area. • OFF in all other cases. Function CNR(545)/CNRX(547) resets the Completion Flags of all timers or counters from N1 to N2. At the same time, the PVs will all be set to the maximum value (9999 for BCD and FFFF for binary). (The PV will be set to the SV the next time that the timer or counter instruction is executed.) 2-86 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • The timer/counter that is reset is as follows. Instructions reset TIM: TIMH(015): TMHH(540): TTIM(087): CNT: CNTR(012): Binary TIMX(550): TIMHX(551): TMHHX(552): TTIMX(555): CNTX(546): CNTRX(548): HUNDRED-MS TIMER TEN-MS TIMER ONE-MS TIMER ACCUMULATIVE TIMER COUNTER REVERSIBLE COUNTER The PV is set to its maximum value (9,999 BCD) and the Completion Flag is turned OFF. Instructions reset Operation of CNRX(547) HUNDRED-MS TIMER TEN-MS TIMER ONE-MS TIMER ACCUMULATIVE TIMER COUNTER REVERSIBLE COUNTER The PV is set to its maximum value (FFFF hex) and the Completion Flag is turned OFF. • The CNR(545)/CNRX(547) instructions do not reset TIML(542) and TIMLX(553), because these timers do not use timer numbers. • The CNR(545)/CNRX(547) instructions do not reset the timer/counter instructions themselves, they reset the PVs and Completion Flags allocated to those instructions. In most cases, the effect of CNR(545)/CNRX(547) is different from directly resetting the instructions. For example, when a TIM/TIMX(550) instruction is reset directly its PV is set to the SV, but when that timer is reset by CNR(545)/CNRX(547) its PV is set to the maximum value (9999 for BCD and FFFF for binary). • When N1 and N2 are specified with N1>N2, only the Completion Flag for the timer/counter number will be reset. Sample program 0.00 CNR T0002 T0005 When CIO 0.00 is ON in the following example, the Completion Flags for timers T0002 to T0005 are turned OFF and the timers’ PVs are set to the maximum value (9999 for BCD). 0.01 CNR C0003 C0007 When CIO 0.01 is ON, the Completion Flags for counters C0003 to C0007 are turned OFF and the counters’ PVs are set to the maximum value (9999 for BCD). 0.00 CNRX T0002 T0005 When CIO 0.00 is ON in the following example, the Completion Flags for timers T0002 to T0005 are turned OFF and the timers’ PVs are set to the maximum value (FFFF for binary). 0.01 CNRX C0003 C0007 When CIO 0.01 is ON, the Completion Flags for counters C0003 to C0007 are turned OFF and the counters’ PVs are set to the maximum value (FFFF for binary). T CP1E CPU Unit Instructions Reference Manual(W483) 2-87 2 CNR/CNRX BCD Operation of CNR(545) Timer and Counter Instructions Precautions 2 Instructions Comparison Instructions =, <>, <, <=, >, >= Instruction Mnemonic =, <>, <, <=, >, >= Input Comparison Instructions Function code Function 300 to 328 Input comparison instructions compare two values (constants and/or the contents of specified words) and create an ON execution condition when the comparison condition is true. Input comparison instructions are available to compare signed or unsigned data of one-word or double length data. Variations --- =, <>, <, <=, >, >= LD connection Symbol Mnemonic S1 AND connection S1: Comparison data 1 S2: Comparison data 2 Mnemonic S1 S2 OR connection S1: Comparison data 1 S2: Comparison data 2 S1: Comparison data 1 S2: Comparison data 2 Mnemonic S1 S2 S2 Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Description Size Unsigned Unsigned double length Signed Signed double length One-word Double length S1 Comparison data 1 UINT UDINT INT DINT 1 2 S2 Comparison data 2 UINT UDINT INT DINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area S1,S2 CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits OK --- --- --- Flags Operation Name Label Data length: one-word Data length: double length Error Flag P_ER OFF or unchanged Greater Than Flag P_GT • ON if S1 > S2 with one-word data. • ON if S1+1, S1 > S2+1, S2 with double-length data. • OFF in all other cases. • OFF in all other cases. • ON if S1 ≥ S2 with one-word data. • ON if S1+1, S1 ≥ S2+1, S2 with double-length data. • OFF in all other cases. • OFF in all other cases. Greater Than or Equal Flag Equal Flag Not Equal Flag 2-88 P_GE P_EQ P_NE OFF or unchanged • ON if S1 = S2 with one-word data. • ON if S1+1, S1 = S2+1, S2 with double-length data. • OFF in all other cases. • OFF in all other cases. • ON if S1 ≠ S2 with one-word data. • ON if S1+1, S1 ≠ S2+1, S2 with double-length data. • OFF in all other cases. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Operation Name Label Data length: one-word Data length: double length P_LT • OFF in all other cases. • OFF in all other cases. Less Than or Equal Flag P_LE • ON if S1 ≤ S2 with one-word data. • ON if S1+1, S1 ≤ S2+1, S2 with double-length data. • OFF in all other cases. • OFF in all other cases. Negative Flag P_N OFF or unchanged OFF or unchanged Function • ON if S1 < S2 with one-word data. • ON if S1+1, S1 < S2+1, S2 with double-length data. i The input comparison instruction compares S1 and S2 as signed or unsigned values and creates an ON execution condition when the comparison condition is true. LD connection < 2 S1 S2 ON execution condition when comparison result is true. AND connection < Operation LD The instruction can be connected directly to the left bus bar. AND The instruction cannot be connected directly to the left bus bar. OR The instruction can be connected directly to the left bus bar. S1 S2 OR connection < S1 S2 ON execution condition when comparison result is true.  Options The input comparison instructions can compare signed or unsigned data and they can compare oneword or double values. If no options are specified, the comparison will be for one-word unsigned data. With the three input types and two options, there are 72 different input comparison instructions. Symbol = Option (data format) (Equal) < > (Not equal) < Option (data length) None: Unsigned data None: One-word data S: Signed data L: Double-length data (Less than) <= (Less than or equal) > (Greater than) >= (Greater than or equal) Function True if C1 = C2 True if C1 ≠ C2 True if C1 < C2 Mnemonic Name Code LD/AND/OR = EQUAL 300 LD/AND/OR =L DOUBLE EQUAL 301 LD/AND/OR =S SIGNED EQUAL 302 LD/AND/OR =SL DOUBLE SIGNED EQUAL 303 LD/AND/OR <> NOT EQUAL 305 LD/AND/OR <>L DOUBLE NOT EQUAL 306 LD/AND/OR <>S SIGNED NOT EQUAL 307 LD/AND/OR <>SL DOUBLE SIGNED NOT EQUAL 308 LD/AND/OR < LESS THAN 310 LD/AND/OR , <, <=, >, >= The input comparison instructions are treated just like the LD, AND, and OR instructions to control the execution of subsequent instructions. Input type ON execution condition when comparison result is true. Comparison Instructions Less Than Flag 2 Instructions Function True if C1 ≤ C2 True if C1 > C2 True if C1 ≥ C2 Mnemonic Name Code LD/AND/OR <= LESS THAN OR EQUAL LD/AND/OR<=L DOUBLE LESS THAN OR EQUAL 315 316 LD/AND/OR <=S SIGNED LESS THAN OR EQUAL 317 LD/AND/OR <=SL DOUBLE SIGNED LESS THAN OR EQUAL 318 LD/AND/OR > GREATER THAN 320 LD/AND/OR >L DOUBLE GREATER THAN 321 LD/AND/OR >S SIGNED GREATER THAN 322 LD/AND/OR >SL DOUBLE SIGNED GREATER THAN 323 LD/AND/OR >= GREATER THAN OR EQUAL 325 LD/AND/OR >=L DOUBLE GREATER THAN OR EQUAL 326 LD/AND/OR >=S SIGNED GREATER THAN OR EQUAL 327 LD/AND/OR>=SL DBL SIGNED GREATER THAN OR EQUAL 328 Unsigned input comparison instructions (i.e., instructions without the S option) can handle unsigned binary or BCD data. Signed input comparison instructions (i.e., instructions with the S option) handle signed binary data. Hint • Unlike instructions such as CMP(020) and CMPL(060), the result of an input comparison instruction is reflected directly as an execution condition, so it is not necessary to access the result of the comparison through an Arithmetic Flag and the program is simpler and faster. Precautions • Input comparison instructions cannot be used as right-hand instructions, i.e., another instruction must be used between them and the right bus bar. Sample program AND LESS THAN: AND<(310) When CIO 0.00 is ON in the following example, the contents of D100 and D200 are compared in as unsigned binary data. If the content of D100 is less than that of D200, CIO 100.00 is turned ON and execution proceeds to the next line. If the content of D100 is not less than that of D200, the remainder of the instruction line is skipped and execution moves to the next instruction line. i 100.00 0.00 < D100 D200 100.01 0.01 Unsigned LESS THAN Comparison S2: D200 S1: D100 8714 3A1C Decimal: 34,580 Decimal: 14,876 14,876 D110 (Will not proceed to next line.) D210 AND SIGNED LESS THAN: ANDDT, DT, >=DT Mnemonic Variations Function code Function --- 341 342 343 344 345 346 Time comparison instructions compare two BCD time values and create an ON execution condition when the comparison condition is true. =DT <>DT
DT >=DT Time Comparison Instructions =DT, <>DT, DT, >=DT LD AND Symbol S1 S2 C S1 S2 Symbol C: Control word S1: First word of present time S2: First word of comparison time C S1 S2 C: Control word S1: First word of present time S2: First word of comparison time Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size C Control word WORD 1 S1 First word of present time WORD 3 S2 First word of comparison time WORD 3 C: Control Word Bits 00 to 05 of C specify whether or not the time data will be masked for the comparison. Bits 00 to 05 mask the seconds, minutes, hours, day, month, and year, respectively. If all 6 values are masked, the instruction will not be executed, the execution condition will be OFF, and the Error Flag will be turned ON. i 15 C 0 0 0 0 0 0 0 8 7 6 0 0 0 5 4 3 2 1 0 Masks seconds data when ON. Masks minutes data when ON. Masks hours data when ON. Masks day data when ON. Masks month data when ON. Masks year data when ON. CP1E CPU Unit Instructions Reference Manual(W483) 2-91 =DT, <>DT, DT, >=DT C: Control word S1: First word of present time S2: First word of comparison time C 2 OR Symbol Symbol Comparison Instructions Instruction 2 Instructions i S1 through S1+2: Present Time Data S2 through S2+2: Comparison Time Data S1 through S1+2 contain the present time data. S1 through S1+2 must be in the same data area. S2 through S2+2 contain the comparison time data. S2 through S2+2 must be in the same data area. 15 8 7 0 15 S1 8 7 0 S2 Seconds: 00 to 59 (BCD) Seconds: 00 to 59 (BCD) Minutes: 00 to 59 (BCD) Minutes: 00 to 59 (BCD) 15 8 7 0 15 S1+1 8 7 0 S2+1 Hour: 00 to 23 (BCD) Hour: 00 to 23 (BCD) Day: 01 to 31 (BCD) 15 8 7 Day: 01 to 31 (BCD) 0 15 S1+2 8 7 0 S2+2 Month: 01 to 12 (BCD) Month: 01 to 12 (BCD) Year: 00 to 99 (BCD) Year: 00 to 99 (BCD) Note When using the CPU Unit’s internal clock data for the comparison, set S1 to A351 to specify the CPU Unit’s internal clock data (A351 to A353). Note The year value indicates the last two digits of the year. Values 00 to 97 are interpreted as 2000 to 2097. Values 98 and 99 are interpreted as 1998 and 1999.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM OK OK OK OK OK OK OK @DM C S1, S2 CF Pulse bits TR bits --- --- --- *DM --- --- OK OK OK --- Flags Name Error Flag Label P_ER Operation • ON if all 6 of the mask bits (C bits 00 to 05) are ON. • OFF in all other cases. Greater Than Flag P_GT • ON if S1 > S2. • OFF in all other cases. Greater Than or Equal Flag P_GE Equal Flag P_EQ • ON if S1 ≥ S2. • OFF in all other cases. • ON if S1 = S2. • OFF in all other cases. Not Equal Flag P_NE • ON if S1 ≠ S2. • OFF in all other cases. Less Than Flag P_LT • ON if S1 < S2. • OFF in all other cases. Less Than or Equal Flag P_LE • ON if S1 ≤ S2. • OFF in all other cases. 2-92 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function The time comparison instructions are treated just like the LD, AND, and OR instructions to control the execution of subsequent instructions. There are 18 possible combinations of time comparison instructions. Any time values that are masked in the control word (C) are not included in the comparison. Comparison Instructions The time comparison instruction compares the unmasked values (corresponding bit of C set to 0) of the present time data in S1 to S1+2 with the comparison time data in S2 to S2+2 and creates an ON execution condition when the comparison condition is true. At the same time, the result of a time comparison instruction is reflected in the arithmetic flags (=, <>, <, <=, >, >=). The following table shows the ON/OFF status of each flag for each comparison result. 2 Flag status Result = <> < <= > >= ON OFF OFF ON OFF ON OFF ON OFF OFF ON ON S1 < S2 OFF ON ON ON OFF OFF Comparison S1 S2 Conditions Flags (=, <>, <, <=, >, >=) Result  Masking Time Values Time values can be masked individually and excluded from the comparison operation. To mask a time value, set the corresponding bit in the control word (C) to 1. Bits 00 to 05 of C mask the seconds, minutes, hours, day, month, and year, respectively. Example: When C = 39 hex, the rightmost 6 bits are 111001 (year=1, month=1, day=1, hours=0, minutes=0, and seconds=1) so only the hours and minutes are compared. This mask setting can be used to perform a particular operation at a given time (hour and minute) each day. Present time data 15 S1 S1+1 Comparison time data 08 07 Minute (00 to 59, BCD) Second (00 to 59, BCD) Day of month Hour (00 to (01 to 31, BCD) 23, BCD) Year (00 to S1+2 99, BCD) 00 Month (01 to 12, BCD) 15 S2 S2+1 00 Second (00 to 59, BCD) Day of month Hour (00 to (01 to 31, BCD) 23, BCD) Year (00 to S2+2 99, BCD) Compares only hours and minutes data. 08 07 Minute (00 to 59, BCD) Month (01 to 12, BCD) Year, month, day, and seconds data is masked. Hint • Previous data comparison instructions compared data in 16-bit units. The time comparison instructions are limited to comparing 8-bit time values. The following table shows the structure of the CPU Unit’s internal Calendar/Clock Area. Addresses Contents A351.00 to A351.07 Second (00 to 59, BCD) A351.08 to A351.15 Minute (00 to 59, BCD) A352.00 to A352.07 Hour (00 to 23, BCD) A352.08 to A352.15 Day of month (01 to 31, BCD) A353.00 to A353.07 Month (01 to 12, BCD) A353.08 to A353.15 Year (00 to 99, BCD) • The Calendar/Clock Area can be set with a Programming Device (including a Programming Console), DATE(735) instruction, or “CLOCK WRITE” FINS command (0702 hex). CP1E CPU Unit Instructions Reference Manual(W483) 2-93 =DT, <>DT, DT, >=DT S1 = S2 S1 > S2 2 Instructions Precautions • Time comparison instructions cannot be used as right-hand instructions, i.e., another instruction must be used between them and the right bus bar. • E-type CP1E CPU Unit (CP1E-E-) does not have the clock function. The clock data inside the CPU Unit is always 01-01-01 01:01:01. Sample program When CIO 0.00 is ON and the time is 13:00:00, CIO 100.00 is turned ON. The contents of A351 to A353 (the CPU Unit’s internal calendar/clock data) are used as the present time data and the contents of D100 to D102 are used as the comparison time data. The year, month, and day values are masked, so only the hour, minute, and second data are compared. 100.00 0.00 =DT D0 C D0 S1 A352 S2 D100 7 6 5 4 3 2 1 0 - - 1 1 1 0 0 0 D0 set to 0038 hex Seconds compared. Minutes compared. Hours compared. Day masked. Month masked. Year masked. 15 A351 8 7 Minute A352 Day of month A353 Year Shaded data is compared. 0 Second S2: D100 15 8 7 0 00 00 Hour S2+1:D101 - 13 Month S2+2:D102 - - Conditions Flags set as soon as execution condition is turned ON. 2-94 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions CMP/CMPL Mnemonic COMPARE Variations CMP DOUBLE COMPARE Function code Function 020 Compares two unsigned binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. 060 Compares two double unsigned binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. !CMP CMPL --- Comparison Instructions Instruction 2 CMP CMPL CMPL(060) S1 S1 S1: Comparison data 1 S2 S1: Comparison data 1 S2 S2: Comparison data 2 S2: Comparison data 2 Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description CMP CMPL CMP CMPL S1 CMP: Comparison data 1 CMPL: Comparison data 1, rightmost word address UINT UDINT 1 2 S2 CMP: Comparison data 2 CMPL: Comparison data 2, rightmost word address UINT UDINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S1, S2 Constants CF Pulse bits TR bits OK --- --- --- Flags Name Operation CX-Programmer label CMP CMPL Error Flag P_ER Unchanged Unchanged Greater Than Flag P_GT • ON if S1 > S2. • ON if S1 +1, S1 > S2+1, S2. • OFF in all other cases. • OFF in all other cases. Greater Than or Equal Flag P_GE • ON if S1 ≥ S2. • ON if S1 +1, S1 ≥ S2+1, S2. • OFF in all other cases. • OFF in all other cases. Equal Flag P_EQ • ON if S1 = S2. • ON if S1 +1, S1 = S2+1, S2. • OFF in all other cases. • OFF in all other cases. Not Equal Flag Less Than Flag P_NE P_LT Less Than or Equal Flag P_LE Negative Flag P_N • ON if S1 ≠ S2. • ON if S1 +1, S1 ≠ S2+1, S2. • OFF in all other cases. • OFF in all other cases. • ON if S1 < S2. • ON if S1 +1, S1 < S2+1, S2. • OFF in all other cases. • OFF in all other cases. • ON if S1 ≤ S2. • ON if S1 +1, S1 ≤ S2+1, S2. • OFF in all other cases. • OFF in all other cases. Unchanged Unchanged CP1E CPU Unit Instructions Reference Manual(W483) 2-95 CMP/CMPL CMP(020) Symbol 2 Instructions  The following table shows the status of the Arithmetic Flags after execution of CMP(020). Flag status CMP(020) Result > >= = <= < <> S 1 > S2 ON ON OFF OFF OFF ON S 1 = S2 OFF ON ON ON OFF OFF S 1 < S2 OFF OFF OFF ON ON ON * A status of “---” indicates that the Flag may be ON or OFF. Unsigned binary comparison S1 S2 Arithmetic Flags (>, >=, =, <=, <, <>)  The following table shows the status of the Arithmetic Flags after execution of CMPL(060). Flag status CMPL(060) Result > >= = <= < <> S1 +1, S1 > S2+1, S2 ON ON OFF OFF OFF ON S1+1, S1 = S2+1, S2 OFF ON ON ON OFF OFF S1+1, S1 < S2+1, S2 OFF OFF OFF ON ON ON * A status of “---” indicates that the Flag may be ON or OFF. Unsigned binary comparison S1+1 S1 S2+1 S2 Arithmetic Flags (>, >=, =, <=, <, <>) Function  CMP CMP(020) compares the unsigned binary data in S1 and S2 and outputs the result to Arithmetic Flags (the Greater Than, Greater Than or Equal, Equal, Less Than or Equal, Less Than, and Not Equal Flags) in the Auxiliary Area.  CMPL CMPL(060) compares the unsigned binary data in S1 +1, S1 and S2+1, S2 and outputs the result to Arithmetic Flags (the Greater Than, Greater Than or Equal, Equal, Less Than or Equal, Less Than, and Not Equal Flags) in the Auxiliary Area. 2-96 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Precautions S2 Comparison Instructions • Using CMP(020)Results in the Program When CMP(020)/CMPL(060) is executed, the result is reflected in the Arithmetic Flags. Control the desired output or right-hand instruction with a branch from the same input condition that controls CMP(020)/CMPL(060), as shown in the following diagram. In this case, the Equals Flag and output A will be turned ON when S1 = S2 or S1 + 1, S1 = S2 + 1, S2. A 2 CMP S1 Arithmetic Flag (Example: Equal Flag) CMPL S1 S2 Instruction B A Arithmetic Flag (Example: Equal Flag) In this case, the results of instruction B might change the results of CMP(020). • The immediate-refreshing variation (!CMP(020)) can be used with words allocated to CPU Unit builtin inputs specified in S1 and/or S2. When !CMP(020) is executed, input refreshing will be performed for the external input word specified in S1 and/or S2 and that refreshed value will be compared. Sample program • When CIO 0.00 is ON in the following example, the eight-digit unsigned binary data in CIO 0011 and CIO 0010 is compared to the eight-digit unsigned binary data in CIO 0009 and CIO 0008 and the result is output to the Arithmetic Flags. The results recorded in the Greater Than, Equals, and Less Than Flags are immediately saved to CIO 20.00 (Greater Than), CIO 20.01 (Equals), and CIO 20.02 (Less Than). i 0.00 CMPL S1+1=11CH S1=10CH 10 1234 5678 8 Comparison 20.00 > S2+1=9CH S2=8CH ABCD EF12 Flag status Result > OFF (0) = OFF (0) < ON (1) 20.01 = 20.02 < CP1E CPU Unit Instructions Reference Manual(W483) 2-97 CMP/CMPL • Using CMP(020) Results in the Program Do not program another instruction between CMP(020)/CMPL(060) and the instruction controlled by the Arithmetic Flag because the other instruction might change the status of the Arithmetic Flag. 2 Instructions CPS/CPSL Instruction Mnemonic SIGNED BINARY COMPARE DOUBLE SIGNED BINARY COMPARE Variations CPS Function code Function 114 Compares two signed binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. 115 Compares two double signed binary values (constants and/or the contents of specified words) and outputs the result to the Arithmetic Flags in the Auxiliary Area. !CPS CPSL --- CPS CPSL CPS(114) Symbol CPSL(115) S1: Comparison data 1 S1 S1 S2: Comparison data 2 S2 S2 S1: Comparison data 1 S2: Comparison data 2 Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description CPS CPSL CPS CPSL S1 CMP: Comparison data 1 CMPL: Comparison data 1, rightmost word address INT DINT 1 2 S2 CMP: Comparison data 2 CMPL: Comparison data 2, rightmost word address INT DINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area S1, S2 CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits OK --- --- --- Flags Operation Name Label CPS CPSL Error Flag P_ER Unchanged OFF or unchanged Greater Than Flag P_GT • ON if S1 > S2. • ON if S1 +1, S1 > S2+1, S2. Greater Than or Equal Flag P_GE Equal Flag P_EQ Not Equal Flag P_NE • OFF in all other cases. • OFF in all other cases. • ON if S1 ≥ S2. • ON if S1 +1, S1 ≥ S2+1, S2. • OFF in all other cases. • OFF in all other cases. • ON if S1 = S2. • ON if S1 +1, S1 = S2+1, S2. • OFF in all other cases. • OFF in all other cases. • ON if S1 ≠ S2. • ON if S1 +1, S1 ≠ S2+1, S2. • OFF in all other cases. • OFF in all other cases. • ON if S1 < S2. • ON if S1 +1, S1 < S2+1, S2. Less Than Flag P_LT • OFF in all other cases. • OFF in all other cases. Less Than or Equal Flag P_LE • ON if S1 ≤ S2. • ON if S1 +1, S1 ≤ S2+1, S2. • OFF in all other cases. • OFF in all other cases. Negative Flag P_N Unchanged OFF or unchanged 2-98 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  The following table shows the status of the Arithmetic Flags after execution of CPS(114). Flag status Result >= = <= < <> ON ON OFF OFF OFF ON S1 = S2 OFF ON ON ON OFF OFF S1 < S2 OFF OFF OFF ON ON ON Comparison Instructions > S1 > S2 * A status of “---” indicates that the Flag may be ON or OFF. Signed binary comparison S1 S2 2 Arithmetic Flags (>, >=, =, <=, <, <>)  The following table shows the status of the Arithmetic Flags after execution of CPSL(115). CPS/CPSL Flag status Result > >= = <= < <> S1 +1, S1 > S2+1, S2 ON ON OFF OFF OFF ON S1+1, S1 = S2+1, S2 OFF ON ON ON OFF OFF S1+1, S1 < S2+1, S2 OFF OFF OFF ON ON ON * A status of “---” indicates that the Flag may be ON or OFF. Signed binary comparison S1+1 S1 S2+1 S2 Arithmetic Flags (>, >=, =, <=, <, <>) Function  CPS CPS(114) compares the signed binary data in S1 and S2 and outputs the result to Arithmetic Flags (the Greater Than, Greater Than or Equal, Equal, Less Than or Equal, Less Than, and Not Equal Flags) in the Auxiliary Area.  CPSL CPSL(115) compares the double signed binary data in S1 +1, S1 and S2+1, S2 and outputs the result to Arithmetic Flags (the Greater Than, Greater Than or Equal, Equal, Less Than or Equal, Less Than, and Not Equal Flags) in the Auxiliary Area. CP1E CPU Unit Instructions Reference Manual(W483) 2-99 2 Instructions Precautions • When CPS(114)/CPSL(115) is executed, the result is reflected in the Arithmetic Flags. Control the desired output or right-hand instruction with a branch from the same input condition that controls CPS(114)/CPSL(115), as shown in the following diagram. CPS/CPSL S1 S2 A Arithmetic Flag (Example: Equal Flag) In this case, the Equals Flag and output A will be turned ON when S1 = S2 or S1 +1, S1 = S2+1, S2. • Do not program another instruction between CPS(114)/CPSL(115) and the instruction controlled by the Arithmetic Flag because the other instruction might change the status of the Arithmetic Flag. CPS/CPSL S1 S2 Instruction B A Arithmetic Flag (Example: Equal Flag) In this case, the results of instruction B might change the results of CPS(114)/CPSL(115). • The immediate-refreshing variation (!CPS(114)/!CPSL(115)) can be used with words allocated to CPU Unit built-in inputs specified in S1 and/or S2. When !CPS(114)/!CPSL(115) is executed, input refreshing will be performed for the external input word specified in S1 and/or S2 and that refreshed value will be compared. Sample program When CIO 0.00 is ON in the following example, the eight-digit signed binary data in D2 and D1 is compared to the eight-digit signed binary data in D6 and D5 and the result is output to the Arithmetic Flags. • If the content of D2 and D1 is greater than that of D6 and D5, the Greater Than Flag will be turned ON, causing CIO 20.00 to be turned ON. • If the content of D2 and D1 is equal to that of D6 and D5, the Equals Flag will be turned ON, causing CIO 20.01 to be turned ON. • If the content of D2 and D1 is less than that of D6 and D5, the Less Than Flag will be turned ON, causing CIO 20.02 to be turned ON. i 0.00 CPSL D2 D1 1234 5678 D1 D5 20.00 Comparison D6 D5 ABCD EF12 Flag status Result > ON (1) = OFF (0) < OFF (0) > 20.01 = 20.02 < 2-100 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions TCMP Mnemonic TABLE COMPARE Variations TCMP Function code Function 085 Compares the source data to the contents of 16 consecutive words and turns ON the corresponding bit in the result word when the contents of the words are equal. @TCMP TCMP TCMP(085) Symbol 2 S: Source data T T: First word of table R R: Result word TCMP S Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size S Source data WORD 1 T First word of table WORD 16 R Result word UINT 1 T: First word of table T Comparison data 0 T+1 Comparison data 1 to R: Result word 15 14 1 0 R Comparison result for S and T to Comparison result for S and T+1 Comparison data 15 T+15 Comparison result for S and T+14 Comparison result for S and T+15  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- OK T, R --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON if the result word is 0000. (The two 16-word sets contain the same data.) • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) Comparison Instructions Instruction 2-101 2 Instructions Function i TCMP(085) compares the source data (S) to each of the 16 words T through T+15 and turns ON the corresponding bit in word R when the data are equal. Bit n of R is turned ON if the content of T+n is equal to S and it is turned OFF if they are not equal. 1: Data are equal. 0: Data aren’t equal. R 0 Comparison S T T+1 1 S is compared to the content of T and bit 00 of R is T+14 turned ON if they are equal or OFF if they are not T+15 equal, S is compared to the content of T+1 and bit 01 of R is turned ON if they are equal or OFF if they are not equal, ..., and S is compared to the content of T+15 and bit 15 of R is turned ON if they are equal or OFF if they are not equal. 14 15 Sample program When CIO 0.00 is ON in the following example, TCMP(085) compares the content of D100 with the contents of words D200 through D215 and turns ON the corresponding bits in D300 when the contents are equal or OFF when the contents are not equal. R: D300 Comparison 0.00 TCMP S T D 2-102 D100 D200 D300 S: D100 0 3 A 1 0 2 A 1 0 0 D201 0 0 0 0 0 1 D202 0 1 2 0 0 2 D203 0 3 A 1 1 3 D204 0 0 0 4 D205 0 2 A 1 0 5 D206 1 2 3 4 0 6 D207 5 6 7 8 0 7 D208 9 A B C 0 8 D209 D E F 0 0 9 D210 0 3 A 1 1 10 D211 1 2 3 4 0 11 D212 5 6 7 8 0 12 D213 9 A B C 0 13 D214 D E F 0 0 14 D215 0 3 A 1 1 15 T: D200 0 0 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions BCMP Mnemonic BLOCK COMPARE Variations BCMP Function code Function 068 Compares the source data to 16 ranges (defined by 16 lower limits and 16 upper limits) and turns ON the corresponding bit in the result word when the source data is within a range. @BCMP BCMP BCMP(068) Symbol 2 S S: Source data B: First word of block B R: Result word BCMP R Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size S Source data WORD 1 B First word of block WORD 32 R Result word UINT 1 B: First word of block B R: Result word 15 Lower limit value 0 14 1 0 R B+1 Upper limit value 0 B+2 Lower limit value 1 B+3 Upper limit value 1 B+30 Lower limit value 15 B+31 Upper limit value 15 Comparison result for S and range B ↔ B+1 Comparison result for S and range B+2 ↔ B+3 Comparison result for S and range B+28 ↔ B+29 Comparison result for S and range B+30 ↔ B+31  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM CF Pulse bits TR bits --- --- --- *DM S B OK OK OK OK OK OK OK OK OK OK --- D Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON if the result word is 0000. (S is not within any of the 16 ranges.) • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) Comparison Instructions Instruction 2-103 2 Instructions Function BCMP(068) compares the source data (S) to the 16 ranges defined by pairs of lower and upper limit values in B through B+31. The first word in each pair (B+2n) provides the lower limit and the second word (B+2n+1) provides the upper limit of range n (n = 0 to 15). If S is within any of these ranges (inclusive of the upper and lower limits), the corresponding bit in R is turned ON. If S is out of any these ranges, the corresponding bit in R is turned OFF. 1 when inside the range 0 when outside of range Lower limit value Upper limit value R B B+1 0 Inside the range? Comparison data B+2 B+3 1 B+28 B+29 14 B+30 B+31 15 S For example, bit 00 of R is turned ON if S is within the first range (B ≤ S ≤ B+1), bit 01 of R is turned ON if S is within the second range (B+2 ≤ S ≤ B+3), ..., and bit 15 of R is turned ON if S is within the fifteenth range (B+30 ≤ S ≤ B+31). All other bits in R are turned OFF. Note An error will not occur if the lower limit is greater than the upper limit, but 0 (not within the range) will be output to the corresponding bit of R. Sample program When CIO 0.00 is ON in the following example, BCMP(068) compares the content of D100 with the 16 ranges defined in D200 through D231 and turns ON the corresponding bits in D300 when S is within the range or OFF when S is not within the range. 0.00 BCMP D100 D200 R: D300 D300 S:D100 2-104 03A0 D200 0 3 A 1 to D201 0 4 0 0 0 0 D202 0 0 0 0 to D203 0 3 9 0 0 1 D204 0 0 0 0 to D205 0 4 0 0 1 2 D206 0 3 A 1 to D207 0 4 0 0 0 3 D208 0 3 A 0 to D209 0 4 0 0 1 4 D210 0 0 0 0 to D211 0 4 0 0 1 5 D212 0 0 0 0 to D213 0 3 9 0 0 6 D214 0 3 A 1 to D215 0 4 0 0 0 7 D216 0 0 0 0 to D217 0 5 0 0 1 8 D218 0 0 0 0 to D219 0 3 A 0 1 9 D220 0 0 0 0 to D221 0 3 9 0 0 10 D222 0 3 A 1 to D223 0 4 0 0 0 11 D224 0 0 0 0 to D225 0 4 0 0 1 12 D226 0 0 0 0 to D227 0 0 0 0 0 13 D228 0 3 A 1 to D229 0 0 0 0 0 14 D230 0 to D231 0 0 0 0 0 15 0 0 0 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions ZCP/ZCPL Mnemonic AREA RANGE COMPARE Variations ZCP DOUBLE AREA RANGE COMPARE --- ZCPL --- Function code Function 088 Compares a 16-bit unsigned binary value (CD) with the range defined by lower limit LL and upper limit UL. The results are output to the Arithmetic Flags. 116 Compares a 32-bit unsigned binary value (CD+1, CD) with the range defined by lower limit (LL+1, LL) and upper limit (UL+1, UL). The results are output to the Arithmetic Flags. Comparison Instructions Instruction 2 ZCP ZCPL ZCPL(116) CD CD CD: Comparison Data LL: Lower limit of range UL: Upper limit of range LL UL LL UL CD: First word of Comparison Data LL: First word of Lower Limit UL: First word of Upper Limit Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description ZCP: Comparison data (one word of data) CD ZCPL: Comparison data (two words of data) ZCP: Low limit LL ZCPL: Low limit leftmost word number ZCP: High limit UL ZCPL: High limit rightmost word number CMP CMPL CMP CMPL UINT UDINT 1 2 UINT UDINT 1 2 UINT UDINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK CD, LL, UL Constants CF Pulse bits TR bits OK --- --- --- Flags Operation Name Label ZCP ZCPL Error Flag P_ER ON if LL > UL. ON if LL+1, LL > UL+1, UL. Greater Than Flag P_GT • ON if CD > UL. • ON if CD > UL+1, UL. • OFF in all other cases. • OFF in all other cases. Greater Than or Equal Flag P_GE Left unchanged. Left unchanged. Equal Flag P_EQ • ON if LL ≤ CD ≤ UL. • ON if LL+1, LL ≤ CD+1, CD ≤ UL+1, UL. • OFF in all other cases. • OFF in all other cases. Not Equal Flag P_NE Left unchanged. Left unchanged. Less Than Flag P_LT • ON if CD < LL. • ON if CD+1, CD < LL+1, LL. • OFF in all other cases. • OFF in all other cases. Less Than or Equal Flag P_LE Left unchanged. Left unchanged. Negative Flag P_N Left unchanged. Left unchanged. CP1E CPU Unit Instructions Reference Manual(W483) 2-105 ZCP/ZCPL ZCP(088) Symbol 2 Instructions Function  ZCP ZCP(088) compares the 16-bit signed binary data in CD with the range defined by LL and UL and outputs the result to the Greater Than, Equals, and Less Than Flags in the Auxiliary Area. (The Less Than or Equal, Greater Than or Equal, and Not Equal Flags are left unchanged.) When CD > UL as shown below, the > flag turns ON. When LL ≤ CD ≤ UL, the = flag turns ON. When CD < LL, the < flag turns ON. Flag status ZCP(088)Result > = CD > UL ON OFF CD = UL OFF ON < OFF LL < CD < UL CD = LL CD < LL OFF ON  ZCPL ZCPL(116) compares the 32-bit signed binary data in CD+1, CD with the range defined by LL+1, LL and UL+1, UL and outputs the result to the Greater Than, Equals, and Less Than Flags in the Auxiliary Area. (The Less Than or Equal, Greater Than or Equal, and Not Equal Flags are left unchanged.) When CD+1,CD > UL+1,UL as shown below, the > flag turns ON. When LL+1,LL ≤ CD+1, CD ≤ UL+1, UL, the = flag turns ON. When CD+1, CD < LL+1, LL, the < flag turns ON. Flag status ZCPL(116)Result > = CD+1, CD > UL+1, UL ON OFF CD+1, CD = UL+1, UL OFF ON < OFF LL+1, LL < CD+1, CD < UL+1, UL CD+1, CD = LL+1, LL CD+1, CD < LL+1, LL OFF ON Precautions • When ZCP(088)/ZCPL(116) is executed, the result is reflected in the Arithmetic Flags. Control the desired output or right-hand instruction with a branch from the same input condition that controls ZCP(088)/ZCPL(116), as shown in the following diagram. ZCP CD LL UL A Arithmetic Flag (Example: Equal Flag) In this case, the Equals Flag and output A will be turned ON when LL 2-106 ≤ CD ≤ UL. CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • Do not program another instruction between ZCP(088)/ZCPL(116) and the instruction controlled by the Arithmetic Flag because the other instruction might change the status of the Arithmetic Flag. Comparison Instructions ZCPL CD LL UL Instruction B A 2 Arithmetic Flag (Example: Equal Flag) In this case, the results of instruction B might change the results of ZCP(088)/ZCPL(116). • When CIO 0.00 is ON in the following example, the 16-bit unsigned binary data in D0 is compared to the range 0005 to 001F hex (5 to 31 decimal) and the result is output to the Arithmetic Flags. CIO 20.00 is turned ON if 0005 hex ≤ content of D0 ≤ 001F hex. CIO 20.01 is turned ON if the content of D0 > 001F hex. CIO 20.02 is turned ON if the content of D0 < 0005 hex. 0.00 ZCP CD D0 LL #0005 UL #001F LL CD UL Arithmetic Flags D0 0005Hex ≤ ≤ 001FHex = ON(1) > 001FHex > ON(1) < ON(1) D0 20.00 D0 0005Hex > = 20.01 > 20.02 < CP1E CPU Unit Instructions Reference Manual(W483) 2-107 ZCP/ZCPL Sample program 2 Instructions Data Movement Instructions MOV/MOVL/MVN Instruction Mnemonic Variations Function code Function MOVE MOV @MOV, !MOV, !@MOV 021 Transfers a word of data to the specified word. DOUBLE MOVE MOVL @MOVL 498 Transfers two words of data to the specified words. MOVE NOT MVN @MVN 022 Transfers the complement of a word of data to the specified word. MOV MOVL MOVL(498) MOV(021) S S: Source S S: First source word D D: Destination D D: First destination word Symbol MVN MVN(022) S S: Source D D: Destination Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description MOV / MVN: Source S MOVL: First source word MOV / MVN: Destination D MOVL: First destination word MOV / MVN MOVL MOV / MVN MOVL WORD DWORD 1 2 WORD DWORD 1 2  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- OK D --- Flags Name Label Operation Error Flag P_ER OFF Equal Flag P_EQ • ON if the data being transferred (D) is 0. Negative Flag P_N • OFF in all other cases. • ON if the leftmost bit of the data being transferred (D) is 1. • OFF in all other cases. 2-108 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function Data Movement Instructions  MOV S Transfers S to D. If S is a constant, the value can be used for a data setting. D  MOVL MOVL(498) transfers S+1 and S to D+1 and D. If S+1 and S are constants, the value can be used for a data setting.  MVN S+1 S D+1 D 2 S Bit status inverted. 1 0 MOV/MOVL/MVN MVN(022) inverts the bits in S and transfers the result to D. The content of S is left unchanged. 0 1 D Precautions MOV(021) has an immediate refreshing variation (!MOV(021)). A CPU Unit Built-in input bits can be specified for S and external output bits can be specified for D. Input bits used for S will refreshed just before, and output bits used for D will be refreshed just after execution. When CPU Unit Built-in input is specified for S, the value of S will be in-refreshed when the instruction is executed and transferred to D. When external output is specified for D, the value of S will be transferred to D and immediately out-refreshed when the instruction is executed. It is also possible to inrefresh S and out-refresh D at the same time. Sample program When CIO 0.00 is ON in the following example, the content of CIO 100 is copied to D100. 0.00 MOV 100 D100 100CH D100 CP1E CPU Unit Instructions Reference Manual(W483) 2-109 2 Instructions When CIO 0.00 is ON in the following example, the content of D101 and D100 are copied to D201 and D200. 0.00 MOVL D100 D200 D100 D200 D101 D201 0.01 MOV #1234 12 11 15 D10 D10 1 8 7 2 4 3 3 0 4 (Hexadecimal 1234) 0.02 MOV +1234 12 11 15 D11 D11 0 8 7 4 4 3 D 0 (Decimal 1234) 2 0.03 MOV -1234 12 11 15 D12 D12 F 8 7 B 4 3 2 0 E (Decimal -1234) When CIO 0.00 is ON in the following example, the status of the bits in CIO 100 is inverted and the result is copied to D100. 0.00 MVN 100 D100 100CH D100 2-110 1001 0010 0000 1101 9 2 0 D 0110 1101 1111 0010 6 D F 2 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic MOVE BIT Function code Variations MOVB @MOVB 082 Data Movement Instructions MOVB Function Transfers the specified bit. MOVB MOVB(082) Symbol S S: Source word or data C C: Control word D D: Destination word 2 Area Step program areas Subroutines Interrupt tasks Usage OK OK OK MOVB Applicable Program Areas Operands Operand Description S Source word or data C Control word D Destination word Data type Size WORD 1 UINT 1 WORD 1 C: Control Word 15 8 7 C 0 m n Source bit: 00 to 0F (0 to 15 decimal) Destination bit: 00 to 0F (0 to 15 decimal)  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S, C CF Pulse bits TR bits --- --- --- OK D --- Flags Name Error Flag Label P_ER Operation • ON if the rightmost and leftmost two digits of C are not within the specified range of 00 to 0F. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-111 2 Instructions Function MOVB(082) copies the specified bit (n) from S to the specified bit (m) in D. C m n n S m D Hint The same word can be specified for both S and D to copy a bit within a word. Precautions The other bits in the destination word are left unchanged. Sample program When CIO 0.00 is ON in the following example, the 5th bit of the source word (W0) is copied to the 12th bit of the destination word (W100) in accordance with the control word’s value of 0C05. 0.00 MOVB S W0 C D200 D W100 8 7 15 C:D200 8 7 15 14 0C 5 0 05 1 0 S:W0 15 14 12 8 7 1 0 D:W100 2-112 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic MOVE DIGIT Function code Variations MOVD @MOVD Data Movement Instructions MOVD Function Transfers the specified digit or digits. (Each digit is made up of 4 bits.) 083 MOVB MOVD(083) Symbol S S: Source word or data C C: Control word D D: Destination word 2 MOVD Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description S Source word or data C D Data type 1 Control word UINT 1 Destination word UINT 1 S: Source Word D: Destination Word 12 11 15 S Size WORD Digit 3 8 7 Digit 2 4 3 Digit 1 15 0 D Digit 0 Digit 3 12 11 8 7 Digit 2 4 3 Digit 1 0 Digit 0 The destination digits are written from right to left, wrapping back to the rightmost digit (digit 0) if necessary. The source digits are read from right to left, wrapping back to the rightmost digit (digit 0) if necessary. C: Control Word 15 C 12 11 8 7 0 4 3 0 m n First digit in S (m): 0 to 3 Number of digits (n): 0 to 3 0: 1 digit 1: 2 digits 2: 3 digits 3: 4 digits First digit in D ( ): 0 to 3 Always 0.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S, C CF Pulse bits TR bits --- --- --- OK D CP1E CPU Unit Instructions Reference Manual(W483) --- 2-113 2 Instructions Flags Name Label Error Flag Operation P_ER • ON if one of the first three digits of C is not within the specified range of 0 to 3. • OFF in all other cases. Function MOVB(082) copies the specified bit (n) from S to the specified bit (m) in D. The other bits in the destination word are left unchanged. 12 11 15 C 8 7 R 0 4 3 n 0 m n m S R D Precautions If the number of digits being read or written exceeds the leftmost digit of S or D, MOVD(083) will wrap to the rightmost digit of the same word. Sample program When CIO 0.00 is ON in the following example, four digits of data are copied from W0 to W100. The transfer begins with the digit 1 of W0 and digit 0 of W100, in accordance with the control word’s value of 31. 0.00 MOVD S W0 C D300 D W100 12 11 15 C:D300 0 8 7 0 4 3 3 0 1 First digit in S: Digit 1 Digit no. 3 2 12 11 15 1 8 7 0 4 3 0 S: W0 1 2 3 4 Digit no. 3 2 1 0 Number of digits: 3 (4 digits) 12 11 15 D: W100 4 8 7 1 4 3 2 0 3 First digit in D: Digit 0 Note After reading the leftmost digit of S (digit 3), MOVD(083) wraps to the rightmost digit (digit 0).  Example of transferring multiple digits The following diagram shows examples of data transfers for various values of C. C㧦211 2-114 C㧦30 C㧦312 C㧦230 S D S D S D S D Digit 0 Digit 0 Digit 0 Digit 0 Digit 0 Digit 0 Digit 0 Digit 0 Digit 1 Digit 1 Digit 1 Digit 1 Digit 1 Digit 1 Digit 1 Digit 1 Digit 2 Digit 2 Digit 2 Digit 2 Digit 2 Digit 2 Digit 2 Digit 2 Digit 3 Digit 3 Digit 3 Digit 3 Digit 3 Digit 3 Digit 3 Digit 3 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic MULTIPLE BIT TRANSFER Function code Variations XFRB @XFRB Function Transfers the specified number of consecutive bits. 062 XFRB XFRB(062) Symbol C C: Control word S S: First source word D D: First destination word 2 XFRB Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description C Control word S D Data type 1 First source word WORD Variable First destination word WORD Variable C: Control Word D: First destination Word 8 7 C Size UINT 15 n 4 3 15 0 0 D m Number of bits (n): 00 to FF (0 to 255) to First bit in S ( ): 0 to F (0 to 15) First bit in D (m): 0 to F (0 to 15) D+16 max. Note The source words and the destination words must be in the same data area respectively. S: First Source Word 15 0 S to S+16 max.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK C CF Pulse bits TR bits --- --- --- OK S, D --- Flags Name Error Flag Label P_ER Data Movement Instructions XFRB Operation OFF CP1E CPU Unit Instructions Reference Manual(W483) 2-115 2 Instructions Function XFRB(062) transfers up to 255 consecutive bits from the source words (beginning with bit l of S) to the destination words (beginning with bit m of D). The beginning bits and number of bits are specified in C, as shown in the following diagram. 15 8 7 C n 4 3 m 0 l n l S m D Hint • Up to 255 bits of data can be transferred per execution of XFRB(062). • It is possible for the source words and destination words to overlap. By transferring data overlapping several words, the data can be packed more efficiently in the data area. (This is particularly useful when handling position data for position control.) • Since the source words and destination words can overlap, XFRB(062) can be combined with ANDW(034) to shift m bits by n spaces. Precautions • Be sure that the source words and destination words do not exceed the end of the data area. • When the number of transfer bits (n of C) is 0, transfer does not take place. • Bits in the destination words that are not overwritten by the source bits are left unchanged. Sample program When CIO 0.00 is ON in the following example, the 20 bits beginning with W0.06 are copied to the 20 bits beginning with W100. 0.00 XFRB C D100 S W0 D W100 15 8 7 C:D100 1 4 4 3 0 0 6 20 bits 1514 8 76 5 4 3 2 1 0 S:W0 W1 15 0 D:W100 W101 2-116 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic BLOCK TRANSFER Function code Variations XFER @XFER Function Transfers the specified number of consecutive words. 070 XFER Data Movement Instructions XFER XFER(070) Symbol N N: Number of words S S: First source word D D: First destination word 2 XFER Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size N Number of words UINT 1 S First source word WORD Variable D First destination word WORD Variable N: Number of Words Specifies the number of words to be transferred. The possible range for N is 0000 to FFFF (0 to 65,535 decimal). 15 0 15 0 S to S+(N-1) D to D+(N-1)  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK N CF Pulse bits TR bits --- --- --- OK S, D --- Flags Name Error Flag Label P_ER Operation OFF CP1E CPU Unit Instructions Reference Manual(W483) 2-117 2 Instructions Function XFER(070) copies N words beginning with S (S to S+(N-1)) to the N words beginning with D (D to D+(N-1)). S D N words S+(N-1) D+(N-1) Hint • It is possible for the source words and destination words to overlap, so XFER(070) can perform word-shift operations. XFER D100 &10 D102 D100 • The specified source and destination data areas can overlap (word shift). D102 D109 D111 Precautions • Be sure that the source words (S to S+N-1) and destination words (D to D+N-1) do not exceed the end of the data area. • Some time will be required to complete XFER(070) when a large number of words is being transferred. Even if an interrupt occurs, execution of this instruction will not be interrupted and execution of the interrupt task will be started after execution of XFER(070) has been completed. If power is interrupted during execution of XFER(070), execution may not be completed, i.e., all of the specified data may not be transferred. XFER &1000 D0 D1000 Sample Program When CIO 0.00 is ON in the following example, the 10 words D100 through D109 are copied to D200 through D209. 0.00 XFER &10 D100 D200 D100 D200 D101 D201 D102 D109 2-118 10 words D202 D209 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic BLOCK SET Function code Variations BSET @BSET Function Copies the same word to a range of consecutive words. 071 BSET Data Movement Instructions BSET BSET(071) Symbol S S: Source word St St: Starting word E E: End word 2 BSET Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size Source word Description WORD 1 St Starting word WORD Variable E End word WORD Variable S St: Starting Word Specifies the first word in the destination range. E: End Word Specifies the last word in the destination range. 15 0 St to E Note St and E must be in the same data area.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- OK St, E --- Flags Name Error Flag Label P_ER Operation • ON if St is greater than E. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-119 2 Instructions Function BSET(071) copies the same source word (S) to all of the destination words in the range St to E. Destination words Source word S St E Precautions • Some time will be required to complete BSET(071) when a large number of words is being set. Even if an interrupt occurs, execution of this instruction will not be interrupted and execution of the interrupt task will be started after execution of BSET(071) has been completed. If power is interrupted during execution of BSET(071), execution may not be completed, i.e., all of the specified words may not be set. One BSET(071) instruction can be replaced with two BSET(071) instructions to help avoid this problem. BSET BSET #0000 #0000 D1000 D1000 D1999 D1499 BSET #0000 D1500 D1999 Sample program When CIO 0.00 is ON in the following example, the source data in D100 is copied to D200 through D209. 0.00 BSET 2-120 S D100 St D200 E D209 S:D100 1 2 3 4 St:D200 1 2 3 4 D201 1 2 3 4 D202 1 2 3 4 D203 1 2 3 4 D204 1 2 3 4 D205 1 2 3 4 D206 1 2 3 4 D207 1 2 3 4 D208 1 2 3 4 E:D209 1 2 3 4 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic DATA EXCHANGE Function code Variations XCHG @XCHG Data Movement Instructions XCHG Function Exchanges the contents of the two specified words. 073 XCHG XCHG(073) Symbol E1 E1: First exchange word E2 E2: Second exchange word 2 Area Step program areas Subroutines Interrupt tasks Usage OK OK OK XCHG Applicable Program Areas Operands Operand Description Data type Size E1 First exchange word WORD 1 E2 Second exchange word WORD 1  Operand Specifications Word addresses Indirect DM addresses Area E1,E2 CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Error Flag P_ER Operation Unchanged Equals Flag P_EQ Unchanged Negative Flag P_N Unchanged Function XCHG(073) exchanges the contents of E1 and E2. E1 CP1E CPU Unit Instructions Reference Manual(W483) E2 2-121 2 Instructions Hint To exchange 3 or more words, use XFER(070) to transfer the words to a third set of words (a buffer) as shown in this diagram. E1 1st XFER(070) operation Buffer 2nd XFER(070) operation E2 3rd XFER(070) operation Sample program When CIO 0.00 is ON in this example, the content of D100 is exchanged with the content of D200. 0.00 XCHG D100 D200 2-122 D100 1 2 3 4 D200 A B C D D100 A B C D D200 1 2 3 4 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic SINGLE WORD DISTRIBUTE Function code Variations DIST @DIST Function Transfers the source word to a destination word calculated by adding an offset value to the base address. 080 DIST Data Movement Instructions DIST DIST(080) Symbol 2 S S: Source word Bs Bs: Destination base address Of Of: Offset DIST Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size 1 S Source word WORD Bs Destination base address WORD 1 Of Offset UINT 1 Bs: Destination Base Address 15 0 Bs Bs+Of Of: Offset The offset can be any value from 0000 to FFFF (0 to 65,535 decimal). Note Bs and Bs+Of must be in the same data area.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM S Bs CF Pulse bits TR bits --- --- --- *DM OK OK OK OK OK OK OK OK OK OK --- Of OK Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON if the source data is 0000. • OFF in all other cases. Negative Flag P_N • ON if the leftmost bit of the source data is 1. • OFF in all other cases CP1E CPU Unit Instructions Reference Manual(W483) 2-123 2 Instructions Function DIST(080) copies S to the destination word calculated by adding Of to Bs. S Bs Of n n Bs+n Hint The same DIST(080) instruction can be used to distribute the source word to various words in the data area by changing the value of Of. Precautions Be sure that the offset does not exceed the end of the data area, i.e., Bs and Bs+Of are in the same data area. Sample program When CIO 0.00 is ON in this example, the contents of D100 will be copied to D210 (D200 + 10) if the contents of D300 is 10 (0A hexadecimal). The contents of D100 can be copied to other words by changing the offset in D300. 0.00 DIST S D100 Bs D200 Of D300 S:D100 Copied by DIST(080). Of: D300 Bs:D200 0 0 0 A 4-digit hexadecimal D201 Offset +10 words D210 2-124 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic DATA COLLECT Function code Variations COLL @COLL Function Transfers the source word (calculated by adding an offset value to the base address) to the destination word. 081 COLL Data Movement Instructions COLL COLL(081) Symbol Bs Bs: Source base address Of Of: Offset D D: Destination word 2 COLL Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size Bs Source base address WORD 1 Of Offset WORD 1 D Destination word WORD 1 Bs: Source Base Address 15 0 Bs Bs+Of Of: Offset The offset can be any value from 0000 to FFFF (0 to 65,535 decimal). Note Bs and Bs+Of must be in the same data area.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Bs Of CF Pulse bits TR bits --- --- --- --OK D --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON if the source data is 0000. • OFF in all other cases. Negative Flag P_N • ON if the leftmost bit of the source data is 1. • OFF in all other cases CP1E CPU Unit Instructions Reference Manual(W483) 2-125 2 Instructions Function COLL(081) copies the source word (calculated by adding Of to Bs) to the destination word. Bs Of n n Bs+n D Hint The same COLL(081) instruction can be used to collect data from various source words in the data area by changing the value of Of. Precautions Be sure that the offset does not exceed the end of the data area, i.e., Bs and Bs+Of are in the same data area. Sample program When CIO 0.00 is ON in the following example, the contents of D110 (D100 + 10) will be copied to D300 if the content of D200 is 10 (0A hexadecimal). The contents of other words can be copied to D300 by changing the offset in D200. D200 0 0.00 COLL Bs:D100 Bs D100 D101 Of D200 D D300 0 0 A 4-digit hexadecimal Offset +10 words D110 Copied by COLL(081). D300 2-126 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Data Shift Instructions Data Shift Instructions SFT Instruction Mnemonic SHIFT REGISTER SFT Variations Function code --- 010 Function Operates a shift register. 2 SFT Data input Symbol SFT(010) Reset input St St: Starting word E E: End word SFT Shift input Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size St Starting word UINT Variable E End word UINT Variable  Operand Specifications Word addresses Indirect DM addresses Area St,E CIO WR HR AR T C DM @DM *DM OK OK OK --- --- --- --- --- --- Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Error Flag P_ER Operation OFF Function • When the execution condition on the shift input changes from OFF to ON, all the data from St to E is shifted to the left by one bit (from the rightmost bit to the leftmost bit), and the ON/OFF status of the data input is placed in the rightmost bit. E Lost CP1E CPU Unit Instructions Reference Manual(W483) St+1, St+2, ... St Status of data input for each shift input 2-127 2 Instructions Precautions • Do not use more than one SFT(010) instructions with overlapping shift words. The results will not be dependable. • St and E must be in the same data area. • The bit data shifted out of the shift register is discarded. • When the reset input turns ON, all bits in the shift register from the rightmost designated word (St) to the leftmost designated word (E) will be reset (i.e., set to 0). The reset input takes priority over other inputs. • St must be less than or equal to E, but even when St is set to greater than E an error will not occur and one word of data in St will be shifted. Sample program  Shift Register Exceeding 16 Bits The following example shows a 48-bit shift register using words CIO 128 to CIO 130. A 1-s clock pulse is used so that the execution condition produced by CIO 0.05 is shifted into a 3-word register between CIO 128.00 and CIO 130.15 every second. 0.05 Data input 1s (1-s clock) 128 Shift input 0.06 SFT 130 E: 130CH Lost 15 14 St+1: 129CH 1 0 15 14 1 0 15 14 St: 128CH 10 Contents of 0.05 Reset i 2-128 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions SFTR Mnemonic REVERSIBLE SHIFT REGISTER SFTR Variations Function code Function 084 Creates a shift register that shifts data to either the right or the left. @SFTR SFTR SFTR(084) Symbol C C: Control word St St: Starting word E E: End word 2 SFTR Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size C Control word UINT 1 St Starting word UINT Variable E End word UINT Variable C: Control Word 15 14 13 12 Shift direction 1 (ON): Left 0 (OFF): Right Data input Shift input Reset Note St and E must be in the same data area.  Operand Specifications Word addresses Indirect DM addresses Area C,St,E CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Error Flag P_ER Carry Flag P_CY Data Shift Instructions Instruction Operation • ON when St is greater than E. • OFF in all other cases. • ON when 1 is shifted into it. • OFF when 0 is shifted into it. • OFF when reset is set to 1. CP1E CPU Unit Instructions Reference Manual(W483) 2-129 2 Instructions Function When the execution condition of the shift input bit (bit 14 of C) changes to ON, all the data from St to E is moved in the designated shift direction (designated by bit 12 of C) by 1 bit, and the ON/OFF status of the data input is placed in the rightmost or leftmost bit. The bit data shifted out of the shift register is placed in the Carry Flag (CY) Note 15141312 C CY 15 E 0 15 0 15 St 0 Data input Data input 15 E 0 15 0 15 St 0 CY Shift direction • The above shift operations are applicable when the reset bit (bit 15 of C) is set to OFF. • When reset (bit 15 of C) turns ON all bits in the shift register, from St to E will be reset (i.e., set to 0). Sample program • Shifting Data If shift input W0.14 goes ON when CIO 0.00 is ON, and the reset bit W0.15 is OFF, words CIO 100 through CIO 102 will shift one bit in the direction designated by W0.12 (e.g., 1: Right) and the contents of input bit W0.13 will be shifted into the rightmost bit, CIO 100.00. The contents of CIO 102.15 will be shifted to the Carry Flag (CY). 0.00 SFTR C W0 St 100 E 102 15 14 13 12 C㧦W0 0 1 0 1 Shift direction Shift input bit: Reset input bit: CY 1 0 15 102 0 101 100 Data input: W0.13 • Resetting Data If W0.14 is ON when CIO 0.00 is ON, and the reset bit, W0.15, is ON, words CIO 100 through CIO 102 and the Carry Flag will be reset to OFF.  Controlling Data Resetting Data 15 All bits from St to E and the Carry Flag are set to 0 and no other data can be received when the reset input bit (bit 15 of C) is ON. CY 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Shifting Data Left (from Rightmost to Leftmost Bit) CY 15 Data input 0 1/0 Shifting Data Right (from Leftmost to Rightmost Bit) Data input 15 1/0 2-130 0 CY When the shift input bit (bit 14 of C) is ON, the contents of the input bit (bit 13 of C) is shifted to bit 00 of the starting word, and each bit thereafter is shifted one bit to the left. The status of bit 15 of the end word is shifted to the Carry Flag. When the shift input bit (bit 14 of C) is ON, the contents of the input bit (bit 13 of C) (I/O) is shifted to bit 15 on the end word, and each bit thereafter is shifted one bit to the right. The status of bit 00 of the starting word is shifted to the Carry Flag. CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions WSFT Mnemonic WORD SHIFT Function code Variations WSFT @WSFT Data Shift Instructions Instruction Function 016 Shifts data between St and E in word units. WSFT WSFT(016) Symbol S S: Source word St St: Starting word E E: End word 2 Area Step program areas Subroutines Interrupt tasks Usage OK OK OK WSFT Applicable Program Areas Operands Operand Description Data type Size S Control word WORD 1 St Starting word UINT Variable E End word UINT Variable  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- OK St,E --- Flags Name Error Flag Label P_ER Operation • ON when St is greater than E. • OFF in all other cases. Function WSFT(016) shifts data from St to E in word units and the data from the source word S is places into St. The contents of E is lost. E Lost 15 St 0 15 0 15 0 15 S 0 Precautions • St and E must be in the same data area. • When large amounts of data are shifted, the instruction execution time is quite long. Be sure that the power is not cut while WSFT(016) is being executed, causing the shift operation to stop halfway through. CP1E CPU Unit Instructions Reference Manual(W483) 2-131 2 Instructions Sample program When CIO 0.00 is ON, data from CIO 100 through CIO 102 will be shifted one word toward E. The contents of W0 will be stored in CIO 100 and the contents of CIO 102 will be lost. i 0.00 WSFT S W0 St 100 E 102 St: W0 Lost 2-132 E: CIO 100 St: CIO 101 St: CIO 102 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions ASL Mnemonic ARITHMETIC SHIFT LEFT ASL Variations Function code @ASL Data Shift Instructions Instruction Function 025 Shifts the contents of Wd one bit to the left. ASL Symbol ASL(025) Wd Wd: Word 2 Applicable Program Areas Step program areas Subroutines Interrupt tasks OK OK OK ASL Area Usage Operands Operand Description Wd Data type Size UINT 1 Word  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON when the shift result is 0. Carry Flag P_CY Negative Flag P_N • OFF in all other cases. • ON when 1 is shifted into the Carry Flag (CY). • OFF in all other cases. • ON when the leftmost bit is 1 as a result of the shift. • OFF in all other cases. Function ASL(025) shifts the contents of Wd one bit to the left (from rightmost bit to leftmost bit). “0” is placed in the rightmost bit and the data from the leftmost bit is shifted into the Carry Flag (CY). CY 15 0 15 0 0 Sample program When CIO 0.00 is ON, CIO 100 will be shifted one bit to the left. “0” will be placed in CIO 100.00 and the contents of CIO 100.15 will be shifted to the Carry Flag (CY). 0.00 ASL Wd 15 100 Wd: 100CH 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 CY 1 CP1E CPU Unit Instructions Reference Manual(W483) 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 2-133 2 Instructions ASR Instruction Mnemonic ARITHMETIC SHIFT RIGHT ASR Variations Function code @ASL Function 026 Shifts the contents of Wd one bit to the right. ASR Symbol ASR(026) Wd Wd: Word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Wd Data type Size UINT 1 Word  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON when the shift result is 0. • OFF in all other cases. Carry Flag P_CY • ON when 1 is shifted into the Carry Flag (CY). • OFF in all other cases. Negative Flag P_N OFF Function ASR(026) shifts the contents of Wd one bit to the right (from leftmost bit to rightmost bit). “0” will be placed in the leftmost bit and the contents of the rightmost bit will be shifted into the Carry Flag (CY). 15 0 0 CY Sample program When CIO 0.00 is ON, word CIO 100 will shift one bit to the right. “0” will be placed in CIO 100.15 and the contents of CIO 100.00 will be shifted to the Carry Flag (CY). 0.00 ASR Wd 15 100 Wd: 100CH 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 CY 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 2-134 1 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions ROL Mnemonic ROTATE LEFT ROL Variations Function code @ROL Data Shift Instructions Instruction Function Shifts all Wd bits one bit to the left 027 including the Carry Flag (CY). ROL Symbol ROL(027) Wd: Word Wd 2 Applicable Program Areas Step program areas Subroutines Interrupt tasks OK OK OK ROL Area Usage Operands Operand Description Wd Data type Size UINT 1 Word  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON when the shift result is 0. Carry Flag P_CY Negative Flag P_N • OFF in all other cases. • ON when 1 is shifted into the Carry Flag (CY). • OFF in all other cases. • ON when the leftmost bit is 1 as a result of the shift. • OFF in all other cases. Function ROL(027) shifts all bits of Wd including the Carry Flag (CY) to the left (from rightmost bit to leftmost bit). CY 15 14 1 0 Hint It is possible to set the Carry Flag contents to 1 or 0 immediately before executing this instruction, by using the Set Carry (STC(040)) or Clear Carry (CLC(041)) instructions. CP1E CPU Unit Instructions Reference Manual(W483) 2-135 2 Instructions Sample program When CIO 0.00 is ON, word CIO 100 and the Carry Flag (CY) will shift one bit to the left. The contents of CIO 100.15 will be shifted to the Carry Flag (CY) and the Carry Flag contents will be shifted to CIO 100.00. 0.00 ROL Wd CY 0 15 14 100 Wd: CIO 100 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 Instruction executed once CY 1 2-136 15 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions ROR Mnemonic ROTATE RIGHT ROR Variations Function code @ROR Data Shift Instructions Instruction Function Shifts all Wd bits one bit to the right including the Carry Flag (CY). 028 ROR Symbol ROR(028) Wd Wd: Word 2 Applicable Program Areas Step program areas Subroutines Interrupt tasks OK OK OK ROR Area Usage Operands Operand Description Wd Data type Size UINT 1 Word  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON when the shift result is 0. • OFF in all other cases. Carry Flag P_CY • ON when 1 is shifted into the Carry Flag (CY). • OFF in all other cases. Negative Flag P_N • ON when the leftmost bit is 1 as a result of the shift. • OFF in all other cases. Function ROR(028) shifts all bits of Wd including the Carry Flag (CY) to the right (from leftmost bit to rightmost bit). 15 14 1 0 CY Wd Hint It is possible to set the Carry Flag contents to 1 or 0 immediately before executing this instruction, by using the Set Carry (STC(040)) or Clear Carry (CLC(041)) instructions. CP1E CPU Unit Instructions Reference Manual(W483) 2-137 2 Instructions Sample program When CIO 0.00 is ON, word CIO 100 and the Carry Flag (CY) will shift one bit to the right. The contents of CIO 100.00 will be shifted to the Carry Flag (CY) and the Carry Flag contents will be shifted to CIO 100.15. 0.00 ROR Wd 15 14 100 Wd: CIO 100 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 15 0 Instruction executed once 0 CY 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 2-138 CY 1 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions SLD/SRD Mnemonic Function code Variations Function ONE DIGIT SHIFT LEFT SLD @SLD 074 Shifts data by one digit (4 bits) to the left. ONE DIGIT SHIFT RIGHT SRD @SRD 075 Shifts data by one digit (4 bits) to the right. Symbol SLD SRD SLD(074) SRD(075) St E Data Shift Instructions Instruction St: Starting Word St St: Starting Word E: End word E E: End word 2 Area Step program areas Subroutines Interrupt tasks Usage OK OK OK SLD/SRD Applicable Program Areas Operands Operand Data type Size St Starting Word Description UINT Variable E End Word UINT Variable  Operand Specifications Word addresses Indirect DM addresses Area St,E CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Error Flag Label P_ER Operation • ON when St is greater than E. • OFF in all other cases. Function  SLD SLD(074) shifts data between St and E by one digit (4 bits) to the left. “0” is placed in the rightmost digit (bits 3 to 0 of St), and the content of the leftmost digit (bits 15 to 12 of E) is lost.  SRD SRD(075) shifts data between St and E by one digit (4 bits) to the right. “0” is placed in the leftmost digit (bits 15 to 12 of E), and the content of the rightmost digit (bits 3 to 0 of St) is lost. Precautions • St and E must be in the same data area. • When large amounts of data are shifted, the instruction execution time is quite long. Be sure that the power is not cut while SLD(074) and SRD(075) is being executed, causing the shift operation to stop halfway through. CP1E CPU Unit Instructions Reference Manual(W483) SLD E S t 0Hex Lost SRD 0Hex E S t Lost 2-139 2 Instructions Sample program  SLD When CIO 0.00 is ON, words CIO 100 through CIO 102 will shift by one digit (4 bits) to the left. A zero will be placed in bits 0 to 3 of word CIO 100 and the contents of bits 12 to 15 of CIO 102 will be lost. 0.00 SLD St 100 E 102 E: CIO 102 St+1: CIO 101 Lost 15 12 11 8 7 4 3 0 15 12 11 8 7 4 3 0 St: CIO 100 0Hex 15 12 11 8 7 4 3 0  SRD When CIO 0.00 is ON, words CIO 100 through CIO 102 will shift by one digit (4 bits) to the right. A zero will be placed in bits 12 to 15 of CIO 102 and the contents of bits 0 to 3 of word CIO 100 will be lost. 0.00 SRD St 100 E 102 0Hex E: CIO 102 St+1: CIO 101 15 12 11 8 7 4 3 0 15 12 11 8 7 4 3 0 2-140 St: CIO 100 15 12 11 8 7 4 3 0 Lost CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions NASL/NSLL Mnemonic Variations Function code Function SHIFT N-BITS LEFT NASL @NASL 580 Shifts the specified 16 bits of word data to the left by the specified number of bits. DOUBLE SHIFT N-BITS LEFT NSLL @NSLL 582 Shifts the specified 32 bits of word data to the left by the specified number of bits. NASL NSLL NASL(580) NSLL(582) Symbol 2 D D: Shift word D D: Shift word C C: Control word C C: Control word NASL/NSLL Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description NASL NSLL NASL NSLL D Shift Word UINT UDINT 1 2 C Control word UINT UDINT 1 1 C: Control word  NASL 15  NSLL 12 11 C 8 7 0 15 12 11 C 0 8 7 0 0 No. of bits to shift: 00 to 10 Hex No. of bits to shift: 00 to 20 Hex Always 0. Always 0. Data shifted into register 0 Hex: 0 shifted in 8 Hex: Contents of rightmost bit shifted in Data shifted into register 0 Hex: 0 shifted in 8 Hex: Contents of rightmost bit shifted in  Operand Specifications Word addresses Indirect DM addresses Area Constants CF Pulse bits TR bits CIO WR HR AR T C DM @DM *DM D OK OK OK OK OK OK OK OK OK --- --- --- --- C OK OK OK OK OK OK OK OK OK OK --- --- --- CP1E CPU Unit Instructions Reference Manual(W483) Data Shift Instructions Instruction 2-141 2 Instructions Flags Name Label Error Flag P_ER Equals Flag P_EQ Carry Flag P_CY Negative Flag P_N Operation • ON when the control word C (the number of bits to shift) is not within range. • OFF in all other cases. • ON when the shift result is 0. • OFF in all other cases. • ON when 1 is shifted into the Carry Flag (CY). • OFF in all other cases. • ON when the leftmost bit is 1 as a result of the shift. • OFF in all other cases. Function  NASL NASL(580) shifts D (the shift word) by the specified number of binary bits (specified in C) to the left (from the rightmost bit to the leftmost bit). Either zeros or the value of the rightmost bit will be placed into the specified number of bits of the shift word starting from the rightmost bit. 12 11 15 C 8 7 4 3 0 0 Shift n-bits a D Contents of “a” or “0” shifted in a CY Lost D N bits  NSLL NSLL(582) shifts D and D+1 (the shift words) by the specified number of binary bits (specified in C) to the left (from the rightmost bit to the leftmost bit). Either zeros or the value of the rightmost bit will be placed into the specified number of bits of the shift word starting from the rightmost bit. 15 12 11 8 7 C 0 43 0 Shift n-bits D+1 CY D a a Contents of “a” or “0” shifted in Lost N bits Precautions • For any bits which are shifted outside the specified word, the contents of the last bit is shifted to the Carry Flag (CY), and all other data is lost. • When the number of bits to shift (specified in C) is “0,” the data will not be shifted. The appropriate flags will turn ON and OFF, however, according to data in the specified word. 2-142 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sample program 0.00 NASL 15 D 100 C W0 12 11 C 8 7 0 8 4 3 0 0 Data Shift Instructions When CIO 0.00 is ON, The contents of CIO 100 is shifted 10 bits to the left (from the rightmost bit to the leftmost bit). The number of bits to shift is specified in bits 0 to 7 of word W0 (control data). The contents of bit 0 of CIO 100 is copied into bits from which data was shifted and the contents of the rightmost bit which was shifted out of range is shifted into the Carry Flag (CY). All other data is lost. 2 A No. of bits to shift: 10 bits (0A Hex) NASL/NSLL Always 0. Data shifted into register 8 Hex: Contents of right-most bit shifted in Lost 15 8 7 6 5 100 CY 0 Rightmost bit 1 0 0 1 0 0 1 15 14 13 12 11 10 9 8 4 3 2 1 0 100 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 No. of bits to shift: 10 bits (Contents of the rightmost bit is inserted.) When CIO 0.00 is ON, CIO 100 and CIO 101 will be shifted to the left (from the rightmost bit to the leftmost bit) by 10 bits. The number of bits to shift is specified in bits 0 to 7 of W0 (control data). The contents of bit 0 of CIO 100 is copied into bits from which data was shifted and the contents of the rightmost bit which was shifted out of range is shifted into the Carry Flag (CY). All other data is lost. 0.00 NSLL D 100 C W0 15 C 12 11 8 7 0 8 4 3 0 0 A No. of bits to shift: 10 bits (0A Hex) Always 0. Data shifted into register 8 Hex: Contents of right-most bit shifted in Lost 15 101 CY 1 8 7 0 1 1 0 0 1 0 0 1 15 9 8 7 0 101 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 15 8 7 6 5 0 Rightmost bit a 100 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 15 10 9 8 7 0 100 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 No. of bits to shift: 10 bits (Contents of the rightmost bit is shifted in) CP1E CPU Unit Instructions Reference Manual(W483) 2-143 2 Instructions NASR/NSRL Instruction Mnemonic Variations Function code Function SHIFT N-BITS RIGHT NASR @NASR 581 Shifts the specified 16 bits of word data to the right by the specified number of bits. DOUBLE SHIFT N-BITS RIGHT NSRL @NSRL 583 Shifts the specified 32 bits of word data to the right by the specified number of bits. NASR NSRL NASR(581) Symbol D C NSRL(583) D: Shift word D D: Shift word C: Control word C C: Control word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description NASR NSRL NASR D Shift Word UINT UDINT 1 NSRL 2 C Control word UINT UDINT 1 1 C: Control word  NASR 15  NSRL 12 11 C 8 7 0 15 12 11 C 0 8 7 0 0 No. of bits to shift: 00 to 10 Hex No. of bits to shift: 00 to 20 Hex Always 0. Always 0. Data shifted into register 0 Hex: 0 shifted in 8 Hex: Contents of rightmost bit shifted in Data shifted into register 0 Hex: 0 shifted in 8 Hex: Contents of rightmost bit shifted in  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK D C 2-144 CF Pulse bits TR bits --- --- --- --OK CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Flags Name Label P_ER Equals Flag P_EQ Carry Flag P_CY Negative Flag P_N Operation • ON when the control word C (the number of bits to shift) is not within range. Data Shift Instructions Error Flag • OFF in all other cases. • ON when the shift result is 0. • OFF in all other cases. • ON when 1 is shifted into the Carry Flag (CY). • OFF in all other cases. • ON when the leftmost bit is 1 as a result of the shift. • OFF in all other cases. Function  NASR 2 a D Contents of “a” or “0” shifted in a CY D Lost N bits  NSRL NSRL(583) shifts D and D+1 (the shift words) by the specified number of binary bits (specified in C) to the right (from the leftmost bit to the rightmost bit). Either zeros or the value of the rightmost bit will be placed into the specified number of bits of the shift word starting from the rightmost bit. 15 12 11 8 7 C 0 43 0 Shift n-bits D+1 a Contents of “a” or “0” shifted in a D CY Lost Precautions • For any bits which are shifted outside the specified word, the contents of the last bit is shifted to the Carry Flag (CY), and all other data is discarded. • When the number of bits to shift (specified in C) is “0,” the data will not be shifted. The appropriate flags will turn ON and OFF, however, according to data in the specified word. CP1E CPU Unit Instructions Reference Manual(W483) 2-145 NASR/NSRL NASR(581) shifts D (the shift word) by the specified number of binary bits (specified in C) to the right (from the rightmost bit to the leftmost bit). Either zeros or the value of the rightmost bit will be placed into the specified number of bits of the shift word starting from the rightmost bit. 2 Instructions Sample program • When CIO 0.00 is ON, CIO 100 will be shifted 10 bits to the right (from the leftmost bit to the rightmost bit). The number of bits to shift is specified in bits 0 to 7 of W0. The contents of bit 15 of CIO 100 is copied into the bits from which data was shifted and the contents of the leftmost bit of data which was shifted out of range, is shifted into the Carry Flag (CY). All other data is lost. . 0.00 NASR D 100 C W0 15 12 11 8 7 8 C 4 3 0 0 0 A No. of bits to shift: 10 bits (0A Hex) Always 0. Data shifted into register 8 Hex: Contents of leftmost bit shifted in Leftmost bit Lost 9 8 7 15 0 100 1 0 0 1 0 0 1 4 3 2 1 0 15 14 13 12 11 10 9 8 CY 100 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 No. of bits to shift: 10 bits (Contents of the leftmost bit is inserted.) When CIO 0.00 is ON, CIO 100 and CIO 101 will be shifted 10 bits to the right (from the leftmost bit to the rightmost bit). The number of bits to shift is specified in bits 0 to 7 of W0 (control data). The contents of bit 15 of CIO will be copied into the bits from which data was shifted and the contents of the leftmost bit of data which was shifted out of range will be shifted into the Carry Flag (CY). All other data is lost. 0.00 NSRL D 100 C W0 15 C 12 11 8 8 7 4 3 0 0 0 A No. of bits to shift: 10 bits (0A Hex) Always 0. Data shifted into register 8 Hex: Contents of leftmost bit shifted in Lost Leftmost bit 15 8 7 0 101 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 15 8 7 6 0 101 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 15 0 9 8 7 100 0 0 0 1 0 0 1 15 6 0 100 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 CY 1 No. of bits to shift: 10 bits (Contents of the leftmost bit is inserted.) 2-146 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Increment/Decrement Instructions Instruction Mnemonic Variations Function code Function INCREMENT BINARY ++ @++ 590 Increments the 4-digit hexadecimal content of the specified word by 1. DOUBLE INCREMENT BINARY ++L @++L 591 Increments the 8-digit hexadecimal content of the specified words by 1. Symbol + +L ++L(591) ++(590) Wd Wd: First word Wd Wd: Word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description ++: Word ++L: First word Wd ++ ++L ++ ++L UINT UDINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON if the result is 0000/0000 0000 after execution. Carry Flag P_CY Negative Flag P_N • OFF in all other cases. • ON if a digit in Wd/Wd+1 or Wd went from F to 0 during execution. • OFF in all other cases. • ON if bit 15 of Wd/Wd+1 is ON after execution. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2 ++/++L ++ Increment/Decrement Instructions ++/++L 2-147 2 Instructions Function  ++ The ++(590) instruction adds 1 to the binary content of Wd. The specified word will be incremented by 1 every cycle as long as the execution condition of ++(590) is ON. When the up-differentiated variation of this instruction (@++(590)) is used, the specified word is incremented only when the execution condition has gone from OFF to ON. Wd +1 Wd  + +L The ++L(591) instruction adds 1 to the 8-digit hexadecimal content of Wd+1 and Wd. The content of the specified words will be incremented by 1 every cycle as long as the execution condition of ++L(591) is ON. When the up-differentiated variation of this instruction (@++L(591)) is used, the content of the specified words is incremented only when the execution condition has gone from OFF to ON. Wd+1 Wd +1 Wd+1 Wd Sample program  Operation of ++(590)/++L(591) In the following example, the content of D100 will be incremented by 1 every cycle as long as CIO 0.00 is ON. 0.00 ++ D100 Incremented every cycle while CIO 0.00 is ON. Wd: D100 0 0 1 9 +1 Wd: D100 0 0 1 A In the following example, the content of D100 will be incremented by 1 every cycle as long as CIO 0.00 is ON. Incremented every cycle while CIO 0.00 is ON. 0.00 ++L D100 Wd+1: D101 0 0 0 0 Wd: D100 F F F F +1 Wd+1: D101 Wd: D100 0 0 0 1 0 0 0 0 : Execution of ++(590) or ++L(591) 0.00 Increment 2-148 Increment Increment Increment CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Operation of @++(590)/@++L(591) The up-differentiated variation is used in the following example, so the content of D100 will be incremented by 1 only when CIO 0.00 has gone from OFF to ON. @++ D100 Incremented every cycle while CIO 0.00 is ON. Wd: D100 0 0 1 9 +1 Wd: D100 0 0 1 A The up-differentiated variation is used in the following example, so the content of D101 and D100 will be incremented by 1 only when CIO 0.00 has gone from OFF to ON. @++L D100 2 Incremented only for up-differentiation. 0.00 Wd+1: D101 Wd: D100 F F F F +1 Wd+1: D101 Wd: D100 0 0 0 1 0 0 0 0 ++/++L 0 0 0 0 : Execution of @++(590) or @++L(591) 0.00 Increment CP1E CPU Unit Instructions Reference Manual(W483) Increment/Decrement Instructions 0.00 Increment 2-149 2 Instructions --/--L Instruction Mnemonic Variations Function code Function DECREMENT BINARY -- @-- 592 Decrements the 4-digit hexadecimal content of the specified word by 1. DOUBLE DECREMENT BINARY --L @--L 593 Decrements the 8-digit hexadecimal content of the specified words by 1. -Symbol --L --(592) --L(593) Wd: Word Wd Wd: First word Wd Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description --: Word --L: First word Wd -- --L -- --L UINT UDINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON if the result is 0000/0000 0000 after execution. Carry Flag P_CY Negative Flag P_N • OFF in all other cases. • ON if a digit in Wd/Wd+1 or Wd went from 0 to F during execution. • OFF in all other cases. • ON if bit 15 of Wd/Wd+1 is ON after execution. • OFF in all other cases. 2-150 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function  -Wd The --L(593) instruction subtracts 1 from the 8-digit hexadecimal content of Wd+1 and Wd. The content of the specified words will be decremented by 1 every cycle as long as the execution condition of -L(593) is ON. When the up-differentiated variation of this instruction (@--L(593)) is used, the content of the specified words is decremented only when the execution condition has gone from OFF to ON. Wd+1 -1 Wd Increment/Decrement Instructions The --(592) instruction subtracts 1 from the binary content of Wd. The specified word will be decremented by 1 every cycle as long as the execution condition of --(592) is ON. When the up-differentiated variation of this instruction (@ --(592)) is used, the specified word is decremented only when the execution condition has gone from OFF to ON.  --L Wd -1 Wd+1 Wd --/--L Sample program  Operation of --(592)/--L(593) The up-differentiated variation is used in the following example, so the content of D100 will be decremented by 1 only when CIO 0.00 has gone from OFF to ON. 0.00 -D100 Decremented every cycle while CIO 0.00 is ON. Wd: D100 0 0 2 0 -1 Wd: D100 0 0 1 F In the following example, the 8-digit hexadecimal content of D101 and D100 will be decremented by 1 every cycle as long as CIO 0.00 is ON. Decremented every cycle while CIO 0.00 is ON. 0.00 --L D100 Wd+1: D101 Wd: D100 0 0 0 1 0 0 0 0 -1 Wd+1: D101 Wd: D100 0 0 0 0 F F F F : Execution of --L(593) 0.00 Decrement CP1E CPU Unit Instructions Reference Manual(W483) Decrement Decrement 2 Decrement 2-151 2 Instructions  Operation of @--(592)/@--L(593) In the following example, the content of D100 will be decremented by 1 every cycle as long as CIO 0.00 is ON. 0.00 @− − D100 Decremented every cycle while CIO 0.00 is ON. Wd: D100 0 0 2 0 −1 Wd: D100 0 0 1 F The up-differentiated variation is used in the following example, so the content of D101 and D100 will be decremented by 1 only when CIO 0.00 has gone from OFF to ON. Decremented only for up-differentiation. 0.00 @− −L D100 Wd+1: D101 Wd: D100 0 0 0 1 0 0 0 0 −1 Wd+1: D101 Wd: D100 0 0 0 0 F F F F : Execution of @--L(593) 0.00 Decrement 2-152 Decrement CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions ++B/++BL Mnemonic Variations Function code Function INCREMENT BCD ++B @++B 594 Increments the 4-digit BCD content of the specified word by 1. DOUBLE INCREMENT BCD ++BL @++BL 595 Increments the 8-digit BCD content of the specified words by 1. ++B Symbol + +BL ++B(594) 2 ++BL(595) Wd: Word Wd Wd: First word Wd Area Step program areas Subroutines Interrupt tasks Usage OK OK OK ++B/++BL Applicable Program Areas Operands Data type Operand Size Description ++B: Word ++BL: First word Wd ++ ++L ++ ++L WORD DWORD 1 2  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Error Flag P_ER Equals Flag P_EQ Carry Flag P_CY Operation • ON if the content of Wd/Wd+1 and Wd is not BCD. • OFF in all other cases. • ON if the result is 0000/0000 0000 after execution. • OFF in all other cases. • ON if a digit in Wd/Wd+1 or Wd went from 9 to 0 during execution. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) Increment/Decrement Instructions Instruction 2-153 2 Instructions Function  ++B The ++B(594) instruction adds 1 to the BCD content of Wd. The specified word will be incremented by 1 every cycle as long as the execution condition of ++B(594) is ON. When the up-differentiated variation of this instruction (@++B(594)) is used, the specified word is incremented only when the execution condition has gone from OFF to ON. +1 Wd Wd  + +BL The ++BL(595) instruction adds 1 to the 8-digit BCD content of Wd+1 and Wd. The content of the specified words will be incremented by 1 every cycle as long as the execution condition of ++BL(595) is ON. When the up-differentiated variation of this instruction (@++BL(595)) is used, the content of the specified words is incremented only when the execution condition has gone from OFF to ON. Wd+1 Wd +1 Wd+1 Wd Sample program  Operation of ++B(594)/++BL(595) In the following example, the BCD content of D100 will be incremented by 1 every cycle as long as CIO 0.00 is ON. 0.00 ++B D100 Incremented every cycle while CIO 0.00 is ON. Wd: D100 0 0 1 9 +1 Wd: D100 0 0 2 0 In the following example, the 8-digit BCD content of D101 and D100 will be incremented by 1 every cycle as long as CIO 0.00 is ON. Incremented every cycle while CIO 0.00 is ON. 0.00 ++BL D100 Wd+1: D101 Wd: D100 0 0 0 0 9 9 9 9 +1 Wd+1: D101 Wd: D100 0 0 0 1 0 0 0 0 : Execution of ++B(594) / ++BL(595) 0.00 Increment 2-154 Increment Increment Increment CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Operation of @++B(594)/@++BL(595) The up-differentiated variation is used in the following example, so the content of D100 will be incremented by 1 only when CIO 0.00 has gone from OFF to ON. @++B D100 Incremented only for up-differentiation. Wd: D100 0 0 1 9 +1 Wd: D100 0 0 2 0 The up-differentiated variation is used in the following example, so the BCD content of D101 and D100 will be incremented by 1 only when CIO 0.00 has gone from OFF to ON. @++BL D100 2 Incremented only for up-differentiation. 0.00 Wd: D100 0 0 0 0 9 9 9 9 +1 Wd+1: D101 Wd: D100 0 0 0 1 0 0 0 0 ++B/++BL Wd+1: D101 : Execution of @++B(594) or @++BL(595) 0.00 Increment CP1E CPU Unit Instructions Reference Manual(W483) Increment/Decrement Instructions 0.00 Increment 2-155 2 Instructions --B/--BL Instruction Mnemonic Variations Function code Function DECREMENT BCD --B @--B 596 Decrements the 4-digit BCD content of the specified word by 1. DOUBLE DECREMENT BCD --BL @--BL 597 Decrements the 8-digit BCD content of the specified words by 1. --B Symbol --BL --B(596) --BL(597) Wd: Word Wd Wd: First word Wd Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Description --B: Word --BL: First word Wd Size -- --L -- --L WORD DWORD 1 2  Operand Specifications Word addresses Indirect DM addresses Area Wd CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Error Flag P_ER Equals Flag P_EQ Carry Flag P_CY Operation • ON if the content of Wd/Wd+1 and Wd is not BCD. • OFF in all other cases. • ON if the result is 0000/0000 0000 after execution. • OFF in all other cases. • ON if a digit in Wd/Wd+1 or Wd went from 0 to 9 during execution. • OFF in all other cases. Function  --B The --B(596) instruction subtracts 1 from the BCD content of Wd. The specified word will be decremented by 1 every cycle as long as the execution condition of --B(596) is ON. When the up-differentiated variation of this instruction (@--B(596)) is used, the specified word is decremented only when the execution condition has gone from OFF to ON. Wd Wd -1  --BL The --BL(597) instruction subtracts 1 from the 8-digit BCD content of Wd+1 and Wd. The content of the specified words will be decremented by 1 every cycle as long as the execution condition of --BL(597) is ON. When the up-differentiated variation of this instruction (@--BL(597)) is used, the content of the specified words is decremented only when the execution condition has gone from OFF to ON. 2-156 Wd+1 Wd -1 Wd+1 Wd CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sample program  Operation of --B(596)/--BL(597) 0.00 --B D100 Decremented every cycle while CIO 0.00 is ON. Wd: D100 0 0 2 0 -1 Wd: D100 0 0 1 9 In the following example, the 8-digit BCD content of D101 and D100 will be decremented by 1 every cycle as long as CIO 0.00 is ON. --BL Wd: D100 0 0 0 1 0 0 0 0 Wd+1: D101 Wd: D100 0 0 0 0 9 9 9 9 -1 --B/--BL Wd+1: D101 : Execution of --B(596) / --BL(597) 0.00 Decrement Decrement Decrement Decrement  Operation of @--B(596)/@--BL(597) The up-differentiated variation is used in the following example, so the BCD content of D100 will be decremented by 1 only when CIO 0.00 has gone from OFF to ON. 0.00 @--B D100 Decremented only for up-differentiation. Wd: D100 0 0 2 0 -1 Wd: D100 0 0 1 9 The up-differentiated variation is used in the following example, so the BCD content of D101 and D100 will be decremented by 1 only when CIO 0.00 has gone from OFF to ON. Decremented only for up-differentiation. 0.00 @--BL D100 2 Decremented every cycle while CIO 0.00 is ON. 0.00 D100 Increment/Decrement Instructions In the following example, the BCD content of D100 will be decremented by 1 every cycle as long as CIO 0.00 is ON. Wd+1: D101 Wd: D100 0 0 0 1 0 0 0 0 -1 Wd+1: D101 Wd: D100 0 0 0 0 9 9 9 9 : Execution of @--B(596) /@ --BL(597) 0.00 Decrement CP1E CPU Unit Instructions Reference Manual(W483) Decrement 2-157 2 Instructions Symbol Math Instructions +/+L Instruction Mnemonic Function code Variations Function SIGNED BINARY ADD WITHOUT CARRY + @+ 400 Adds 4-digit (single-word) hexadecimal data and/or constants. DOUBLE SIGNED BINARY ADD WITHOUT CARRY +L @+L 401 Adds 8-digit (double-word) hexadecimal data and/or constants. + +L +L(401) +(400) Symbol Au Au: Augend word Au Au: 1st augend word Ad Ad: Addend word Ad Ad: 1st addend word R: Result word R R: 1st result word R Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description +: Au Augend word +L: First augend word +: Ad Addend word +L: First addend word +: R Result word +L: First result word + +L + +L INT DINT 1 2 INT DINT 1 2 INT DINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Au, Ad R 2-158 CF Pulse bits TR bits --- --- --- OK --- CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Flags Operation Label + +L Error Flag P_ER OFF OFF Equals Flag P_EQ • ON when the result is 0. • ON when the result is 0. • OFF in all other cases. • OFF in all other cases. • ON when the addition results in a carry. • ON when the addition results in a carry. • OFF in all other cases. • OFF in all other cases. • ON when the result of adding two positive numbers is in the range 8000 to FFFF hex. • ON when the result of adding two positive numbers is in the range 80000000 to FFFFFFFF hex. • OFF in all other cases. • OFF in all other cases. • ON when the result of adding two negative numbers is in the range 0000 to 7FFF hex. • ON when the result of adding two negative numbers is in the range 00000000 to 7FFFFFFF hex. • OFF in all other cases. • OFF in all other cases. • ON when the leftmost bit of the result is 1. • ON when the leftmost bit of the result is 1. • OFF in all other cases. • OFF in all other cases. Carry Flag P_CY Overflow Flag P_OF Underflow Flag P_UF Negative Flag P_N Symbol Math Instructions Name 2 +/+L Function  + +(400) adds the binary values in Au and Ad and outputs the result to R. CY will turn ON when there is a carry. Au (Signed binary) + Ad (Signed binary) CY R (Signed binary)  +L +L(401) adds the binary values in Au and Au+1 and Ad and Ad+1 and outputs the result to R. CY will turn ON when there is a carry. Au+1 Au (Signed binary) + Ad+1 Ad (Signed binary) CY R+1 R (Signed binary) Sample program 0.00 + D100 D110 When CIO 0.00 is ON in this example, D100 and D110 will be added as 4-digit signed binary values and the result will be output to D120. D120 0.00 +L D100 When CIO 0.00 is ON, D101 and D100 and D111 and D110 will be added as 8-digit signed binary values and the result will be output to D121 and D120. D110 D120 CP1E CPU Unit Instructions Reference Manual(W483) 2-159 2 Instructions +C/+CL Instruction Mnemonic Function code Variations Function SIGNED BINARY ADD WITH CARRY +C @+C 402 Adds 4-digit (single-word) hexadecimal data and/or constants with the Carry Flag (CY). DOUBLE SIGNED BINARY ADD WITH CARRY +CL @+CL 403 Adds 8-digit (double-word) hexadecimal data and/or constants with the Carry Flag (CY). +C +CL +C(402) Symbol +CL(403) Au Au: Augend word Au Au: 1st augend word Ad Ad: Addend word Ad Ad: 1st addend word R R: Result word R R: 1st result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description +C: Augend word Au +CL: First augend word +C: Addend word Ad +CL: First addend word +C: Result word R +CL: First result word +C +CL +C +CL INT DINT 1 2 INT DINT 1 2 INT DINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Au, Ad CF Pulse bits TR bits --- --- --- OK R --- Flags Operation Name Label +C +CL Error Flag P_ER OFF OFF Equals Flag P_EQ • ON when the addition result is 0. • ON when the result is 0. • OFF in all other cases. • OFF in all other cases. • ON when the results in a carry. Carry Flag P_CY • ON when the addition results in a carry. • OFF in all other cases. • OFF in all other cases. Overflow Flag P_OF • ON when the addition result of adding two positive numbers and CY is in the range 8000 to FFFF hex. • ON when the result of adding two positive numbers and CY is in the range 80000000 to FFFFFFFF hex. • OFF in all other cases. • OFF in all other cases. Underflow Flag P_UF • ON when the addition result of adding two negative numbers and CY is in the range 0000 to 7FFF hex. • ON when the result of adding two negative numbers and CY is in the range 00000000 to 7FFFFFFF hex. • OFF in all other cases. • OFF in all other cases. Negative Flag P_N • ON when the leftmost bit of the result is 1. • ON when the leftmost bit of the result is 1. • OFF in all other cases. • OFF in all other cases. 2-160 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function  +C Symbol Math Instructions +C(402) adds the binary values in Au, Ad, and CY and outputs the result to R. Au (Signed binary) Ad (Signed binary) CY + CY will turn ON when there is a carry. CY R (Signed binary) 2  +CL +CL(403) adds the binary values in Au and Au+1, Ad and Ad+1, and CY and outputs the result to R. Au (Signed binary) Ad+1 Ad (Signed binary) + CY will turn ON when there is a carry. CY +C/+CL Au+1 CY R+1 R (Signed binary) Hint • To clear the Carry Flag (CY), execute the Clear Carry (CLC(041)) instruction. Sample program 0.00 +C D200 When CIO 0.00 is ON, D200, D210, and CY will be added as 4-digit signed binary values and the result will be output to D220. D210 D220 0.00 +CL D200 When CIO 0.00 is ON, D201, D200, D211, D210, and CY will be added as 8-digit signed binary values, and the result will be output to D221 and D220. D210 D220 CP1E CPU Unit Instructions Reference Manual(W483) 2-161 2 Instructions +B/+BL Instruction Mnemonic Function code Variations Function BCD ADD WITHOUT CARRY +B @+B 404 Adds 4-digit (single-word) BCD data and/or constants. DOUBLE BCD ADD WITHOUT CARRY +BL @+BL 405 Adds 8-digit (double-word) BCD data and/or constants. +B +BL +BL(405) +B(404) Symbol Au Au: Augend word Au Au: 1st augend word Ad Ad: Addend word Ad Ad: 1st addend word R R: Result word R R: 1st result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description +B: Augend word Au +BL: First augend word +B: Addend word Ad +BL: First addend word +B: Result word R +BL: First result word +B +BL +B +BL WORD DWORD 1 2 WORD DWORD 1 2 WORD DWORD 1 2  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Au, Ad CF Pulse bits TR bits --- --- --- OK R --- Flags Operation Name Label +B Error Flag Equals Flag Carry Flag 2-162 P_ER P_EQ P_CY +BL • ON when Au is not BCD. • ON when Au, Au +1 is not BCD. • ON when Ad is not BCD. • ON when Ad, Ad +1 is not BCD. • OFF in all other cases. • OFF in all other cases. • ON when the result is 0. • ON when the result is 0. • OFF in all other cases. • OFF in all other cases. • ON when the addition results in a carry. • ON when the addition results in a carry. • OFF in all other cases. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function  +B Symbol Math Instructions +B(404) adds the BCD values in Au and Ad and outputs the result to R. CY will turn ON when there is a carry. Au (BCD) + Ad (BCD) CY R (BCD)  +BL +BL(405) adds the BCD values in Au and Au+1 and Ad and Ad+1 and outputs the result to R, R+1. Au (BCD) + Ad+1 Ad (BCD) CY R+1 R (BCD) +B/+BL CY will turn ON when there is a carry. Au+1 Sample program 0.00 +B D100 When CIO 0.00 is ON in the following example, D100 and D110 will be added as 4-digit BCD values, and the result will be output to D120. D110 D120 0.00 +BL D100 When CIO 0.00 is ON in the following example, D101 and D100 and D111 and D110 will be added as 8-digit BCD values, and the result will be output to D121 and D120. D110 D120 CP1E CPU Unit Instructions Reference Manual(W483) 2 2-163 2 Instructions +BC/+BCL Instruction Mnemonic Function code Variations Function BCD ADD WITH CARRY +BC @+BC 406 Adds 4-digit (single-word) BCD data and/or constants with the Carry Flag (CY). DOUBLE BCD ADD WITH CARRY +BCL @+BCL 407 Adds 8-digit (double-word) BCD data and/or constants with the Carry Flag (CY). +BC +BCL +BCL(407) +BC(406) Symbol Au Au: Augend word Au Au: 1st augend word Ad Ad: Addend word Ad Ad: 1st addend word R R: Result word R R: 1st result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description +BC: Augend word Au +BCL: First augend word +BC: Addend word Ad +BCL: First addend word +BC: Result word R +BCL: First result word +BC +BCL +BC +BCL WORD DWORD 1 2 WORD DWORD 1 2 WORD DWORD 1 2  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Au, Ad CF Pulse bits TR bits --- --- --- OK R --- Flags Operation Name Label +BC Error Flag P_ER +BCL • ON when Au is not BCD. • ON when Au, Au +1 is not BCD. • ON when Ad is not BCD. • ON when Ad, Ad +1 is not BCD. • OFF in all other cases. • OFF in all other cases. • ON when the result is 0. Equals Flag P_EQ • ON when the result is 0. • OFF in all other cases. • OFF in all other cases. Carry Flag P_CY • ON when the addition results in a carry. • ON when the addition results in a carry. • OFF in all other cases. • OFF in all other cases. 2-164 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function  +BC Symbol Math Instructions +BC(406) adds BCD values in Au, Ad, and CY and outputs the result to R. Au (BCD) Ad (BCD) CY + CY will turn ON when there is a carry. CY R (BCD)  +BCL 2 +BCL(407) adds the BCD values in Au and Au+1, Ad and Ad+1, and CY and outputs the result to R, R+1. Au (BCD) Ad+1 Ad (BCD) + CY will turn ON when there is a carry. CY +BC/+BCL Au+1 CY R+1 R (BCD) Hint • To clear the Carry Flay (CY), execute the Clear Carry (CLC(041)) instruction. Sample program 0.00 +BC D100 When CIO 0.00 is ON in the following example, D100, D110, and CY will be added as 4-digit BCD values, and the result will be output to D120. D110 D120 0.00 +BCL D100 When CIO 0.00 is ON in the following example, D101, D100, D111, D110, and CY will be added as 8-digit BCD values, and the result will be output to D121 and D120. D110 D120 CP1E CPU Unit Instructions Reference Manual(W483) 2-165 2 Instructions –/–L Instruction Mnemonic Function code Variations Function SIGNED BINARY SUBTRACT WITHOUT CARRY – @– 410 Subtracts 4-digit (single-word) hexadecimal data and/or constants. DOUBLE SIGNED BINARY SUBTRACT WITHOUT CARRY –L @–L 411 Subtracts 8-digit (double-word) hexadecimal data and/or constants. – –L -L(410) -(410) Symbol Mi Su R Mi: Minuend word Mi Mi: Minuend word Su: Subtrahend word Su Su: Subtrahend word R: Result word R R: Result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description –: Mi Minuend word –L: First minuend word –: Su Subtrahend word –L: First subtrahend word –: R Result word –L: First result word – –L – –L INT DINT 1 2 INT DINT 1 2 INT DINT 1 2  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Mi, Su CF Pulse bits TR bits --- --- --- OK R --- Flags Operation Name Label – –L Error Flag P_ER OFF OFF Equals Flag P_EQ • ON when the result is 0. • ON when the result is 0. • OFF in all other cases. • OFF in all other cases. Carry Flag P_CY • ON when the subtraction results in a borrow. • ON when the subtraction results in a borrow. • OFF in all other cases. • OFF in all other cases. Overflow Flag P_OF • ON when the result of subtracting a negative number from a positive number is in the range 8000 to FFFF hex. • ON when the result of subtracting a negative number from a positive number is in the range 80000000 to FFFFFFFF hex. • OFF in all other cases. • OFF in all other cases. Underflow Flag P_UF • ON when the result of subtracting a negative number from a positive number is in the range 0000 to 7FFF hex. • ON when the result of subtracting a positive number from a negative number is in the range 00000000 to 7FFFFFFF hex. • OFF in all other cases. • OFF in all other cases. Negative Flag P_N • ON when the leftmost bit of the result is 1. • ON when the leftmost bit of the result is 1. • OFF in all other cases. • OFF in all other cases. 2-166 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function  – CY will turn ON when there is a borrow. CY Mi (Signed binary) Su (Signed binary) R (Signed binary)  –L Symbol Math Instructions –(400) subtracts the binary values in Su from Mi and outputs the result to R. When the result is negative, it is output to R as a 2’s complement. 2 –L(411) subtracts the binary values in Su and Su+1 from Mi and Mi+1 and outputs the result to R, R+1. When the result is negative, it is output to R and R+1 as a 2’s complement. CY CP1E CPU Unit Instructions Reference Manual(W483) Mi (Signed binary) Su+1 Su (Signed binary) R+1 R (Signed binary) –/–L CY will turn ON when there is a borrow. Mi+1 2-167 2 Instructions Hint • 2’s Complement A 2’s complement is the value obtained by subtracting each binary digit from 1 and adding one to the result. For example, the 2’s complement for 1101 is calculated as follows: 1111 (F hexadecimal) – 1101 (D hexadecimal) + 1 (1 hexadecimal) = 0011 (3 hexadecimal). The 2’s complement for 3039 (hexadecimal) is calculated as follows: FFFF (hexadecimal) – 3039 (hexadecimal) + 0001 (hexadecimal) – CFC7 (hexadecimal). Therefore, in case of 4-digit hexadecimal value, the 2’s complement can be calculated as follows: FFFF (hexadecimal) – a (hexadecimal) + 0001 (hexadecimal) = b (hexadecimal). To obtain the true number from the 2’s complement b (hexadecimal): a (hexadecimal) = 10000 (hexadecimal) – b (hexadecimal). For example, to obtain the true number from the 2’s complement CFC7 (hexadecimal): 10000 (hexadecimal) – CFC7 = 3039. Example 1 FFFF Hex 0001 Hex FFFE Hex Signed data 1 +1 2 Note 1 Unsigned data 65535 1 Note 1. Since the Negative Flag is ON, the result (FFFE hex) is a negative value (2’s complement) and is thus -2. 65534 Note 2 Negative Flag ON 2. Since the Carry Flag is OFF, the result (FFFE hex) is an unsigned positive value of 65534. Carry Flag OFF Example 2 Signed data Unsigned data FFFD Hex FFFF Hex 3 1 65533 65535 3. Since the Negative Flag is ON, the result (FFFE hex) is a negative value (2’s complement) and is thus -2. FFFE Hex 2 Note 3 65534 Note 4 4. Since the Carry Flag is ON, the result (FFFE hex) is a negative value (2’s complement) and becomes -2 when converted to a true value. Negative Flag ON Carry Flag OFF 20F55A10 - B8A360E3 = -97AE06D3. (Hexadecimal) 0.00 RSET 21.00 −L (1) 200 120 D100 P_CY −L (2) #00000000 D100 D100 P_CY SET “−”display 21.00 In this example, the eight-digit binary value in CIO 121 and CIO 120 is subtracted from the value in CIO 201 and CIO 200, and the result is output in eight-digit binary to D101 and D100. If the result is negative, the instruction at (2) will be executed, and the actual result will then be output to D101 and D100. 2-168 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Subtraction at (1) Mi+1: CIO 201 0 5 F Su+1: CIO 121 8 B CY 3 A 6 8 5 A 1 0 Su: CIO 120 0 6 R+1: D101 1 Mi: CIO 200 5 3 E The Carry Flag (CY) is ON, so the result is subtracted from 0000 0000 to obtain the actual number. R+1: D100 1 Symbol Math Instructions 2 F 9 2 D Subtraction at (2) 0 0 0 0 0 Su+1: D101 6 CY 5 1 R+1: D101 9 7 A E 0 0 2 Su: D100 F 9 2 D R+1: D100 0 6 D 3 –/–L 1 8 0 Final Subtraction Result Mi+1: CIO 201 2 0 F 5 Mi: CIO 200 5 Su+1: D101 6 CY 1 8 5 1 R+1: D101 9 7 A E A 1 0 Su: D100 F 9 2 D R+1: D100 0 6 D 3 The Carry Flag (CY) is turned ON, so the actual number is –97AE06D3. Because the content of D101 and D100 is negative, CY is used to turn ON CIO 21.00 to indicate this. Sample program 0.00 − D100 When CIO 0.00 is ON in the following example, D110 will be subtracted from D100 as 4-digit signed binary values and the result will be output to D120. D110 D120 0.00 −L D100 When CIO 0.00 is ON in the following example, D111 and D110 will be subtracted from D101 and D100 as 8-digit signed binary values and the result will be output to D121 and D120. D110 D120 If the result of the subtraction is a negative number (Mi 1.f ≥1.0.  Number of Digits The number of effective digits for floating-point data is seven digits for decimal.  Floating-point Data The following data can be expressed by floating-point data: • –∞ • –3.402823 × 1038 ≤ value ≤ –1.175494 × 10–38 • 0 • 1.175494 × 10–38 ≤ value ≤ 3.402823 × 1038 • +∞ • Not a number (NaN) –1.175494 × 10–38 –∞ Floating-point Math Instructions The Floating-point Math Instructions convert data and perform floating-point arithmetic operations. –3.402823 × 1038 –1 1.175494 × 10–38 0 1 3.402823 × 1038 +∞  Special Numbers The formats for NaN, ±∞, and 0 are as follows: • NaN*:e = 255, f ≠ 0 • +∞:e = 255, f = 0, s= 0 • –∞:e = 255, f = 0, s= 1 • 0: e = 0, f = 0 * NaN (not a number) is not a valid floating-point number. Executing floating-point calculation instructions will not result in NaN. CP1E CPU Unit Instructions Reference Manual(W483) 2-229 2 Instructions  Writing Floating-point Data When floating-point is specified for the data format in the I/O memory edit display in the CX-Programmer, standard decimal numbers input in the display are automatically converted to the floating-point format shown above (IEEE754-format) and written to I/O Memory. Data written in the IEEE754-format is automatically converted to standard decimal format when monitored on the display. 15 7 6 n n+1 s 0 f e It is not necessary for the user to be aware of the IEEE754 data format when reading and writing floating-point data. It is only necessary to remember that floating point values occupy two words each.  Numbers Expressed as Floating-point Values The following types of floating-point numbers can be used. Exponent (e) Mantissa (f) 0 0 0 Not 0 Non-normalized number Not 0 and not all 1’s Normalized number All 1’s (255) Infinity NaN Note A non-normalized number is one whose absolute value is too small to be expressed as a normalized number. Non-normalized numbers have fewer significant digits. If the result of calculations is a non-normalized number (including intermediate results), the number of significant digits will be reduced. (1) Normalized Numbers Normalized numbers express real numbers. The sign bit will be 0 for a positive number and 1 for a negative number. The exponent (e) will be expressed from 1 to 254, and the real exponent will be 127 less, i.e., –126 to 127. The mantissa (f) will be expressed from 0 to 233 – 1, and it is assume that, in the real mantissa, bit 233 is 1 and the binary point follows immediately after it. Normalized numbers are expressed as follows: (–1)(sign s) × 2(exponent e)–127 × (1 + mantissa × 2–23) Example 31 30 23 22 0 1 1 0 0 0 0 0 0 00 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sign: Exponent: Mantissa: Value: 2-230 – 128 – 127 = 1 1 + (222 + 221) × 2–23 = 1 + (2–1 + 2–2) = 1 + 0.75 = 1.75 –1.75 × 21 = –3.5 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions (2) Non-normalized Numbers Non-normalized numbers express real numbers with very small absolute values. The sign bit will be 0 for a positive number and 1 for a negative number. The exponent (e) will be 0, and the real exponent will be –126. Non-normalized numbers are expressed as follows: (–1)(sign s) × 2–126 × (mantissa x 2–23) Example 31 30 23 22 0 2 0 0 0 0 0 0 0 0 00 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sign: Exponent: Mantissa: Value: – –126 0 + (222 + 221) × 2–23 = 0 + (2–1 + 2–2) = 0 + 0.75 = 0.75 –0.75 × 2–126 (3) Zero Values of +0.0 and –0.0 can be expressed by setting the sign to 0 for positive or 1 for negative. The exponent and mantissa will both be 0. Both +0.0 and –0.0 are equivalent to 0.0. Refer to Floating-point Arithmetic Results, below, for differences produced by the sign of 0.0. (4) Infinity Values of +∞ and –∞ can be expressed by setting the sign to 0 for positive or 1 for negative. The exponent will be 255 (28 – 1) and the mantissa will be 0. (5) NaN NaN (not a number) is produced when the result of calculations, such as 0.0/0.0, ∞/∞, or ∞–∞, does not correspond to a number or infinity. The exponent will be 255 (28 – 1) and the mantissa will be not 0. Note There are no specifications for the sign of NaN or the value of the mantissa field (other than to be not 0).  Floating-point Arithmetic Results (1) Rounding Results The following methods will be used to round results when the number of digits in the accurate result of floating-point arithmetic exceeds the significant digits of internal processing expressions. If the result is close to one of two internal floating-point expressions, the closer expression will be used. If the result is midway between two internal floating-point expressions, the result will be rounded so that the last digit of the mantissa is 0. (2) Overflows, Underflows, and Illegal Calculations Overflows will be output as either positive or negative infinity, depending on the sign of the result. Underflows will be output as either positive or negative zero, depending on the sign of the result. Illegal calculations will result in NaN. Illegal calculations include adding infinity to a number with the opposite sign, subtracting infinity from a number with the opposite sign, multiplying zero and infinity, dividing zero by zero, or dividing infinity by infinity. The value of the result may not be correct if an overflow occurs when converting a floating-point number to an integer. CP1E CPU Unit Instructions Reference Manual(W483) Floating-point Math Instructions The mantissa (f) will be expressed from 1 to 233 – 1, and it is assume that, in the real mantissa, bit 233 is 0 and the binary point follows immediately after it. 2-231 2 Instructions (3) Precautions in Handling Special Values The following precautions apply to handling zero, infinity, and NaN. • The sum of positive zero and negative zero is positive zero. • The difference between zeros of the same sign is positive zero. • If any operand is a NaN, the Error Flag will be turned ON and the tests will not be executed. • Positive zero and negative zero are treated as equivalent in comparisons. • Comparison or equivalency tests on one or more NaN will not be executed and the Error Flag will be turned ON.  Floating-point Calculation Results When the absolute value of the result is greater than the maximum value that can be expressed for floating-point data, the Overflow Flag will turn ON and the result will be output as ±∞. If the result is positive, it will be output as +∞; if negative, then –∞. The Equals Flag will only turn ON when both the exponent (e) and the mantissa (f) are zero after a calculation. A calculation result will also be output as zero when the absolute value of the result is less than the minimum value that can be expressed for floating-point data. In that case the Underflow Flag will turn ON. 2-232 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions FIX/FIXL Instruction Mnemonic Function code Variations Function FIX @FIX 450 Converts a 32-bit floating-point value to 16-bit signed binary data and places the result in the specified result word. FLOATING TO 32-BIT FIXL @FIXL 451 Converts a 32-bit floating-point value to 32-bit signed binary data and places the result in the specified result words. FIX FIXL FIX(450) 2 FIXL(451) Symbol S: First source word S S: First source word R R: Result word R R: First result word FIX/FIXL S Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description FIX FIXL FIX S First source word REAL REAL 2 2 R First result word INT DINT 1 2 FIXL  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- OK R --- Flags Name Error Flag Label P_ER Operation • FIX ON if the integer portion of S+1 and S is not within the range of -32,768 to 32,767. • FIXL ON if the integer portion of S+1 and S is not within the range of -2,147,483,648 to 2,147,483,647. • ON if the data in S+1 and S is not a number (NaN). • OFF in all other cases. Equals Flag P_EQ • ON if the result is 0000. • OFF in all other cases. Negative Flag P_N Floating-point Math Instructions FLOATING TO 16-BIT • ON when the leftmost bit of the result is 1. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-233 2 Instructions Function  FIX FIX(450) converts the integer portion of the 32-bit floating-point number in S+1 and S (IEEE754-format) to 16-bit signed binary data and places the result in R. S+1 S Floating-point data (32 bits) R Signed binary data (16 bits) Only the integer portion of the floating-point data is converted, and the fraction portion is truncated. Example conversions: A floating-point value of 3.5 is converted to 3. A floating-point value of –3.5 is converted to –3.  FIXL FIXL(451) converts the integer portion of the 32-bit floating-point number in S+1 and S (IEEE754-format) to 32-bit signed binary data and places the result in R+1 and R. S+1 R+1 S R Floating-point data (32 bits) Signed binary data (32 bits) Only the integer portion of the floating-point data is converted, and the fraction portion is truncated. Example conversions: A floating-point value of 2,147,483,640.5 is converted to 2,147,483,640. A floating-point value of –214,748,340.5 is converted to –214,748,340. 2-234 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions FLT/FLTL Instruction Mnemonic Function code Variations Function FLT @FLT 452 Converts a 16-bit signed binary value to 32-bit floating-point data and places the result in the specified result words. 32-BIT TO FLOATING FLTL @FLTL 453 Converts a 32-bit signed binary value to 32-bit floating-point data and places the result in the specified result words. FLT FLTL 2 FLTL(453) FLT(452) Symbol S: Source word S S: First source word R R: First result word R R: First result word FLT/FLTL S Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Data type Operand Size Description FLT FLTL FLT S First source word INT DINT 1 2 R First result word REAL REAL 2 2 FLTL  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- OK R --- Flags Name Floating-point Math Instructions 16-BIT TO FLOATING Label Operation Error Flag P_ER OFF Equals Flag P_EQ • ON if both the exponent and mantissa of the result are 0. Negative Flag P_N • OFF in all other cases. • ON if the result is negative. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-235 2 Instructions Function  FLT FLT(452) converts the 16-bit signed binary value in S to 32-bit floating-point data (IEEE754-format) and places the result in R+1 and R. A single 0 is added after the decimal point in the floating-point result. R+1 S Signed binary data (16 bits) R Floating-point data (32 bits) Only values within the range of -32,768 to 32,767 can be specified for S. To convert signed binary data outside of that range, use FLTL(453). Example conversions: A signed binary value of 3 is converted to 3.0. A signed binary value of -3 is converted to -3.0.  FLTL FLTL(453) converts the 32-bit signed binary value in S+1 and S to 32-bit floating-point data (IEEE754format) and places the result in R+1 and R. A single 0 is added after the decimal point in the floatingpoint result. − CY 1 B 8 A 3 6 0 E 3 R+1: D00101 R+1: D00100 6 8 5 1 F 9 2 D Signed binary data within the range of –2,147,483,648 to 2,147,483,647 can be specified for S+1 and S. The floating point value has 24 significant binary digits (bits). The result will not be exact if a number greater than 16,777,215 (the maximum value that can be expressed in 24-bits) is converted by FLTL(453). Example Conversions: A signed binary value of 16,777,215 is converted to 16,777,215.0. A signed binary value of –16,777,215 is converted to –16,777,215.0. 2-236 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions +F, –F, *F, /F Instruction Mnemonic Variations Function FLOATING-POINT ADD +F @+F 454 Adds two 32-bit floating-point numbers and places the result in the specified result words. FLOATING-POINT SUBTRACT –F @–F 455 Subtracts one 32-bit floating-point number from another and places the result in the specified result words. FLOATING-POINT MULTIPLY *F @*F 456 Multiplies two 32-bit floating-point numbers and places the result in the specified result words. FLOATING-POINT DIVIDE /F @/F 457 Divides one 32-bit floating-point number by another and places the result in the specified result words. –F +F(454) –F(455) Au Au: First augend word Mi Mi: First Minuend word AD AD: First addend word Su Su: First Subtrahend word R: First result word R R: First result word R Symbol *F /F *F(456) /F(457) Md Md: First Multiplicand word Dd Dd: First Dividend word Mr Mr: First Multiplier word Dr Dr: First Divisor word R R: First result word R R: First result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Au First augend word AD First addend word Mi First Minuend word Su First Subtrahend word Md First Multiplicand word Mr First Multiplier word Dd First Dividend word Dr First Divisor word +F -F *F /F R First result word Data type Size REAL 2 REAL 2 REAL 2 REAL 2 REAL 2  Operand Specifications Word addresses Indirect DM addresses Area Au, AD, Mi, Su, Md, Mr, Dd, Dr Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK CF Pulse bits TR bits --- --- --- OK R CP1E CPU Unit Instructions Reference Manual(W483) 2 +F, –F, *F, /F +F Floating-point Math Instructions Function code --- 2-237 2 Instructions Flags Name Label Error Flag P_ER Operation +F • ON if the augend or addend data is not a number (NaN). • ON if +∞ and –∞ are added. -F • ON if the minuend or subtrahend is not a number (NaN). • ON if +∞ is subtracted from +∞. • ON if –∞ is subtracted from –∞. *F • ON if the multiplicand or multiplier is not a number (NaN). • ON if +∞ and 0 are multiplied. • ON if –∞ and 0 are multiplied. /F • ON if the dividend or divisor is not a number (NaN). • ON if the dividend and divisor are both 0. • ON if the dividend and divisor are both +∞ or –∞. OFF in all other cases. Equals Flag P_EQ Overflow Flag P_OF Underflow Flag P_UF Negative Flag P_N • ON if both the exponent and mantissa of the result are 0. • OFF in all other cases. • ON if the absolute value of the result is too large to be expressed as a 32-bit floating-point value. • OFF in all other cases. • ON if the absolute value of the result is too small to be expressed as a 32-bit floating-point value. • OFF in all other cases. • ON if the result is negative. • OFF in all other cases. Function The data specified in Au/Mi/Md/Dd and the data specified in AD/Su/Mr/Dr are added (+F), subtracted (-F), multiplied (*F), or divided (/F) as single-precision floating-point data (32 bits: IEEE754) and output to R+1, R.  +F + Au+1 Au Augend (floating-point data, 32 bits) Ad+1 Ad Addend (floating-point data, 32 bits) R+1 R Result (floating-point data, 32 bits) Mi+1 Mi Minuend (floating-point data, 32 bits) Su+1 Su Subtrahend (floating-point data, 32 bits) R+1 R Result (floating-point data, 32 bits)  -F – 2-238 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  *F Md Multiplicand (floating-point data, 32 bits) Mr+1 Mr Multiplier (floating-point data, 32 bits) R+1 R Result (floating-point data, 32 bits) Floating-point Math Instructions × Md+1  /F ÷ Dd Dividend (floating-point data, 32 bits) Dr+1 Dr Divisor (floating-point data, 32 bits) R+1 R Result (floating-point data, 32 bits) 2 • If the absolute value of the result is greater than the maximum value that can be expressed as floating-point data, the Overflow Flag will turn ON and the result will be output as ±∞. • If the absolute value of the result is less than the minimum value that can be expressed as floatingpoint data, the Underflow Flag will turn ON and the result will be output as 0.  Operation rules The result of an operation is output as shown below depending on the combination of floating-point data.  FLOATING-POINT ADD (+F) Augend Addend 0 Numeral +∞ –∞ 0 0 Numeral +∞ –∞ Numeral Numeral See note 1. +∞ –∞ +∞ +∞ +∞ +∞ ER –∞ –∞ –∞ ER –∞ NaN NaN ER Note 1 The results could be zero (including underflows), a numeral, +∞, or –∞. ER The Error Flag will be turned ON and the instruction will not be executed.  FLOATING-POINT SUBTRACT (–F) Minuend Subtrahend 0 Numeral +∞ –∞ 0 0 Numeral +∞ –∞ Numeral Numeral See note 1. +∞ –∞ +∞ –∞ –∞ ER –∞ –∞ +∞ +∞ +∞ ER NaN NaN ER Note 1 The results could be zero (including underflows), a numeral, +∞, or –∞. ER The Error Flag will be turned ON and the instruction will not be executed. CP1E CPU Unit Instructions Reference Manual(W483) 2-239 +F, –F, *F, /F Dd+1 2 Instructions  FLOATING-POINT MULTIPLY (*F) Multiplicand Multiplier 0 Numeral +∞ –∞ 0 0 0 ER ER Numeral 0 See note 1. +/–∞ +/–∞ +∞ ER +/–∞ +∞ –∞ –∞ ER +/–∞ –∞ +∞ NaN NaN ER Note 1 The results could be zero (including underflows), a numeral, +∞, or –∞. ER The Error Flag will be turned ON and the instruction will not be executed.  FLOATING-POINT DIVIDE (/F) Dividend Divisor 0 Numeral +∞ –∞ 0 ER +/–∞ +∞ –∞ Numeral 0 See note 2. +/–∞ +/–∞ +∞ 0 0 (See note 1) ER ER –∞ 0 0 (See note 1) ER ER NaN NaN ER Note 1 The results will be zero for underflows. 2 The results could be zero (including underflows), a numeral, +∞, or –∞. ER 2-240 The Error Flag will be turned ON and the instruction will not be executed. CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions =F, <>F, F, >=F Instruction Mnemonic Single-precision Floating-point Comparison Function code Function --- 329 330 331 332 333 334 These input comparison instructions compare two single-precision floating point values (32-bit IEEE754 constants and/or the contents of specified words) and create an ON execution condition when the comparison condition is true. Single-precision Floating-point Comparison LD connection Symbol 2 AND connection OR connection Mnemonic Mnemonic Mnemonic S1: Comparison data 1 S1 S1: Comparison data 1 S1 S1: Comparison data 1 S2 S2: Comparison data 2 S2 S2: Comparison data 2 S2 S2: Comparison data 2 Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Description Data type Size S1 Comparison data 1 REAL 2 S2 Comparison data 2 REAL 2  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S1, S2 Constants CF Pulse bits TR bits OK --- --- --- Flags Name Error Flag Label P_ER Operation • ON if S1+1, S1 or S2+1, S2 is not a number (NaN). • ON if S1+1, S1 or S2+1, S2 is +∞. • ON if S1+1, S1 or S2+1, S2 is –∞. • OFF in all other cases. Greater Than Flag P_GT • ON if S1+1, S1 > S2+1, S2. • OFF in all other cases. Greater Than or Equal Flag P_GE Equal Flag P_EQ Not Equal Flag P_NE • ON if S1+1, S1 ≥ S2+1, S2. • OFF in all other cases. • ON if S1+1, S1 = S2+1, S2. • OFF in all other cases. • ON if S1+1, S1 ≠ S2+1, S2. • OFF in all other cases. Less Than Flag P_LT • ON if S1+1, S1 < S2+1, S2. • OFF in all other cases. Less Than or Equal Flag P_LE • ON if S1+1, S1 ≤ S2+1, S2. • OFF in all other cases. Negative Flag P_N Unchanged CP1E CPU Unit Instructions Reference Manual(W483) 2-241 =F, <>F, F, >=F S1 Operand Floating-point Math Instructions =F <>F F >=F Variations 2 Instructions Function The input comparison instruction compares the data specified in S1 and S2 as single-precision floating point values (32-bit IEEE754 data) and creates an ON execution condition when the comparison condition is true. When the data is stored in words, S1 and S2 specify the first of two words containing the 32-bit data. It is also possible to input the floating-point data as an 8-digit hexadecimal constant. The input comparison instructions are treated just like the LD, AND, and OR instructions to control the execution of subsequent instructions. LD connection ON execution condition when comparison result is true. , AND<>, OR<>, LD<, AND<, OR<, LD<=, AND<=, OR<=, LD>, AND>, OR>, LD>=, AND>=, OR>= Code 329 330 331 332 333 2-242 Option (data format) + F: Single-precision floating-point data Mnemonic LD=F Name LOAD FLOATING EQUAL AND=F AND FLOATING EQUAL OR=F OR FLOATING EQUAL LD<>F LOAD FLOATING NOT EQUAL AND<>F AND FLOATING NOT EQUAL True if S1+1, S1 = S2+1, S2 True if S1+1, S1≠ S2+1, S2 OR<>F OR FLOATING NOT EQUAL LDF LOAD FLOATING GREATER THAN AND>F AND FLOATING GREATER THAN OR>F OR FLOATING GREATER THAN Function True if S1+1, S1 < S2+1, S2 True if S1+1, S1 ≤ S2+1, S2 True if S1+1, S1 > S2+1, S2 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Code 334 Mnemonic Name Function LOAD FLOATING GREATER THAN OR EQUAL AND>=F AND FLOATING GREATER THAN OR EQUAL OR>=F OR FLOATING GREATER THAN OR EQUAL True if S1+1, S1 ≥ S2+1, S2 Precautions • Input comparison instructions cannot be used as right-hand instructions, i.e., another instruction must be used between them and the right bus bar. Sample program When CIO 0.00 is ON in the following example, the floating point data in D101, D100 is compared to the floating point data in D201, D200. If the content of D101, D100 is less than that of D201, D200, execution proceeds to the next line and CIO 50.00 is turned ON. If the content of D101, D100 is not less than that of D201, D200, execution does not proceed to the next instruction line. −3.5 Does not yield an ON condition. 15 0 S1: D100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 S1+1:D101 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 15 S2: D200 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 1 S2+1:D201 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 Decimal value: 4,294,967,296 Decimal value: 5,566,555,656 4294967296<5566555656 Yields an ON condition. CP1E CPU Unit Instructions Reference Manual(W483) 2 =F, <>F, F, >=F 50.00 0.00 Floating-point Math Instructions LD>=F 2-243 2 Instructions FSTR Instruction Mnemonic FLOATING-POINT TO ASCII Variations FSTR Function code Function 448 Expresses a 32-bit floating-point value (IEEE754format) in standard decimal notation or scientific notation and converts that value to ASCII text. @FSTR FSTR FSTR(448) Symbol S S: First source word C C: First control word D D: First destination word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size S First source word REAL 2 C First control word UINT 3 D First destination word UINT Variable C: First Control Word 0 hex: Decimal format 1 hex: Scientific notation Total characters Data format 2 to 18 hex (2 to 24 characters, see note) Fractional digits 0 to 7 hex (see note) Note There are limits on the total number of characters and the number of fractional digits.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- OK C, D --- Flags Name Error Flag Label P_ER Operation • ON if the data in S+1 and S is not a valid floating-point number (NaN). • ON if the data in S+1 and S is +o or -o. • ON if the Data Format setting in C is not 0000 or 0001. • ON if the Total Characters setting in C+1 is not within the allowed range. (See 1. Limits on the Total Number of ASCII Characters above for details.) • ON if the Fractional Digits setting in C+2 is not within the allowed range. (See 3. Limits on the Number of Digits in the Fractional Part above for details.) Equals Flag P_EQ • ON if the conversion result is 0. • OFF in all other cases. 2-244 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function FSTR(448) expresses the 32-bit floating-point number in S+1 and S (IEEE754-format) in decimal notation or scientific notation according to the control data in words C to C+2, converts the number to ASCII text, and outputs the result to the destination words starting at D. • Decimal notation Expresses a real number as an integer and fractional part. Example: 124.56 • Scientific notation Expresses a real number as an integer part, fractional part, and exponent part. Example: 1.2456E-2 (1.2456×10-2) Floating-point Math Instructions • The content of C (Data format) specifies whether to express the number in S+1, S in decimal notation or scientific notation. 2 • The content of C+1 (Total characters) specifies the number of ASCII characters after conversion including the sign symbol, numbers, decimal point and spaces. The ASCII text is stored in D and subsequent words in the following order: leftmost byte of D, rightmost byte of D, leftmost byte of D+1, rightmost byte of D+1, etc. Decimal notation (C=0 hex) -1.23456 Conversion to ASCII text (SP represents a space.) Example: -1.23456 S Floating-point S+1 data 15 D: 87 2D 20 2E 33 00 Rounded off 0 20 31 32 34 00 Stored in destination words beginning with D. Total characters = 8 (C+1 = 8 hex) Fractional digits = 3 (C+2 = 3 hex) ASCII characters are stored in order. (Leftmost byte → rightmost byte) Scientific notation (C=0001 hex) - 1.23E+00 Conversion to ASCII text (SP represents a space.) 15 87 2D 31 32 45 30 00 0 20 2E 33 2B 30 00 Stored in destination words beginning with D. Total characters = 10 (C+1 = A hex) Fractional digits = 2 (C+2 = 2 hex) ASCII characters are stored in order. (Leftmost byte → rightmost byte) CP1E CPU Unit Instructions Reference Manual(W483) 2-245 FSTR • The content of C+2 (Fractional digits) specifies the number of digits (characters) below the decimal point. 2 Instructions  Storage of ASCII Text After the floating-point number is converted to ASCII text, the ASCII characters are stored in the destination words beginning with D, as shown in the following diagrams. Different storage methods are used for decimal notation and scientific notation. Decimal notation (C=0 hex) Total number of characters Integer part Sign Fractional part Decimal point If there are more fractional digits in the source data than specified in C+1, the extra digits will be rounded off. If there are fewer fractional digits, zeroes (ASCII: 30 hex) will added to the end of the source data. A decimal point (ASCII: 2E hex) is added if the number fractional digits is greater than 0. Spaces (ASCII: 20 hex) are added if the integer part of the floating-point data is shorter than the integer part of the result (total number of characters - sign digit - decimal point - fractional digits). Positive number: Space (20 hex) Negative number: Minus sign (2D hex) Scientific notation (C=1 hex) Total number of characters Integer part Fractional part Exponential part Sign Sign Decimal point E number of characters Total number of characters0 to 9Total are written as 00 to 09. Positive: Plus sign (2B hex) Negative: Minus sign (2D hex) Letter E (ASCII: 45 hex) is written here. If there are more fractional digits in the source data than specified in C+1, the extra digits will be rounded off. If there are fewer fractional digits, zeroes (ASCII: 30 hex) will added to the end of the source data. A decimal point (ASCII: 2E hex) is added if the number fractional digits is greater than 0. Spaces (ASCII: 20 hex) are added if the integer part of the floating-point data is shorter than the integer part of the result (total number of characters - sign digit - decimal point - fractional digits - E digit). Positive number: Space (20 hex) Negative number: Minus sign (2D hex) Note Either one or two bytes of zeroes are added to the end of ASCII text as an end code. • Total number of characters odd: 00 hex is stored after the ASCII text. • Total number of characters even: 0000 hex is stored after the ASCII text.  Limits on the Number of ASCII Characters There are limits on the number of ASCII characters in the converted number. The Error Flag will be turned ON if the number of characters exceeds the maximum allowed. • Limits on the Total Number of ASCII Characters 1) Decimal Notation (C = 0 hex) • When there is no fractional part (C+2 = 0 hex): 2 ≤ Total Characters ≤ 24 • When there is a fractional part (C+2 = 1 to 7 hex): (Fractional digits + 3) ≤ Total Characters ≤ 24 2) Scientific Notation (C = 1 hex) • When there is no fractional part (C+2 = 0 hex): 6 ≤ Total Characters ≤ 24 • When there is a fractional part (C+2 = 1 to 7 hex): (Fractional digits + 7) ≤ Total Characters ≤ 24 2-246 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • Limits on the Number of Digits in the Integer Part 1) Decimal Notation (C = 0 hex) • When there is no fractional part (C+2 = 0 hex): 1 ≤ Number of Integer Digits ≤ 24-1 Floating-point Math Instructions • When there is a fractional part (C+2 = 1 to 7 hex): 1 ≤ Number of Integer Digits ≤ (24 - Fractional digits - 2) 2) Scientific Notation (C = 1 hex) 1 digit (fixed) • Limits on the Number of Digits in the Fractional Part 1) Decimal Notation (C = 0 hex) • Fractional Digits ≤ 7 2 • Also: Fractional Digits ≤ (Total Number of ASCII Characters - 3) 2) Scientific Notation (C =1 hex) FSTR • Fractional Digits ≤ 7 • Also: Fractional Digits ≤ (Total Number of ASCII Characters - 7) Sample program  Converting to ASCII Text in Decimal Notation When CIO 0.00 is ON in the following example, FSTR(448) converts the floating-point data in D1 and D0 to decimal-notation ASCII text and writes the ASCII text to the destination words beginning with D100. The contents of the control words (D10 to D12) specify the details on the data format (decimal notation, 7 characters total, 3 fractional digits). 0.00 15 FSTR D0 D10 D100 0 D0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 D1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 Conversion 0.327457 Storage conditions D10 D11 D12 0(Hex) 7(Hex) 3(Hex) Total number of characters Decimal notation Total characters = 7 characters Fractional digits = 3 digits (characters) Rounded off 0 .327457 Spaces D100 D101 D102 D103 20(Space) 30(0) 33(3) 37(7) CP1E CPU Unit Instructions Reference Manual(W483) Fractional part 20(Space) 2E(.) 32(2) 00 2-247 2 Instructions  Converting to ASCII Text in Scientific Notation When CIO 0.00 is ON in the following example, FSTR(448) converts the floating-point data in D1 and D0 to scientific-notation ASCII text and writes the ASCII text to the destination words beginning with D100. The contents of the control words (D10 to D12) specify the details on the data format (scientific notation, 11 characters total, 3 fractional digits). 0.00 15 FSTR D0 D10 D100 0 D0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 D1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 Conversion 0.327457 Storage conditions D10 0001(Hex) Scientific notation D11 000B(Hex) Total characters = 11 characters D12 0003(Hex) Fractional digits = 3 digits (characters) Total number of characters 3 . 2 7 457E - 0 1 Spaces Fractional part D100 D101 D102 D103 D104 D105 2-248 20(Space) 33(3) 32(2) 35(5) 2D(-) 31(1) Rounded off 20(Space) 2E(.) 37(7) 45(E) 30(0) 00 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions FVAL Instruction Mnemonic FVAL Function code Function 449 Converts a number expressed in ASCII text (decimal or scientific notation) to a 32-bit floating-point value (IEEE754-format) and outputs the floatingpoint value to the specified words. @FVAL FVAL FVAL(449) Symbol S S: First source word D D: First destination word 2 FVAL Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size S First source word UINT Variable D First destination word REAL 2  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S, D Constants CF Pulse bits TR bits --- --- --- --- Flags Name Error Flag Label P_ER Operation • ON if the digits (integer and fractional parts) in the source data starting at S are not 30 to 39 hex (0 to 9). • ON if the first two digits of the exponential part do not contain 45 and 2B hex (E+) or 45 and 2D hex (E-). in the source data starting at S are not 30 to 39 hex (0 to 9). • ON if there are two or more exponential parts in the source data. • ON if the data is +∞ or -∞ after conversion. • ON if there are 0 characters in the text data. • ON if a byte containing 00 hex is not found within the first 25 characters. • OFF in all other cases. Equals Flag P_EQ Floating-point Math Instructions ASCII TO FLOATING-POINT Variations • ON if the conversion result is 0. • OFF in all other cases. Function FVAL(449) converts the specified ASCII text number (starting at word S) to a 32-bit floating-point number (IEEE754-format) and outputs the result to the destination words starting at D. FVAL(449) can convert ASCII text in decimal or scientific notation if it meets the following conditions: Up to 6 characters are valid, excluding the sign, decimal point, and exponent. Any characters beyond the 6th character will be ignored. • Decimal Notation Real numbers expressed with an integer and fractional part. Example: 124.56 CP1E CPU Unit Instructions Reference Manual(W483) 2-249 2 Instructions • Scientific Notation Real numbers expressed as an integer part, fractional part, and exponent part. Example: 1.2456E-2 (1.2456×10-2) The data format (decimal or scientific notation) is detected automatically. The ASCII text must be stored in S and subsequent words in the following order: leftmost byte of S, rightmost byte of S, leftmost byte of S+1, rightmost byte of S+1, etc. Decimat notation 15 87 2D 20 32 2E 35 37 00 0 20 31 33 34 36 38 00 Conversion of ASCII text number 32-bit floating-point data to 32-bit floating-point data 1110100101111001 1100001011110110 Sign Exponent Stored in D and D+1. 15 0 D 1110100101111001 D+1 1 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 Spaces are ignored during conversion If there are more than 6 digits, the 7th and higher digits are ignored. (Digits do not include the sign, decimal point, and exponent characters.) Scientific notation 15 87 0 Conversion of ASCII text number 20 2D to 32-bit floating-point data 32-bit floating-point data 31 20 2 -1.234×10 1100110011001101 32 2E 1100001011110110 34 33 Sign Exponent 2B 45 32 30 Stored in D and D+1. 00 00 − SP SP 1 . 2 3 4 E + 0 2 (2D)(20)(20)(31)(2E)(32)(33)(34)(45)(2B)(30)(32) Spaces are ignored during conversion 2-250 15 0 D 1100110011001101 D+1 1 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Storage of ASCII Text The following diagrams show how the ASCII text number is converted to floating-point data. Different conversion methods are used for numbers stored with decimal notation and scientific notation. S Floating-point Math Instructions ASCII Character Storage FVAL(449) converts the ASCII characters starting with the leftmost byte of S and continuing until a byte containing 00 hex is reached. There must be a byte containing 00 hex within the first 25 bytes. 00 Up to 00 hex (25 characters max.) 2 Decimal notation 15 87 0 (20) (20) Digit 25 characters max Integer part Fractional part FVAL Sign Sign SP SP 00 00 . Decimal point The 7th and higher digits are ignored. (The sign, decimal point, and exponent characters are not counted as digits.) Any spaces (20 hex) or zeroes (30 hex) before the first digit are ignored. Positive number: Space (20 hex) or Plus sign (2B hex) Negative number: Minus sign (2D hex) Scientific notation 15 87 Sign 0 25 characters max. (20) (20) Digit .(2E) Digit Digit ... E(45) Sign Digit Digit Integer part Fractional part Exponential part Sign Sign SP . E 00 Positive: + (2B hex) Negative: - (2D hex) E (45) Decimal point The 7th and higher digits are ignored. (The sign, decimal point, and exponent characters are not counted as digits.) 00 Any spaces (20 hex) or zeroes (30 hex) before the first digit are ignored. Positive number: Space (20 hex) or Plus sign (2B hex) Negative number: Minus sign (2D hex) CP1E CPU Unit Instructions Reference Manual(W483) 2-251 2 Instructions Sample program  Converting ASCII Text in Decimal Notation to Floating-point Data When CIO 0.00 is ON in the following example, FVAL(449) converts the specified decimal-notation ASCII text number in the source words starting at D0 to floating-point data and writes the result to destination words D100 and D101. 0.00 Ignored FVAL D0 D100 The 7th and higher digits are ignored. (The sign, decimal point, and leading zeroes/spaces are not counted.) 20 (Space) 31 (1) 32 (2) 34 (4) 32 (2) 00 D0 D1 D2 D3 D4 D5 Conversion 15 0 0000010011000000 101111111 0011110 Storage 15 0 D100 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 D101 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0  Converting ASCII Text in Scientific Notation When CIO 0.00 is ON in the following example, FVAL(449) converts the specified scientific-notation ASCII text number in the source words starting at D0 to floating-point data and writes the result to destination words D100 and D101. 0.00 FVAL D0 D100 Ignored Ignored 1. 2345E - 0 2 D0 D1 D2 D3 D4 D5 D6 20 (Space) Conversion 15 0 0100001010101111 1011110001001010 Storage 15 0 D100 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1 D101 1 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 2-252 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Table Data Processing Instructions Instruction Mnemonic SWAP BYTES Variations SWAP Function code Function 637 Switches the leftmost and rightmost bytes in all of the words in the range. @SWAP Table Data Processing Instructions SWAP 2 SWAP SWAP(637) N N: Number of words R1 R1: First word in range SWAP Symbol Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size N Number of words Description UINT 1 R1 First word in range UINT Variable N: Number of words N specifies the number of words in the range and must be 0001 to FFFF hexadecimal (or &1 to &65,535). R1: First word in range Leftmost byte Rightmost byte 15 8 7 0 R1 to to to R1+(N–1) Note R1 and R1+(N-1) must be in the same data area.  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK N R1 Constants CF OK --- Pulse bits TR bits --- --- --- Flags Name Error Flag Label P_ER Operation • ON if the N is 0. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-253 2 Instructions Function SWAP(637) switches the position of the two bytes in all of the words in the range of memory from R1 to R1+N-1. Byte position is swapped. R1 N Hint • This instruction can be used to reverse the order of ASCII-code characters in each word. Sample program When CIO 0.00 is ON in the following example, SWAP(637) switches the data in the leftmost bytes with the data in the rightmost bytes in each word in the 10-word range from W0 to W9. 0.00 SWAP N &10 R1 W0 15 8 7 15 8 7 0 4 1 4 2 W0 4 2 4 1 W1 4 3 4 4 W1 4 4 4 3 W2 4 5 4 6 W2 4 6 4 5 3 0 W9 to to to 2-254 0 W0 3 0 3 1 W9 to 3 1 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions FCS Mnemonic FRAME CHECKSUM Function code Variations FCS @FCS Function Calculates the FCS value for the specified range and outputs the result in ASCII. 180 FCS FCS(180) Symbol C C: First control word R1 R1: First word in range D D: First destination word 2 FCS Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size C First control word UDINT 2 R1 First word in range UINT Variable D First destination word UINT Variable C: First control word R1: First word in range 15 0 W: Number of words/bytes in range &1 to &65535 (decimal) or #0001 to #FFFF (hex) 0 15 14 13 12 11 0000 00 0000 0 15 C C+1 R1 Calculation range to to R1+(W–1) D: First destination word 0000 When bytes are specified as the operation units: 15 0 D 0 Starting byte (Valid only when bit 13 is 1.) When words are specified as the operation units: 15 0 15 D+1 D 0: Leftmost byte 1: Rightmost byte Calculation units 0 The leftmost four digits are stored in D+1 and the rightmost four digits are stored in D. 0: Words 1: Bytes 0 Note C and C+1, all of the words in the calculation range must be in the same data area.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK C CF Pulse bits TR bits --- --- --- OK R1, D --- Flags Name Error Flag Label P_ER Table Data Processing Instructions Instruction Operation • ON if the content of C is not within the specified range of 0001 through FFFF. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-255 2 Instructions Function FCS(180) calculates the FCS value for W units of data beginning with the data in R1, converts the value to ASCII code, and outputs the result to D (for bytes) or D+1 and D (for words). The settings in C+1 determine whether the units are words or bytes, whether the data is binary (signed or unsigned) or BCD, and whether to start with the right or left byte of R1 if bytes are being added. R1 W (Table length) ASCII conversion Calculation FCS value D When bit 13 of C+1 has been set to 1, FCS(180) operates on bytes of data. In this case, bit 12 determines whether the calculation starts with the rightmost byte of R1 (bit 12 = 1) or the leftmost byte of R1 (bit 12 = 0). Sample program When CIO 0.00 is ON in the following example, FCS(180) calculates the FCS value for the 10 bytes of data beginning with the rightmost byte of D100 and writes the result to D200. 0.00 FCS C D300 R1 D100 D D200 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 C+1: D301 Always 0. Starting byte (Effective only if bit 13 is 1.) 1: Rightmost byte Units 1: Bytes Always 0. 8 7 0 0 15 C: D300 0 0 A 10 bytes Table length 15 8 7 R1: D100 0 0 1 D101 0 2 0 3 D102 0 4 0 5 D103 0 6 0 7 D104 0 8 0 0 D105 0 0 3 0 3 8 15 D: D200 2-256 The FCS value for the shaded bytes is calculated and converted to ASCII. 0 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Data Control Instructions Data Control Instructions PIDAT Instruction Mnemonic PID CONTROL WITH AUTOTUNING Variations Function code Function --- 191 Executes PID control according to the specified parameters. The PID constants can be autotuned. PIDAT 2 PID PIDAT PIDAT(191) Symbol S S: Input word C C: First parameter word D D: Output word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Operand Description S Input word C First parameter word D Output word Data type Size UINT 1 WORD 41 UINT 1 C: First Parameter Word 15 0 15 0 Set value (SV) C+7 Manipulated variable output lower limit C+1 Proportional band (P) C+8 Manipulated variable output upper limit C+2 Integral constant (Tik) C+3 Derivative constant (Tdk) C+4 Sampling period(τ) C C+9 15 14 13 12 0 0 0 0 AT Calculation Gain 15 8 7 4 32 1 0 AT Command Bit 0 C+5 15 Forward/reverse designation PID constant update timing designation Manipulated variable output setting 8 7 0 Limit-cycle Hysteresis C+11 2-PID parameter(α) 15 14 13 12 11 C+10 4 3 0 C+40 Work area (30 words: Cannot be used by user.) C+6 0 0 0 Output range Integral and derivative unit Input range Manipulated variable output limit control CP1E CPU Unit Instructions Reference Manual(W483) 2-257 2 Instructions  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S, C, D Constants CF Pulse bits TR bits --- --- --- --- Flags Name Error Flag Label P_ER Operation • ON if the C data is out of range. • ON if the actual sampling period is more than twice the designated sampling period. • ON if an error occurred during autotuning. • OFF in all other cases. Greater Than Flag P_GT Less Than Flag P_LT Carry Flag P_CY • ON if the manipulated variable after the PID action exceeds the upper limit. • OFF in all other cases. • ON if the manipulated variable after the PID action is below the lower limit. • OFF in all other cases. • ON while PID control is being executed. • OFF in all other cases. Function When the execution condition is ON, PIDAT(191) carries out target value filtered PID control with two degrees of freedom according to the parameters designated by C (set value, PID constant, etc.). It takes the specified input range of binary data from the contents of input word S and carries out the PID action according to the parameters that are set. The result is then stored as the manipulated variable in output word D. The parameter settings are read when the execution condition turns from OFF to ON, and the Error Flag will turn ON if the settings are outside of the permissible range. If the settings are within the permissible range, PID processing will be executed using the initial values. Bumpless operation is not performed at this time. It will be used for manipulated variables in subsequent PID processing execution. (Bumpless operation is processing that gradually and continuously changes the manipulated variable in order to avoid the adverse effects of sudden changes.) When the execution condition turns ON, the PV for the specified sampling period is entered and processing is performed. Parameters (C to C+8) PV input (S) PID control Manipulated variable (D) Autotuning The status of the AT Command Bit (bit 15 of C+9) is checked every cycle. If this control bit is turned ON in a given cycle, PIDAT(191) will begin autotuning the PID constants. (The changes in the SV will not be reflected while autotuning is being performed.) The limit-cycle method is used for autotuning. PIDAT(191) forcibly changes the manipulated variable (max. manipulated variable ↔ min. manipulated variable) and monitors the characteristics of the controlled system. The PID constants are calculated based on the characteristics that were observed, and the new P, I, and D constants are stored automatically in C+1, C+2, and C+3. At this point, the AT Command Bit (bit 15 of C+9) is turned OFF and PID control resumes with the new PID constants in C+1, C+2, and C+3. • If the AT Command Bit is ON when PIDAT(191) execution begins, autotuning will be performed first and then PID control will start with the calculated PID constants. • If the AT Command Bit is turned ON during PIDAT(191) execution, PIDAT(191) interrupts the PID control being performed with the user-set PID constants, performs autotuning, and then resumes PID control with the calculated PID constants. 2-258 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions The following flowchart shows the autotuning procedure: Data Control Instructions The AT Command Bit (bit 15 of C+9) is ON at the start of PIDAT(191) execution or it is turned ON during execution. PID control is interrupted, the PV is forcibly changed, and the PID constants are calculated automatically. The calculated P, I, and D constants are set in C+1, C+2, and C+3 respectively. The AT Command Bit is turned OFF. 2 PID control starts (or restarts) with the new PID constants. 2 Also, if an AT execution error occurs, PID control will start with the PID constants that were being used before autotuning began. In both cases described in notes 1 and 2, the PID constants will be enabled if they were already calculated when autotuning was interrupted. PID Control • The number of valid input data bits within the 16 bits of the PV input (S) is designated by the input range setting in C+6, bits 08 to 11. For example, if 12 bits (4 hex) is designated for the input range, the range from 0000 hex to 0FFF hex will be enabled as the PV. (Values greater than 0FFF hex will be regarded as 0FFF hex.) • The set value range also depends on the input range. • Measured values (PV) and set values (SV) are in binary without sign, from 0000 hex to the maximum value of the input range. • The number of valid output data bits within the 16 bits of the manipulated variable output is designated by the output range setting in C+6, bits 00 to 03. For example, if 12 bits (4 hex) is designated for the output range, the range from 0000 hex to 0FFF hex will be output as the manipulated variable. • For proportional operation only, the manipulated variable output when the PV equals the SV can be designated as follows: 0: Output 0% 1: Output 50%. • The direction of proportional operation can be designated as either forward or reverse. • The upper and lower limits of the manipulated variable output can be designated. • The sampling period can be designated in units of 10 ms (0.01 to 99.99 s), but the actual PID action is determined by a combination of the sampling period and the time of PIDAT(191) instruction execution (with each cycle). • The timing of enabling changes made to PID constants can be set to either 1) the beginning of PIDAT(191) instruction execution or 2) the beginning of PID instruction execution and each sampling period. Only the proportional band (P), integral constant (Tik), and derivative constant (Tdk) can be changed each sampling cycle (i.e., during PID instruction execution). The timing is set in bit 1 of C+5. CP1E CPU Unit Instructions Reference Manual(W483) 2-259 PIDAT Note 1 If autotuning is interrupted by turning OFF the AT Command Bit during autotuning, PID control will start with the PID constants that were being used before autotuning began. 2 Instructions Hint • PIDAT(191) is executed as if the execution condition was a STOP-RUN signal. PID calculations are executed when the execution condition remains ON for the next cycle after C+11 to C+40 are initialized. Therefore, when using the Always ON Flag (ON) as an execution condition for PIDAT(191), provide a separate process where C+11 to C+40 are initialized when operation is started. Precautions • A PID parameter storage word cannot be shared by multiple PIDAT instructions. Even when the same parameter is used in multiple PIDAT instructions, separate words must be specified. • When changing the PID constants manually, set the PID constant change enable setting (bit 1 of C+5) to 1 so that the values in C+1, C+2, and C+3 are refreshed each sampling period in the PID calculation. This setting also allows the PID constants to be adjusted manually after autotuning. • Of the PID parameters (C to C+40), only the following parameters can be changed when the execution condition is ON. When any other values have been changed, be sure to change the execution condition from OFF to ON to enable the new settings. • Set value (SV) in C (Can be changed during PID control only. An SV change during autotuning will not be reflected.) • PID constant change enable setting (bit 1 of C+5) • P, I, and D constants in C+1, C+2, and C+3 (Changes to these constants will be reflected each sampling period only if the PID constant change enable setting (bit 1 of C+5) is set to 1.) • AT Command Bit (bit 15 of C+9) • AT Calculation Gain (bits 0 to 14 of C+9) and Limit-cycle Hysteresis (C+10) (These values are read when autotuning starts.) Performance Specifications Item Specifications PID control method --- Target value filter-type two-degrees-of-freedom PID method (forward/reverse) Number of PID control loops --- Unlimited (1 loop per instruction) τ 0.01 to 99.99 s Proportional band P 0.1 to 999.9% Integral constant Tik 1 to 8191, 9999 (No integral action for sampling period multiple, 9999.) Derivative constant Tdk 0 to 8191 (No derivative action for sampling period multiple, 0.) Sampling period PID constant Set value SV 0 to 65535 (Valid up to maximum value of input range.) Measured value PV 0 to 65535 (Valid up to maximum value of input range.) Manipulated variable MV 0 to 65535 (Valid up to maximum value of output range.) Calculation Method Calculations in PID control are performed by the target value filtered control with two degrees of freedom. 2-260 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Block Diagram for Target Value PID with Two Degrees of Freedom When target-value PID control with two degrees of freedom is used, on the other hand, there is no overshooting, and response toward the target value and stabilization of disturbances can both be speeded up (3). Target value filter Set value (target value) SV Proportional + integral elements 1 + (1 – λ) Ti · s + Kp + + Kp Manipulated variable Ti · s 1 + Ti · s – – 2 Preceding derivative-type elements Kp PV Kp:Proportional constant Ti:Integral time Td:Derivative time s:Laplace operator α:2-PID parameter λ:Incomplete derivative coefficient Td/s 1 + λ · Td · s Simple PID Control PIDAT Measured value (PV) Feed-forward PID Control (3) (1) Target response As the target response is slowed, the disturbance response worsens. Disturbance response (2) Overshoot As the disturbance response is slowed, the target response worsens. PID Parameter Settings Control data Item Contents Setting range Change with ON input condition C Set value (SV) The target value of the process being controlled. Binary data (of the same number of bits as specified for the input range) Allowed C+1 Proportional band The parameter for P action expressing the proportional control range/total control range. 0001 to 270F hex (1 to 9999); (0.1% to 999.9%, in units of 0.1%) C+2 Tik Integral Constant A constant expressing the strength of the integral action. As this value increases, the integral strength decreases. 0001 to 1FFF hex (1 to 8191); (9999 = Integral operation not executed) (See note 1.) Can be changed with input condition ON if bit 1 of C+5 is 1. C+3 Tdk Derivative Constant A constant expressing the strength of the derivative action. As this value increases, the derivative strength decreases. 0001 to 1FFF hex (1 to 8191); (0000 = Derivative operation not executed) (See note 1.) C+4 Sampling period (τ) Sets the period for executing the PID action. 0001 to 270F hex (1 to 9999); (0.01 to 99.99 s, in units of 10 ms) Bits 04 to 15 of C+5 2-PID parameter (α) The input filter coefficient. Normally use 0.65 (i.e., a setting of 000). The filter efficiency decreases as the coefficient approaches 0. 000 hex: α = 0.65 Setting from 100 to 163 hex means that the value of the rightmost two digits is set from α= 0.00 to α= 0.99. (See note 2.) Bit 03 of C+5 Manipulated variable output designation Designates the manipulated variable output for when the PV equals the SV. 0: 1: Bit 01 of C+5 PID constant change enable setting The timing of enabling changes made to the proportional band (P), integral constant (Tik), and derivative constant (Tdk) for use in PID calculations. 0: At start of PID instruction execution 1: At start of PID instruction execution and each sampling period CP1E CPU Unit Instructions Reference Manual(W483) Data Control Instructions When overshooting is prevented with simple PID control, stabilization of disturbances is slowed (1). If stabilization of disturbances is speeded up, on the other hand, overshooting occurs and response toward the target value is slowed (2). Not allowed Output 0% Output 50% Allowed 2-261 2 Instructions Control data Bit 00 of C+5 Item Contents Setting range PID forward/reverse designation Determines the direction of the proportional action. 0: Reverse action 1: Forward action Bit 12 of C+6 Manipulated variable output limit control Determines whether or not limit control will apply to the manipulated variable output. 0: 1: Disabled (no limit control) Enabled (limit control) Bits 08 to 11 of C+6 Input range The number of input data bits. 0: 8 bits 1: 9 bits 2: 10 bits 3: 11 bits 4: 12 bits Bits 04 to 07 of C+6 Integral and derivative unit Determines the unit for expressing the integral and derivative constants. 1: 9: Bits 00 to 03 of C+6 Output range The number of output data bits. (The number of output bits is automatically the same as the number of input bits.) 0: 8 bits 1: 9 bits 2: 10 bits 3: 11 bits 4: 12 bits C+7 Manipulated variable output lower limit The lower limit for when the manipulated variable output limit is enabled. 0000 to FFFF (binary) (See note 3.) C+8 Manipulated variable output upper limit The upper limit for when the manipulated variable output limit is enabled. 0000 to FFFF (binary) (See note 3.) Bit 15 of C+9 AT Command Bit This control bit starts autotuning. As a Control Bit: • Set the AT Command Bit to 1 to perform autotuning. (Autotuning can be started while PIDAT(191) is being executed.) • 0 → 1: Executes autotuning. • This bit is turned OFF automatically when autotuning is completed. Autotuning will be interrupted if the AT Command Bit is turned OFF manually. In this case, the PID constants will be enabled if they were already calculated when autotuning was interrupted. Bits 00 to 11 of C+9 AT Calculation Gain Set this parameter to adjust the contribution of the PID calculation results to the stored values. Normally, leave this parameter set to its default (0000). Change with ON input condition Not allowed 5: 13 bits 6: 14 bits 7: 15 bits 8: 16 bits Sampling period multiple Time (unit: 100 ms) 5: 13 bits 6: 14 bits 7: 15 bits 8: 16 bits Allowed • 1 → 0: Interrupts autotuning. (PID(191) turns the bit OFF automatically when autotuning is completed. As a Flag: 0: Autotuning is not being executed. 1: Autotuning is being executed. 0000 hex: 1.00 (Default) 0001 to 03E8 hex (1 to 1000); (0.01 to 10.00, in units of 0.01) Allowed (These parameters are read when autotuning starts.) • Increase the value when emphasizing stability. • Decrease the value when emphasizing responsiveness. C+10 Limit-cycle Hysteresis Sets the hysteresis when the limit cycle is generated. The default setting for reverse operation turns ON the MV with a hysteresis of SV−20%. Increase this setting if a proper limit cycle cannot be generated because the PV is unstable. However, the AT accuracy will decline if the Limit-cycle Hysteresis is higher than necessary. 0000 hex: 0.20% (Default) 0001 to 03E8 hex: 0.01 to 10.00% in units of 0.01% FFFF hex: 0.00% Note The percentage is with respect to the input range. Note 1 When the unit is designated as 1, the range is from 1 to 8,191 times the period. When the unit is designated as 9, the range is from 0.1 to 819.1 s. When 9 is designated, set the integral and derivative times to within a range of 1 to 8,191 times the sampling period. 2 Setting the 2-PID parameter (α) to 000 yields 0.65, the normal value. 3 When the manipulated variable output limit control is enabled (i.e., set to “1”), set the values as follows: 0000 ≤ MV output lower limit ≤ MV output upper limit ≤ Max. value of output range 2-262 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sampling Period and Cycle Time • If the sampling period is less than the cycle time, PID control is executed with each cycle and not with each sampling period. • If the sampling period is greater than or equal to the cycle time, PID control is not executed with each cycle, but PID(190) is executed when the cumulative value of the cycle time (the time between PID instructions) is greater than or equal to the sampling period. The surplus portion of the cumulative value (i.e., the cycle time’s cumulative value minus the sampling period) is carried forward to the next cumulative value. For example, suppose that the sampling period is 100 ms and that the cycle time is consistently 60 ms. For the first cycle after the initial execution, PID(190) will not be executed because 60 ms is less than 100 ms. For the second cycle, 60 ms + 60 ms is greater than 100 ms, so PID(190) will be executed. The surplus of 20 ms (i.e., 120 ms – 100 ms = 20 ms) will be carried forward. 1 cycle 1 cycle PID 1 cycle PID 60ms 1 cycle PID 60ms 1 cycle PID PID 60ms 60ms Processing Initial processing (PID processing with initial values) Reading of measurement time (60 ms) Not executed. (60 ms + 60 ms = 120 ms) Executed Less than 100 ms, so PID is not executed. CP1E CPU Unit Instructions Reference Manual(W483) Greater than 100 ms, so PID is executed and 20 ms is carried forward. (20 ms + 60 ms = 80 ms) Not executed. Less than 100 ms, so PID is not executed. (80 ms + 60 ms = 140 ms) Executed Greater than 100 ms, so PID is executed and 40 ms is carried forward. 2-263 2 PIDAT For the third cycle, the surplus 20 ms is added to 60 ms. Because the sum of 80 ms is less than 100 ms, PID(190) will not be executed. For the fourth cycle, the 80 ms is added to 60 ms. Because the sum of 140 ms is greater than 100 ms, PID(190) will be executed and the surplus of 40 ms (i.e., 120 ms – 100 ms = 20 ms) will be carried forward. This procedure is repeated for subsequent cycles. Data Control Instructions The sampling period can be designated in units of 10 ms (0.01 to 99.99 s), but the actual PID action is determined by a combination of the sampling period and the time of PID instruction execution (with each cycle). The relationship between the sampling period and the cycle time is as follows: 2 Instructions PID control  Proportional Action (P) Proportional action is an operation in which a proportional band is established with respect to the set value (SV), and within that band the manipulated variable (MV) is made proportional to the deviation. An example for reverse operation is shown in the following illustration. If the proportional action is used and the present value (PV) becomes smaller than the proportional band, the manipulated variable (MV) is 100% (i.e., the maximum value). Within the proportional band, the MV is made proportional to the deviation (the difference between from SV and PV) and gradually decreased until the SV and PV match (i.e., until the deviation is 0), at which time the MV will be at the minimum value of 0% (or 50%, depending on the setting of the manipulated variable output designation parameter). The MV will also be 0% when the PV is larger than the SV. The proportional band is expressed as a percentage of the total input range. The smaller the proportional band, the larger the proportional constant and the stronger the corrective action will be. With proportional action an offset (residual deviation) generally occurs, but the offset can be reduced by making the proportional band smaller. If it is made too small, however, hunting will occur. Proportional Action (Reverse Action) Manipulated variable 100% Adjusting the Proportional Band Proportional band when MV output designation is 0 (output 0%) Proportional band when MV output designation is 1 (output 50%) 50% 0% Proportional band too narrow (hunting occurring) Offset SV Proportional band just right Set point Proportional band too wide (large offset) Proportional band when MV output designation is 0 (output 0%) Proportional band when MV output designation is 1 (output 50%)  Integral Action (I) Combining integral action with proportional action reduces the offset according to the time that has passed, so that the PV will match the SV. The strength of the integral action is indicated by the integral time, which is the time required for the manipulated variable of the integral action to reach the same level as the manipulated variable of the proportional action with respect to the step deviation, as shown in the following illustration. The shorter the integral time, the stronger the correction by the integral action will be. If the integral time is too short, the correction will be too strong and will cause hunting to occur. Integral Action Step response Deviation 0 Manipulated 0 variable Pi Action and Integral Time Step response Deviation 0 PI action I action Manipulated variable P action 0 Ti 2-264 Ti: Integral time CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Derivative Action (D) The strength of the derivative action is indicated by the derivative time, which is the time required for the manipulated variable of the derivative action to reach the same level as the manipulated variable of the proportional action with respect to the step deviation, as shown in the following illustration. The longer the derivative time, the stronger the correction by the derivative action will be. Derivative Action 2 Step response Deviation 0 PIDAT Manipulated 0 variable PD Action and Derivative Time Ramp response Deviation 0 PD action P action D action Manipulated 0 variable Td: Derivative time PID Action PID action combines proportional action (P), integral action (I), and derivative action (D). It produces superior control results even for control objects with dead time. It employs proportional action to provide smooth control without hunting, integral action to automatically correct any offset, and derivative action to speed up the response to disturbances. Step Response of PID Control Action Output Step response Deviation 0 PID action I action P action D action Manipulated 0 variable Ramp Response of PID Control Action Output Ramp response Deviation 0 PID action I action Manipulated variable Data Control Instructions Proportional action and integral action both make corrections with respect to the control results, so there is inevitably a response delay. Derivative action compensates for that drawback. In response to a sudden disturbance it delivers a large manipulated variable and rapidly restores the original status. A correction is executed with the manipulated variable made proportional to the incline (derivative coefficient) caused by the deviation. P action D action 0 CP1E CPU Unit Instructions Reference Manual(W483) 2-265 2 Instructions Direction of Action When using PID control, select either of the following two control directions. In either direction, the MV increases as the difference between the SV and the PV increases. • Forward action: MV is increased when the PV is larger than the SV. • Reverse action: MV is increased when the PV is smaller than the SV. Reverse Action Output 100% Forward Action Output 100% 50% 50% 0% 0% Low SV temperature (MV output designation: 50%) High temperature Low temperature SV High temperature Adjusting PID Parameters The general relationship between PID parameters and control status is shown below. • When it is not a problem if a certain amount of time is required for stabilization (settlement time), but it is important not to cause overshooting, then enlarge the proportional band. • When overshooting is not a problem but it is desirable to quickly stabilize control, then narrow the proportional band. If the proportional band is narrowed too much, however, then hunting may occur. When P is narrowed Control by measured PID SV SV Control by measured PID When P is enlarged • When there is broad hunting, or when operation is tied up by overshooting and undershooting, it is probably because integral action is too strong. The hunting will be reduced if the integral time is increased or the proportional band is enlarged. • If the period is short and hunting occurs, it may be that the control system response is quick and the derivative action is too strong. In that case, set the derivative action lower. Control by measured PID (when hunting occurs in a short period) Control by measured PID (when loose hunting occurs) SV SV Enlarge I or P. 2-266 Lower D. CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sample program  Interrupting PID Control to Perform Autotuning PIDAT S 10 C D200 D 20 • While CIO 0.00 is ON, PID control is executed at the sampling period intervals according to the parameters set in D200 to D210. The manipulated variable is output to CIO 20. W0.0 SETB • The PID constants used in PID calculations will not be changed even if the proportional band (P), integral constant (Tik), or derivative constant is changed after CIO 0.00 turns ON. D209 #000F C:D200 Parameters PV: CIO 10 PID calculation 0 1 2 C Set value: 300 C+1:D201 0 Proportional band: 10.0% C+2:D202 0 4 B 0 Integral time: 120.0 s C+3:D203 0 1 9 0 Derivative time: 40.0 s C+4:D204 0 0 3 2 C+5:D205 0 0 0 0 C+6:D206 0 4 9 4 C+7:D207 0 0 0 0 C+8:D208 0 0 0 0 C+9:D209 0 0 0 0 Sampling period: 0.5 s Reverse operation (bit 00: 0), PID constant change enable setting = OFF (bit 01: 0), set value = manipulated variable output 50% (bit 03: 1), 2-PID parameter = 0.65 (bits 04 to 15: 000 hex) Manipulated variable output range: 12 bits (bits 00 to 03: 4 hex), Integral/derivative constant: time designation (bits 04 to 07: 9 hex) Input range: 12 bits (bits 08 to 11: 4 hex), Manipulated variable output limit control disabled (bit 12: 0) C+10:D210 0 0 0 0 0 6 4 C+11:D211 Work area to MV output: CIO 20 C+40:D240 PID control starts AT Command Bit OFF (bit 15: 0), AT Calculation Gain = 1.00 (bits 00 to 11: 000 hex) Limit-cycle Hysteresis = 0.20% PID starting integral manipulated variable designation = start from same integral manipulated value as manipulated variable output designation (bit 14: 0 and bit 13: 0) Calculated PID constants are set. CIO 0.00 PID control AT executing PID control W0.00 Bit 15 of D209 PV SV Time MV Time CP1E CPU Unit Instructions Reference Manual(W483) 2-267 2 PIDAT • At the rising edge of W 0.0 (OFF to ON), SETB(532) turns ON bit 15 of D209 (C+9) and starts autotuning. When autotuning is completed, the calculated P, I, and D constants are written to C+1, C+2, and C+3. PID control is then restarted with the new PID constants. Data Control Instructions • At the rising edge of CIO 0.00 (OFF to ON), the work area in D211 to D240 is initialized according to the parameters (shown below) set in D200 to D208. After the work area has been initialized, PID control is executed and the manipulated variable is output to CIO 20. 0.00 2 Instructions  Starting PIDAT(191) with Autotuning At the rising edge of CIO 0.00 (OFF to ON), autotuning will be performed first if bit 15 of D209 (C+9) is ON. When autotuning is completed, the calculated P, I, and D constants are written to C+1, C+2, and C+3. PID control is then started with the calculated PID constants. 0.00 PIDAT S 10 C D200 D 20 PID control and autotuning start. Calculated PID constants are set. CIO 0.00 AT executing PID control Bit 15 of D209 PV SV Time MV Time  Interrupting Autotuning Before Completion Autotuning can be interrupted by turning bit 15 of D209 (C+9) from ON to OFF. PID control will be restarted with the P, I, and D constants that were in effect before autotuning was started. PID control starts. CIO 0.00 PID control AT executing AT starts PID control AT is interrupted. Bit 15 of D209 PV SV PID control is restarted with the existing PID constants. Time 2-268 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic TIME-PROPORTIONAL OUTPUT Variations TPO Function code Function 685 Inputs the duty ratio or manipulated variable from the specified word, converts the duty ratio to a time-proportional output based on the specified parameters, and outputs the result from the specified output. --- TPO Data Control Instructions TPO 2 TPO Symbol S: Input word C C: First parameter word R R: Pulse output bit TPO S Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand S Description Input word Data type Size UINT 1 C First parameter word WORD 7 R Pulse output bit BOOL --- S: Input Word Specifies the input word containing the input duty ratio or manipulated variable. • Input duty ratio: 0000 to 2710 hex (0.00% to 100.00%) • Input manipulated variable (See note.): 0000 to FFFF hex (0 to 65,535 max.) (Bits 00 to 03 of C specify the manipulated variable range, i.e., the number of valid bits in the manipulated variable. Specify the same number of bits as specified for the output range setting in PIDAT(191).) Note If S is a manipulated variable, specify the word containing the manipulated variable output from a PIDAT(191) instruction. C: First Parameter Word Bits 04 to 07 of C specify the input type, i.e., whether the input word contains an input duty ratio or manipulated variable. (Set these bits to 0 hex to specify a input duty ratio or to 1 hex to specify a manipulated variable.) The following diagram shows the locations of the parameter data. 15 12 11 8 7 4 3 15 0 C Manipulated variable range Input type Input read timing Output limit function 0 C+1 Control period C+2 Output lower limit C+3 Output upper limit C+4 C+5 Work area (3 words, cannot be used by user) C+6 Note For details, see the description of each parameter. CP1E CPU Unit Instructions Reference Manual(W483) 2-269 2 Instructions R: Pulse Output Bit Specifies the destination output bit for the pulse output. Normally, specify an output bit allocated to a Transistor Output Unit and connect a solid state relay to the Transistor Output Unit.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK --- --- --- --- --- S CF Pulse bits TR bits --- --- --- OK C OK OK OK OK --- R Flags Name Error Flag Label ER Operation • ON if the input data in S is out of range. (The input data setting range depends on the input type setting.) • ON if the C data is out of range. (The manipulated variable range will cause an error only when the input type is set to manipulated variable.) • ON if the control period in C+1 is out of range. • ON if the output limit function is enabled but the output lower limit (C+2) or output upper limit (C+3) is out of range. • ON if the output limit function is enabled but the output lower limit (C+2) is less than or equal to the output upper limit (C+3). • OFF in all other cases. Function Receives a duty ratio or manipulated variable input from the word address specified by S, converts the duty ratio to a time-proportional output (see note) based on the parameters specified in words C to C+3, and outputs a pulse output to the bit specified by R. Note A time-proportional output is changed proportionally based on the ON/OFF ratio in input word S. The period in which the ON and OFF status changes is known as the control period and is set in parameter word C+1. Example: When the control period is 1 s and the input value is 50%, the bit is ON for 0.5 s and OFF for 0.5 s. When the control period is 1 s and the input value is 80%, the bit is ON for 0.8 s and OFF for 0.2 s. Generally, TPO(685) is used together with PIDAT(191) and the PID instruction’s manipulated variable result word (D) is specified as the input word (S) for the TPO(685) instruction. Also, an output bit allocated to a Transistor Output Unit is generally specified as R and a solid state relay is connected to the Transistor Output Unit to perform time-proportional control of a heater (proportional control of the ON/OFF ratio).  Combining TPO(685) with a PID Control Instruction When combining TPO(685) with a PID control instruction, the manipulated variable input is divided by the manipulated variable range to calculate the duty ratio, that duty ratio is converted to a time-proportional output, and pulses are output. 0.00 PIDAT S PV input C PID parameters D0 Manipulated variable PID calculation Manipulated variable (MV) Output range MV D0 = MV range TPO D0 MV C Parameters R Pulse output MV ÷ MV range Duty ratio (0.00% to 100.00%) Conversion to time-proportional output 2-270 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  External Wiring Example Connect the Transistor Output Unit to a solid state relay (SSR) as shown in the following diagram. Heater Transistor Output Unit COM Data Control Instructions In this case, set the same value for the PID Control instruction’s output range and the TPO(685) instruction’s manipulated variable range. For example, when the PID Control instruction’s output range and the TPO(685) instruction’s manipulated variable range are both set to 12 bits (0000 to 0FFF hex), the duty ratio is calculated by dividing the manipulated variable from the PID Control instruction by 0FFF hex and TPO(685) converts that duty ratio to a time-proportional output. SSR 12 to 24 VDC + 2 TPO AC Parameter Settings Control data Item Word C Contents Setting range Bits 00 to 03 Manipulated variable range Specifies the number of input data bits. 0 hex: 8 bits 1 hex: 9 bits 2 hex: 10 bits 3 hex: 11 bits 4 hex: 12 bits 5 hex: 13 bits 6 hex: 14 bits 7 hex: 15 bits 8 hex: 16 bits 04 to 07 Input type Specifies whether S contains a duty ratio or manipulated variable. 0 hex: Duty ratio Setting range for S: 0000 to 2710 hex (0.00 to 100.00%) Change with ON input condition Allowed Allowed 1 hex: Manipulated variable Setting range for S: 0000 to FFFF hex (0 to 65,535) (The maximum setting depends on the MV range set with bits 00 to 03 of C.) 08 to 11 Input read timing Specifies the input read timing. 0 hex: Use the beginning value of the control period Allowed 1 hex: Use lower value 2 hex: Use higher value 3 hex: Continuous adjustment 12 to 15 C+1 00 to 15 Output limit control Specifies whether the output limit function is enabled or disabled. 0 hex: Disabled Control period Control period (Time period in which the ON/OFF changes are made.) 0064 to 270F hex (1.00 to 99.99 s) Allowed 1 hex: Enabled (See note.) Allowed Note For example, 1.00 s is set as 0064 hex, and not 0001 hex. C +2 00 to 15 Output lower limit Specifies the lower limit when the output limit is enabled. 0000 to 2710 hex (0 to 100.00%) Allowed C +3 00 to 15 Output upper limit Specifies the upper limit when the output limit is enabled. 0000 to 2710 hex (0 to 100.00%) Allowed C+4 00 to 15 Work area --- 00 to 15 This work area is used by the system. It cannot be used by the user. Cannot be used. C+5 C+6 00 to 15 Note When the output limit control function is enabled, set the lower and upper limits as follows: 0000 hex ≤ lower limit ≤ upper limit ≤ 2710 hex. Execution • The instruction is executed while the input condition is ON. • When instruction execution starts, the output bit (R) is turned ON/OFF according to the duty ratio. CP1E CPU Unit Instructions Reference Manual(W483) 2-271 2 Instructions • The parameters (in C to C+3) are read in real time each time that the instruction is executed. When changing the parameters, change all of them at the same time so that different sets of parameters are not mixed. • The output (R) is turned ON/OFF when the instruction is executed and the accuracy of the output’s ON/OFF timing is 10 ms max. • Execution of the instruction stops when the input condition goes OFF. At that time, the elapsed time value will be reset and the control period will be initialized. • The input type setting (bits 04 to 07 of C) determines whether the input word (S) contains a duty ratio or manipulated variable. When S contains the manipulated variable, the duty ratio is calculated by dividing the manipulated variable input by the manipulated variable range (bits 00 to 03 of C). • The input read timing setting (bits 08 to 11 of C) specifies when the input word (S) is read, as shown in the following table: Input read timing Description 0: Use the beginning value of the control period The duty ratio input is read at the beginning of the control period and the ratio cannot be changed during the control period. 1: Use lower value If the duty ratio input falls below the duty ratio at the beginning of the control period, the lower value will take precedence and the output ON time will be reduced accordingly. 2: Use higher value If the duty ratio input rises above the duty ratio at the beginning of the control period, the higher value will take precedence and the output ON time will be increased accordingly. 3: Continuous adjustment The duty ratio will be read in real time each time the instruction is executed and the ON/OFF operation will be repeated within the control period. The following diagrams show the operation of each input read timing setting. • Input time setting = 0 (Use the beginning value of the control period.) Read only at the beginning of the control period. Control period (a) Control period (a) 100% Duty ratio (MV/MV range) 70% 55% 0% a × 0.55 s a × 0.45 s a × 0.70 s a × 0.30 s Output Time Each control period’s output is determined by the duty ratio at the beginning of that period. Use this setting for general applications. • Input time setting = 1 (Use lower value.) Control period (a) Control period (a) 100% Duty ratio (MV/MV range) 70% 55% 35% 55% target cut to 35%. 0% a × 0.35 s a × 0.65 s 70% target is kept. a × 0.70 s a × 0.30 s Output Time If the duty ratio falls below the initial value early enough, the duty ratio will be adjusted and the output will be turned OFF sooner. Use this setting for applications such as avoiding overshooting when using time-proportional control to control heating and using a relatively long control period. 2-272 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • Input time setting = 2 (Use higher value.) Control period (a) 70% target is kept. 80% 70% 55% Duty ratio (MV/MV range) Data Control Instructions 100% Control period (a) 70% target raised to 80%. 0% a × 0.45 s a × 0.55 s a× 0.20 s a × 0.80 s Output 2 Time TPO If the duty ratio rises above the initial value early enough, the duty ratio will be adjusted and the output will be turned ON sooner. (With this setting the output’s ON/OFF order is reversed and the output goes from OFF to ON.) Use this setting for applications such as avoiding undershooting when using time-proportional control to control cooling and using relatively long control period. • Input time setting = 3 (Continuous adjustment) 100% Control period (a) Control period (a) 100% : Output ON Duty ratio (MV/MV range) : Output OFF 0% a × 0.35 s a× 0.20 s a× 0.20 s a× 0.20 s Output Time Changes in the duty ratio are monitored in real time. If the duty ratio falls below the initial value early enough, the duty ratio will be adjusted and the output will be turned OFF sooner. If the duty ratio rises again after that, the ratio will be adjusted again and the output will be turned ON. This process is repeated continuously.Use this setting to improve responsiveness when the control period is relatively long and the duty ratio changes quickly. This setting is also appropriate for lighting or power applications that require precise control. • The output limiter function (bits 12 to 15 of C) can be enabled to restrict (saturate) output when it is outside the range between the output limiter lower limit (C + 2) and output limiter upper limit (C + 3). CP1E CPU Unit Instructions Reference Manual(W483) 2-273 2 Instructions Precautions When using TPO(685) in combination with PIDAT(191) in a cyclic task and also using an interrupt task, temporarily disable interrupts by executing DI(693) (DISABLE INTERRUPTS) ahead PIDAT(191) and TPO(685). If interrupts are not disabled and an interrupt occurs between the PIDAT(191) and TPO(685), the control period may be shifted. Cyclic task DI PIDAT S PV input C PID parameters Reception prohibited D Manipulated variable Interrupt task TPO Manipulated S variable C Parameters R Pulse output EI Reception allowed Interrupt task Sample program  Combining TPO(685) with PIDAT(191) When CIO 0.00 is ON, TPO(685) takes the manipulated variable output from PIDAT(191) (contained in D0), calculates the duty ratio from that manipulated variable value (Duty ratio = MV ÷ MV range), converts the duty ratio to a time-proportional output, and outputs the pulses to bit 01 of CIO 100. In this case, CIO 100 is allocated to a Transistor Output Unit and bit CIO 100.01 is connected to a solid state relay for heater control. 0.00 PIDAT S 10 C D200 D D0 When CIO 0.00 goes from OFF to ON, PID(190) reads the parameters, performs the PID calculation with the PV input in CIO 10, and outputs the manipulated variable (MV) to D0. PV input PID parameters Manipulated variable TPO(685) calculates the duty ratio by dividing the MV in D0 by the MV range (0FFF Hex since the range is set to 12 bits), converts that duty ratio to a time-proportional output, and outputs the pulse output to bit 01 of CIO 100. TPO S D0 Manipulated variable C D500 Parameters R 100.01 Pulse output D200 Set value (SV) D201 Proportional band (P) : D206 4 : Output range: 4 hex : D500 (12 bits: 0000 to 0FFF hex) 1 4 MV range: 4 hex (12 bits: 0000 to 0FFF hex) Input type: 1 hex (MV) 2-274 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Using TPO(685) Alone In this case, the control period is 1 s and the output limit function is enabled with a lower limit 20.00% and an upper limit of 80.00%. 0.00 TPO D10 Duty ratio C D0 Parameters R 100.00 Pulse output S TPO(685) takes the duty ratio in D10, converts that duty ratio to a time-proportional output, and outputs the pulse output to bit 00 of CIO 100. Data Control Instructions When CIO 0.00 is ON, TPO(685) takes the duty ratio in D10, converts the duty ratio to a time-proportional output, and outputs the pulses to bit 00 of CIO 100. 2 1 1 D1 0 D2 0 D3 1 0 0 Duty ratio input, read initial value, and enable output limit function. 0 6 4 Control period = 1.00 s 7 D 0 Output lower limit = 20.00% F 4 0 Output upper limit = 80.00% D4 Do not set. D5 Do not set. D6 Do not set. TPO D0 : : D10 0 to 2710 hex CP1E CPU Unit Instructions Reference Manual(W483) 0 to 100.00% 2-275 2 Instructions SCL Instruction Mnemonic SCALING Variations SCL Function code Function 194 Converts unsigned binary data into unsigned BCD data according to the specified linear function. @SCL SCL SCL(194) Symbol S: Source word S P1 P1: First parameter word R R: Result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size S Source word UINT 1 P1 First parameter word LWORD 4 R Result word WORD 1 P1: First Parameter Word 15 0 P1 15 Scaled value for point A (Ar) 0000 to 9999 (4-digit BCD) 0 15 Unscaled value for point A (As) 0000 to FFFF (binary) 0 P1+1 P1+2 Scaled value for point B (Br) 0000 to 9999 (4-digit BCD) 0 15 P1+3 Unscaled value for point B (Bs) 0000 to FFFF (binary) Note P1 to P1+3 must be in the same area.  Operand Specifications Word addresses Indirect DM addresses Area S, P1, R 2-276 CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Flags Name Label P_ER Operation • ON if the contents of P1 (Ar) or P1+1 (Br) is not BCD. • ON if the contents of P1+1 (As) and P1+3 (Bs) are equal. • OFF in all other cases. Equals Flag P_EQ • ON if the result is 0. • OFF in all other cases. Function SCL(194) is used to convert the unsigned binary data contained in the source word S into unsigned BCD data and place the result in the result word R according to the linear function defined by points (As, Ar) and (Bs, Br). The address of the first word containing the coordinates of points (As, Ar) and (Bs, Br) is specified for the first parameter word P1. These points define by 2 values (As and Bs) before scaling and 2 values (Ar and Br) after scaling. Data Control Instructions Error Flag 2 The following equations are used for the conversion. BCD conversion of (Bs – As) SCL (Br – Ar) R = Bd – × BCD conversion of (Bs – S) Points A and B can define a line with either a positive or negative slope. Using a negative slope enables reverse scaling. • The result will be rounded to the nearest integer. If the result is less than 0000, 0000 will be output as the result. • If the result is greater than 9999, 9999 will be output. Scaling is performed according to the linear function defined by points A and B. R (unsigned BCD) Point B Br Ar Point A As Bs P Ar(BCD) P1+1 As(BIN) P1+2 Br(BCD) P1+3 Bs(BIN) Converted value Converted value S (unsigned binary) Hint • SCL(194) can be used to scale the results of analog signal conversion values from Analog Input Units according to user-defined scale parameters. For example, if a 1 to 5-V input to an Analog Input Unit is input to memory as 0000 to 0FA0 hexadecimal, the value in memory can be scaled to 50 to 200°C using SCL(194). • SCL(194) converts unsigned binary to unsigned BCD. To convert a negative value, it will be necessary to first add the maximum negative value in the program before using SCL(194) (see example). SCL(194) cannot output a negative value to the result word, R. If the result is a negative value, 0000 will be output to R. CP1E CPU Unit Instructions Reference Manual(W483) 2-277 2 Instructions Sample program In the following example, it is assume that an analog signal from 1 to 5 V is converted and input to D0 as 0000 to 0FA0 hexadecimal. SCL(194) is used to convert (scale) the value in CIO 200 to a value between 0 and 300 BCD. When CIO 0.00 is ON, the contents of D0 is scaled using the linear function defined by point A (0000, 0000) and point B (0FA0, 0300). The coordinates of these points are contained in D100 to D103, and the result is output to D200. SCL 0.00 S D0 P1 D100 R D200 Contents of D200 (R) D100 0 0 0 0 Ar(BCD) P1+1:D101 0 0 0 0 As(BIN) P1+2:D102 0 3 0 0 Br(BCD) P1+3:D103 0 F A 0 Bs(BIN) P1: Point B 0300 Point A 0000 0000Hex 0FA0Hex 1V 5V Contents of D0 (S) Reference: An Analog Input Unit actually inputs values from FF38 to 1068 hexadecimal for 0.8 to 5.2 V. SCL(194), however, can handle only unsigned binary values between 0000 and FFFF hexadecimal, making it impossible to use SCL(194) directly to handle signed binary values below 1 V (0000 hexadecimal), i.e., FF38 to FFFF hexadecimal. In an actual application, it is thus necessary to add 00C8 hexadecimal to all values so that FF38 hexadecimal is represented as 0000 hexadecimal before using SCL(194), as shown in the following example. + 5.2V 5V 200 1130Hex 1068Hex 1068 Hex 0FA0 Hex #000C8 D0 +00C8 Hex SCL D0 D100 The value in CIO 0200 plus 00C8 hexadecimal D200 Contents of D 200 (R) 1V 0.8V 00C8Hex 0000Hex 0000 Hex FF38 Hex Point A (00C8 Hex → 0000 (BCD)) Point B (1068 Hex → 0300 (BCD)) 0315 0000 Point A 0000Hex 00C8Hex 0.8V 1V 2-278 D100 0 0 0 0 Ar(BCD) P1+1:D101 0 0 C 8 As(BIN) P1+2:D102 0 3 0 0 Br(BCD) P1+3:D103 1 0 6 8 Bs(BIN) P1: Point B 0300 Contents of D0 (S) 1130Hex 1068Hex 5.2V 5V CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions In this example, values from 0000 to 00C8 hexadecimal will be converted to negative values. SCL(194), however, can output only unsigned BCD values from 0000 to 9999, so 0000 BCD will be output whenever the contents of D0.00 is between 0000 and 00C8 hexadecimal. Reverse scaling can also be used by setting As < Bs and Ar > Br. The following relationship will result. R (unsigned BCD) Ar Point A Point B Br 2 As S (unsigned binary) Bs R 0300 Point A 1V Point B S 0FA0Hex 5V CP1E CPU Unit Instructions Reference Manual(W483) 2-279 SCL Reverse scaling can be used, for example, to convert (reverse scale) 1 to 5 V (0000 to 0FA0 hexadecimal) to 0300 to 0000, respectively, as shown in the following diagram. 0000 0000Hex Data Control Instructions Reverse Scaling 2 Instructions SCL2 Instruction Mnemonic SCALING 2 Variations SCL2 Function code Function 486 Converts signed binary data into signed BCD data according to the specified linear function. An offset can be input in defining the linear function. @SCL2 SCL2 SCL2(486) Symbol S: Source word S P1 P1: First parameter word R R: Result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size INT 1 First parameter word WORD 3 Result word WORD 1 S Source word P1 R P1: First Parameter Word 15 0 P1 Offset of linear function 8000 to 7FFF (signed binary) 15 0 P1+1 8000 to 7FFF (signed binary) 15 0 P1+2 Note P1 to P1+2 must be in the same area. 0000 to 9999 (BCD)  Operand Specifications Word addresses Indirect DM addresses Area S, P1, R 2-280 CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Flags Name Label Operation P_ER Data Control Instructions Error Flag • ON if the contents of C+1 (∆X) is 0000. • ON if the contents of C+2 (∆Y) is not BCD. • OFF in all other cases. Equals Flag P_EQ Carry Flag P_CY • ON if the result is 0. • OFF in all other cases. • ON if the result is negative. • OFF if the result is zero or positive. Function The following equations are used for the conversion. R= ∆Y BCD conversion of ∆X × [(BCD conversion of S) – (BCD conversion of offset)] Note The slope of the line is ∆Y/∆X. The offset and slope can be a positive value, 0, or a negative value. Using a negative slope enables reverse scaling. • The result will be rounded to the nearest integer. • The result in R will be the absolute BCD conversion value and the sign will be indicated by the Carry Flag. The result can thus be between –9999 and 9999. • If the result is less than –9999, –9999 will be output as the result. If the result is greater than 9999, 9999 will be output. Negative Offset R (signed BCD) Positive Offset R (signed BCD) ∆Y ∆Y ∆X Offset ∆X S (signed binary) S (signed binary) Offset Offset of 0000 Offset (Signed binary) P1+1 ∆Y (Signed binary) P1+2 ∆X (Signed BCD) P1 R (signed BCD) ∆Y Offset = 0000 hex ∆X S (signed binary) CP1E CPU Unit Instructions Reference Manual(W483) 2-281 2 SCL2 SCL2(486) is used to convert the signed binary data contained in the source word S into signed BCD data (the BCD data contains the absolute value and the Carry Flag shows the sign) and place the result in the result word R according to the linear function defined by the slope (∆X, ∆Y) and an offset. The address of the first word containing ∆X, ∆Y, and the offset is specified for the first parameter word P1. The sign of the result is indicated by the status of the Carry Flag (ON: negative, OFF: positive). 2 Instructions Hint • SCL2(486) can be used to scale the results of analog signal conversion values from Analog Input Units according to user-defined scale parameters. For example, if a 1 to 5-V input to an Analog Input Unit is input to memory as 0000 to 0FA0 hexadecimal, the value in memory can be scaled to –100 to 200°C using SCL2(486). • SCL2(486) converts signed binary to signed BCD. Negative values can thus be handled directly for S. The result of scaling in R and the Carry Flag can also be used to output negative values for the scaling result. Sample program  Scaling 1 to 5-V Analog Input to 0 to 300 In the following example, it is assumed that an analog signal from 1 to 5 V is converted and input to CIO 3 as 0000 to 1770 hexadecimal. SCL2(486) is used to convert (scale) the value in CIO 3 to a value between 0000 and 0300 BCD. When CIO 0.00 is ON, the contents of CIO 3 is scaled using the linear function defined by ∆X (1770), ∆Y (0300), and the offset (0). These values are contained in D100 to D102, and the result is output to D200. 0.00 SCL2 S 3 P1 D100 R D200 Contents of R (D200) D100 0 0 0 0 Offset P1+1:D101 1 7 7 0 ∆X P1+2:D102 0 3 0 0 ∆Y P1: 0315 0300 ∆Y 0000 -0015 Contents of S (CIO 3) FED4 0000 0.8V 1V 2-282 1770 189C 1770Hex (∆X) 5V 5.2V CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Scaling 1 to 5-V Analog Input to –200 to 200 When CIO 0.00 is ON, the contents of CIO 3 is scaled using the linear function defined by ∆X (1770), ∆Y (0400), and the offset (07D0). These values are contained in D100 to D102, and the result is output to D200. 0.00 SCL2 S 3 P1 D100 R D200 Contents of R(D200) 2 0 7 D 0 Offset 0220 0200 P1+1:D101 1 7 7 0 ∆X P1+2:D102 0 4 0 0 ∆Y Offset 07D0 Hex SCL2 D100 P1: 0400(∆Y) Contents of S (CIO 200) 0000 -0200 -0220 FED4 0000 1770 189C 0.8V 1V 5V 5.2V 1770 Hex (∆X) CP1E CPU Unit Instructions Reference Manual(W483) Data Control Instructions In the following example, it is assume that an analog signal from 1 to 5 V is converted and input to CIO 3 as 0000 to 1770 hexadecimal. SCL2(486) is used to convert (scale) the value in CIO 3 to a value between –0200 and 0200 BCD. 2-283 2 Instructions SCL3 Instruction Mnemonic SCALING 3 SCL3 Variations Function code Function 487 Converts signed BCD data into signed binary data according to the specified linear function. An offset can be input in defining the linear function. @SCL3 SCL3 SCL3(487) Symbol S S: Source word P1 P1: First parameter word R R: Result word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size S Source word Description WORD 1 P1 First parameter word WORD 5 R Result word INT 1 P1: First Parameter Word 15 0 P1 Offset of linear function 8000 to 7FFF (signed binary) 0 15 P1+1 15 ∆X 0001 to 9999 (BCD) 0 P1+2 ∆Y 8000 to 7FFF (signed binary) 15 0 P1+3 Maximum conversion 8000 to 7FFF (signed binary) 15 0 P1+4 Minimum conversion 8000 to 7FFF (signed binary) 2-284 Note P1 to P1+4 must be in the same area. CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Operand Specifications Word addresses Indirect DM addresses Area WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Label Error Flag P_ER Operation • ON if the contents of S is not BCD. • ON if the contents of C+1 (∆X) is not between 0001 and 9999 BCD. • OFF in all other cases. Equals Flag P_EQ Negative Flag P_N Data Control Instructions S. P1,R CIO • ON if the result is 0. • OFF in all other cases. 2 • ON when the MSB of the R (the result) is 1. • OFF in all other cases. SCL3(487) is used to convert the signed BCD data (the BCD data contains the absolute value and the Carry Flag shows the sign) contained in the source word S into signed binary data and place the result in the result word R according to the linear function defined by the slope (∆X, ∆Y) and an offset. The maximum and minimum conversion values are also specified. The address of the first word containing ∆X, ∆Y, the offset, the maximum conversion, and the minimum conversion is specified for the first parameter word P1. The sign of the result is indicated by the status of the Carry Flag (ON: negative, OFF: positive). Use STC(040) and CLC(041) to turn the Carry Flag ON and OFF. The following equations are used for the conversion. R= ∆Y Binary conversion of ∆X × ((Binary conversion of S) + (Offset)) Note The slope of the line is ∆Y/∆X. • The offset and slope can be a positive value, 0, or a negative value. Using a negative slope enables reverse scaling. • The result will be rounded to the nearest integer. • The source value in S is treated as an absolute BCD value and the sign is indicated by the Carry Flag. The source value can thus be between –9999 and 9999. • If the result is less than the minimum conversion value, the minimum conversion value will be output as the result. If the result is greater than the maximum conversion value, the maximum conversion value will be output. CP1E CPU Unit Instructions Reference Manual(W483) 2-285 SCL3 Function 2 Instructions Positive Offset Negative Offset R (signed binary) R (signed binary) Max conversion Max conversion ∆Y ∆Y ∆X Min. conversion ∆X Offset S (signed BCD) Offset S (signed BCD) Min. conversion Offset of 0000 R (signed binary) Max conversion ∆Y ∆X S (signed BCD) Min. conversion Hint SCL3(487) is used to convert data using a user-defined scale to signed binary for Analog Output Units. For example, SCL3(487) can convert 0 to 200 °C to 0000 to 1770 (hex) and output an analog output signal 1 to 5 V from the Analog Output Unit. Sample program When a value from 0 to 200 is scaled to an analog signal (1 to 5 V, for example), a signed BCD value of 0000 to 0200 is converted (scaled) to signed binary value of 0000 to 1770 for an Analog Output Unit. When CIO 0.00 turns ON in the following example, the contents of D0 is scaled using the linear function defined by ∆X (0200), ∆Y (1770), and the offset (0). These values are contained in D100 to D102. The sign of the BCD value in D0 is indicated by the Carry Flag. The result is output to CIO 103. 0.00 SCL3 S D0 P1 D100 R 103 :D100 0 0 0 0 Offset P1+1:D101 0 2 0 0 ∆X P1+2:D102 1 7 7 0 ∆Y P1+3:D103 1 8 9 C Max. conversion P1+4:D104 F E D 4 Min. conversion P1 Contents of R (2011, signed binary) 189C 1770 ∆Y(1770 Hex) Contents of S (D0, signed BCD) FED4 ∆X(0200) -010 0200 2010 0000 2-286 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions AVG Mnemonic AVERAGE AVG Variations Function code Function --- 195 Calculates the average value of an input word for the specified number of cycles. AVG AVG(195) Symbol S S: Source word N N: Number of cycles R R: Result first word 2 AVG Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description S Data type Size UINT 1 Source word N Number of cycles UINT 1 R Result first word UINT Variable N: Number of Cycles The number of cycles must be between 0001 and 0040 hexadecimal (0 to 64 cycles). R: Result First Word and R+1: First Work Area Word R: Average R+1: Processing information 15 14 0 R+1 Used by system. Average Valid Flag OFF: Not valid (AVG(195) has not yet been executed the specified number of cycles.) ON: Valid. R+2: Previous value #1 R+N+1: Previous value #N Note R to R+N+1 must be in the same area.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S, N CF Pulse bits TR bits --- --- --- OK R --- Flags Name Error Flag Label P_ER Data Control Instructions Instruction Operation • ON if the contents of N is 0. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-287 2 Instructions Function For the first N–1 cycles when the execution condition is ON, AVG(195) writes the values of S in order to words starting with R+2. The Previous Value Pointer (bits 00 to 07 of R+1) is incremented each time a value is written. Until the Nth value is written, the contents of S will be output unchanged to R and the Average Value Flag (bit 15 of R+1) will remain OFF. S: Source word N: Number of cycles When the Nth value is written to R+N+1, the average of all the values that have been stored will be computed, the average will be output to R as an unsigned binary value, and the Average Value Flag (bit 15 of R+1) will be turned ON. For all further cycles, the value in R will be updated for the most current N values of S. R R+1 Pointer Average Average Valid Flag The maximum value of N is 64. If a value greater than 64 is specified, operation will use a value of 64. R+2 S Cycle 1 R+3 S Cycle 2 N values R+N+1 S Cycle N The Previous Value Pointer will be reset to 0 after N–1 values have been written. The average value output to R will be rounded to the nearest integer. Precautions The processing information (R+1) is cleared to 0000 each time the execution condition changes from OFF to ON. But the processing information (R+1) will not be cleared to 0000 the first time the program is executed at the start of operation. If AVG(195) is to be executed in the first program scan, clear the First Work Area Word from the program. Sample program When CIO 0.00 is ON in the following example, the contents of D100 will be stored one time each scan for the number of scans specified in D200. The contents will be stored in order in the ten words from D302 to D311. The average of the contents of these ten words will be placed in D300 and then bit 15 of D301 will be turned ON. S:D100 0.00 AVG S D100 N D200 R D300 N:D200 0 0 0 A (10 times) R:D300 15 87 R+1:D301 Average Valid Flag 2-288 0 Pointer R+2:D302 S, scan 1 R+3:D303 S, scan 2 R+11:D311 S, scan n Average CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • In the following example, the content of CIO 40 is set to #0000 and then incremented by 1 each cycle. • On the third and later cycles AVG(195) calculates the average value of the contents of D1002 to D1004 and writes that average value to D1000. 0.00 @MOV #0000 40 Data Control Instructions • For the first two cycles, AVG(195) moves the content of CIO 40 to D1002 and D1003. The contents of D1001 will also change (which can be used to confirm that the results of AVG(195) has changed). AVG 2 40 #0003 D1000 AVG CLC(41) + 40 #0001 40 CIO 40 1st cycle 2nd cycle 3rd cycle 4th cycle 0 1 2 3 1 2 Average D1000 0 1 1 2 Average D1001 1 2 8000 8001 Pointer D1002 0 0 0 3 D1003 --- 1 1 1 D1004 --- --- 2 2 CP1E CPU Unit Instructions Reference Manual(W483) 3 previous values of IR 40 2-289 2 Instructions Subroutines Instructions SBS Instruction Mnemonic SUBROUTINE CALL Variations SBS Function code Function 091 Calls the subroutine with the specified subroutine number and executes that program. @SBS SBS Symbol SBS(091) N N: Subroutine number Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description N Data type Size --- 1 Subroutine number N: Subroutine number Specifies the subroutine number between 0 and 127 decimal.  Operand Specifications Word addresses Indirect DM addresses Area N CIO WR HR AR T C DM @DM *DM --- --- --- --- --- --- --- --- --- Constants CF Pulse bits TR bits OK --- --- --- Combined-use instructions SBN (subroutine entry) instructions and RET (subroutine return) instructions Flags Name Error Flag Label P_ER Operation • ON if nesting exceeds 16 levels. • ON if the specified subroutine number does not exist. • ON if a subroutine calls itself. • ON if a subroutine being executed is called. • ON if the specified subroutine is not defined in the current task. • OFF in all other cases. 2-290 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function Execution condition ON Subroutines Instructions SBS(091) calls the subroutine with the specified subroutine number. The subroutine is the program section between SBN(092) and RET(093). When the subroutine is completed, program execution continues with the next instruction after SBS(091). A subroutine can be called more than once in a program. SBS n Main program B Subroutine program (SBN(092) to RET(093)) A B SBN n A 2 SBS RET END Program end Subroutines can be nested up to 16 levels. Nesting is when another subroutine is called from within a subroutine program, such as shown in the following example, which is nested to 3 levels. Execution condition ON SBS n Main program D D SBN 10 SBN 11 to to SBS 11 SBS 12 to to RET RET SBN 12 SBN n to A A RET SBS m Execution condition ON Subroutine program n C C Two-level nesting RET SBN m Subroutine program m B B RET END CP1E CPU Unit Instructions Reference Manual(W483) Program end 2-291 2 Instructions Precautions • The subroutine number must be unique for each subroutine. You cannot use the same number for more than one subroutine. • Each subroutine must have a unique subroutine number. Do not use the same subroutine number for more than one subroutine. • Observe the following precautions when using differentiated instructions (DIFU(013), DIFD(014), or up/down differentiated instructions) in subroutines. • The operation of differentiated instructions in a subroutine is unpredictable if a subroutine is executed more than once in the same cycle. In the following example, subroutine 1 is executed when CIO 0.00 is ON and CIO 1.00 is turned ON by DIFU(013) when CIO 0.01 has gone from OFF to ON. If CIO 0.01 is ON in the same cycle, subroutine 1 will be executed again but this time DIFU(013) will turn CIO 1.00 OFF without checking the status of CIO 0.01. • In contrast, a differentiated instruction (UP, DOWN, DIFU(013) or DIFD(014)) would maintain the ON status if the instruction was executed and the output was turned ON but the same subroutine was not called a second time. 0.00 SBS 1 1 0.01 SBS 1 3 5 SBN 1 Subroutine 1 0.01 DIFU 4 2 The subroutine is executed again. 1.00 RET 1 0.00 SBS 1 3 SBN 1 0.01 DIFU 2 The subroutine is not executed in following cycles. 1.00 RET • In the following example, subroutine 1 is executed if CIO 0.00 is ON. Output CIO 1.00 is turned ON by DIFU(013) when CIO 0.01 has gone from OFF to ON. If CIO 0.00 is OFF in the following cycle, subroutine 1 will not be executed again and output CIO 1.00 will remain ON • SBS(091) will be treated as NOP(000) when it is within a program section interlocked by IL(002) and ILC(003). 2-292 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sample program  Sequential (Non-nested) Subroutines Subroutines Instructions A 1 CIO 0.00 ON 0.00 SBS 1 3 Main program B CIO 0.01 ON 0.01 2 SBS 2 SBS C 5 SBN 1 1 2 S1 RET Subroutines 0.00 0.01 Order of execution ON ON A→S1→B→S2→C A→S1→B→C ON OFF OFF ON A→B→S2→C OFF OFF A→B→C SBN 2 4 2 S2 RET END Program end When CIO 0.00 is ON in the following example, subroutine 1 is executed and program execution returns to the next instruction after SBS(091) 1. When CIO 0.01 is ON, subroutine 2 is executed and program execution returns to the next instruction after SBS(091) 2. CP1E CPU Unit Instructions Reference Manual(W483) 2-293 2 Instructions  Nested Subroutines A 1 CIO 0.00 ON 0.00 SBS 1 5 B SBN 1 2 S1-1 0.01 SBS CIO 0.00 ON Subroutine 1 2 0.00 0.01 Order of execution ON ON A→S1-1→S2→S1-2→B ON OFF A→S1-1→S1-2→B OFF ON A→B OFF OFF A→B 4 S1-2 RET SBN 2 3 S2 Subroutine 2 RET END When CIO 0.00 is ON in the following example, subroutine 1 is executed. If CIO 0.01 is ON, subroutine 2 is executed from within subroutine 1 and program execution returns to the next instruction after SBS(091) 2 when subroutine 2 is completed. Execution of subroutine 1 continues and program execution returns to the next instruction after SBS(091) 1 when subroutine 1 is completed. 2-294 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions SBN/RET Mnemonic Variations Function code Function SUBROUTINE ENTRY SBN --- 092 Indicates the beginning of the subroutine program with the specified subroutine number. SUBROUTINE RETURN RET --- 093 Indicates the end of a subroutine program. SBN Symbol RET SBN(092) N 2 RET(093) N: Subroutine number SBN/RET Applicable Program Areas  SBN Area Step program areas Subroutines Interrupt tasks Usage Not allowed Not allowed OK Area Step program areas Subroutines Interrupt tasks Usage Not allowed OK OK  RET Operands Data type Operand Description Size SBN N Subroutine number --- 1  SBN N: Subroutine number Specifies the subroutine number between 0 and 127 decimal.  Operand Specifications Word addresses Indirect DM addresses Area SBN N CIO WR HR AR T C DM @DM *DM --- --- --- --- --- --- --- --- --- Constants CF Pulse bits TR bits OK --- --- --- Combined-use instructions SBS (subroutine call) instruction CP1E CPU Unit Instructions Reference Manual(W483) Subroutines Instructions Instruction 2-295 2 Instructions Flags  SBN/RET There are no flags affected by this instruction. Function  SBN SBN(092) indicates the beginning of the subroutine with the specified subroutine number. The end of the subroutine is indicated by RET(093). The region of the program beginning at the first SBN(092) instruction is the subroutine region. A subroutine is executed only when it has been called by SBS(091) . SBS n SBN n Subroutine region RET  RET When program execution reaches RET(093), it is automatically returned to the next instruction after the SBS(091) instruction that called the subroutine. Precautions • Place the subroutine program area (SBN(092) to RET(093)) in the same task as the SBS(091) instruction of the same number. Subroutines in other tasks cannot be called. Not allowed OK Task 1 Task SBS SBS n n SBN n RET END END Task 2 SBN n RET END 2-296 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • The step instructions, STEP(008) and SNXT(009) cannot be used in subroutines. Subroutines Instructions SBN SNXT Not allowed STEP RET • Place the subroutines after the main program and just before the END(001) instruction in the program for each task. If part of the main program is placed after the subroutine region, that program section will be ignored. SBS n SBN n Subroutine region RET END This part of the program won’t be executed. Sample program When CIO 0.00 is ON in the following example, subroutine 10 is executed and program execution returns to the next instruction after the SBS(091) or MCRO(099) instruction that called the subroutine. 0.00 SBS #10 SBN #10 Subroutine 10 RET END CP1E CPU Unit Instructions Reference Manual(W483) 2-297 SBN/RET Note The input method for the subroutine number, N, is different for the CX-Programmer. Input #0 to #127 on the CX-Programmer. 0.00 2 2 Instructions Interrupt Control Instructions CP1E CPU Units support the following interrupts. Type Execution condition Setting procedure I/O Interrupts Interrupt input from the built-in Input on the CPU Rack turns ON/OFF. Use the MSKS instruction to assign inputs from Interrupt Input on the CPU Rack. Scheduled Interrupts Scheduled (fixed intervals) Use the MSKS instruction to set the interrupt interval. Outline of Interrupt Control Instructions  SET INTERRUPT MASK: MSKS(690) Both I/O interrupt tasks and scheduled interrupt tasks are masked (disabled) when the PLC enters RUN mode. MSKS(690) can be used to unmask or mask I/O interrupts and set the time intervals for scheduled interrupts.  CLEAR INTERRUPT: CLI(691) CLI(691) clears or retains recorded interrupt inputs for I/O interrupts or sets the time to the first scheduled interrupt for scheduled interrupts. It also clears or retains recorded high-speed counter interrupts.  DISABLE INTERRUPTS: DI(693) DI(693) disables execution of all interrupt tasks.  ENABLE INTERRUPTS: EI(694) EI(694) enables execution of all interrupt tasks. Precautions in Using Interrupt Tasks  Precautions for All Interrupts • When multiple interrupts occur at once, the order of execution of the interrupts is as follows: I/O interrupt > scheduled interrupt Note “A > B” indicates that A is given priority over B. On the same interrupt level, lower numbered tasks are given priority over higher numbered tasks.  Precautions for I/O Interrupts • Only built-in inputs from CP1E CPU Units are supported for interrupt tasks. • Use interrupt inputs on the CPU Rack from 0ch02 bit to 0ch07 bit. I/O interrupt tasks will not be executed if using any other input. • All interrupt inputs that have been detected will be cleared when the interrupt mask is cleared. • There is no limit on the number of I/O interrupt inputs that can be recorded, but only one interrupt is recorded for each I/O interrupt number. Furthermore, the recorded interrupt is not cleared until its interrupt task has been completed, so a new interrupt input will be ignored if it is received while its interrupt task is being executed.  Precautions for Scheduled Interrupts • Be sure that the time interval is longer than the time required to execute the scheduled interrupt task. • To accurately control the time to the first interrupt and the interrupt interval, program CLI(691) to set the time to the first schedule interrupt just before programming MSKS(690). If MSKS(690) is used to restart a schedule interrupt, the time to the first scheduled interrupt will be accurate even if CLI(691) is not used. • The time unit for the scheduled interrupt is always 0.1ms. 2-298 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Related Memory Area Words Address Operation A440 The maximum processing time for an interrupt task is stored in binary data in 0.1-ms units and is cleared at the start of operation. Interrupt Task with Maximum Processing Time A441 The interrupt task number with maximum processing time is stored in binary data. Here, 8000 to 800F Hex correspond to task numbers 00 to 0F Hex. A441.15 will turn ON when the first interrupt occurs after the start of operation. The maximum processing time for subsequent interrupt tasks will be stored in the rightmost two digits in hexadecimal and will be cleared at the start of operation. Interrupt Control Instructions Name Maximum Interrupt Task Processing Time 2 CP1E CPU Unit Instructions Reference Manual(W483) 2-299 2 Instructions MSKS Instruction Mnemonic SET INTERRUPT MASK MSKS Function code Variations @MSKS Function Controls whether I/O interrupt tasks and scheduled interrupt tasks are executed. 690 MSKS MSKS(690) Symbol N N: Interrupt identifier C C: Control data Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description N Interrupt identifier C Control data Data type Size --- 1 UINT 1 (1) I/O Interrupt Task Contents Operand Disabling/Enabling Interrupt Input Setting Specifying Up/Down Differentiation of an Interrupt Input I/O Interrupt No. N I/O Interrupt No. 102: Interrupt input 2 (interrupt task 2) 112: Interrupt input 2 (interrupt task 2) 103: Interrupt input 3 (interrupt task 3) 113: Interrupt input 3 (interrupt task 3) 104: Interrupt input 4 (interrupt task 4) 114: Interrupt input 4 (interrupt task 4) 105: Interrupt input 5 (interrupt task 5) 115: Interrupt input 5 (interrupt task 5) 106: Interrupt input 6 (interrupt task 6) 116: Interrupt input 6 (interrupt task 6) (Cannot be used in CP1E-E10D-) (Cannot be used in CP1E-E10D-) 117: Interrupt input 7 (interrupt task 7) 107: Interrupt input 7 (interrupt task 7) (Cannot be used in CP1E-E10D-) (Cannot be used in CP1E-E10D-) Interrupt Mask C Interrupt Mask 0000 hex: Enable (unmask) the interrupt (direct mode). 0000 hex: Up-differentiation (Detect rising edge.) 0001 hex: Disable (mask) the interrupt (direct mode). 0001 hex: Down-differentiation (Detect falling edge.) Note When the up/down differentiation setting is changed, all detected interrupt inputs will be cleared. (2) Resetting and Starting Scheduled Interrupts Operand Contents Scheduled Interrupt No. N 4 or 14: Scheduled interrupt 0 (interrupt task 1) Scheduled interrupt time units Scheduled interrupt set time Any time unit setting 0 decimal (0000 hex): 0.1 ms 10 to 9,999 decimal (000A to 270F hex): Enable interrupt. (Reset internal timer value, and then start timer with interrupt interval between 1.0 and 999.9 ms.) Disable interrupt. (Stop internal timer.) C Note Settings 0001 to 000A cannot be used. An error will occur if one of these settings is used. 2-300 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Operand Specifications Indirect DM addresses CIO WR HR AR T C DM @DM Constants CF Pulse bits TR bits OK --- --- --- *DM N --- --- --- --- --- --- --- --- --- C OK OK OK OK OK OK OK OK OK Flags Name Error Flag Label P_ER Operation ON if N is not within the specified range. Errors when specifying I/O Interrupts: • The Error Flag will go ON if C is not within the specified range. Errors when specifying Scheduled Interrupts: Interrupt Control Instructions Word addresses Area 2 • The Error Flag will go ON if C is not between 10 and 9,999 decimal (000A to 270F hex). OFF in all other cases. When the program execution starts, the interrupt inputs that generate I/O interrupt tasks are masked (disabled), and the internal timers creating the timer interrupts that generate scheduled interrupt tasks are stopped. Use MSKS(690) to enable the I/O interrupts and timer interrupts, so that the corresponding interrupt tasks can be executed. The value of N specifies the interrupt task and the kind of processing that will be performed. (1) N = 102 to 107: Enabling/Disabling the Interrupt Inputs of I/O Interrupt Tasks • Enables or disables the interrupt inputs specified by N, based on the status of the bits in C. With this function, MSKS(690) can control whether or not each task is executed. • When an interrupt input is enabled, any interrupts detected up to that point will be cleared. (2) N = 112 to 117: Specifying the Differentiation of Interrupt Inputs • Specifies whether the interrupt inputs specified by N are up-differentiated or down-differentiated, based on the status of the bits in C. • Use the differentiation specification together with the enabling/disabling function. If MSKS(690) is not executed to specify up or down differentiation, the interrupt inputs are up-differentiated (the default setting). • When MSKS(690) is executed to specify an interrupt input’s up or down differentiation, any interrupts detected up to that point will be cleared. (3) N = 4 or 14: Resetting and Restarting Scheduled Interrupt Tasks • Sets the time interval (specified by C) for the specified scheduled interrupt task (specified by N), resets the internal timer’s PV, and starts the internal timer. Since the internal timer’s PV is reset, this function maintains the proper interval from the execution of MSKS(690) until the start of the first interrupt . Hint The longest interrupt task processing time is stored in A440 (Maximum Interrupt Task Processing Time). At the same time, the task number of the interrupt task with the longest interrupt task processing time is stored in A441 (Interrupt Task with Maximum Processing Time). CP1E CPU Unit Instructions Reference Manual(W483) 2-301 MSKS Function 2 Instructions Precaution • Be sure that the time interval is longer than the time required to execute the scheduled interrupt task. • To accurately control the time to the first interrupt and the interrupt interval, program CLI(691) to set the time to the first schedule interrupt just before programming MSKS(690). If MSKS(690) is used to restart a schedule interrupt, however, the time to the first scheduled interrupt will be accurate even if CLI(691) is not used. • During the execution of a scheduled interrput, the scheduled interrupt set time cannot be changed. Please change the scheduled interrupt set time after disable interrupt (stop internal timer) is set with MSKS instruction. Sample program  Examples for Input Interrupts When W0.00 turns ON in the following example, the first MSKS(690) (1) specifies generating input interrupts for input interrupt 3 when the interrupt input turns ON and the second MSKS(690) (2) unmasks the interrupt. W0.00 MSKS N 113 S #0000 (1) MSKS N 103 S #0000 (2)  Example for Scheduled Interrupts When W0.01 turns ON in the following example, MSKS(690) sets the schedule interrupt interval for schedule interrupt 0 to 10.5 ms (assuming the unit is set to 0.1 ms in the PLC Setup), resets the internal timer, and starts the internal timer. W0.01 MSKS 2-302 N 14 S &105 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic CLEAR INTERRUPT CLI Variations Function code Function 691 Clears/retains recorded interrupt inputs, sets the time to the first scheduled interrupt for scheduled interrupt tasks. @CLI CLI Interrupt Control Instructions CLI CLI(691) Symbol N N: Interrupt number C C: Control data 2 CLI Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description N Interrupt number C Control data Data type Size --- 1 UINT 1 (1) Clearing/Retaining an I/O Interrupt Task’s Recorded Interrupt Inputs Operand Contents Interrupt Input No. 102: Interrupt input 2 (interrupt task 2) 103: Interrupt input 3 (interrupt task 3) N 104: Interrupt input 4 (interrupt task 4) 105: Interrupt input 5 (interrupt task 5) 106: Interrupt input 6 (interrupt task 6) (Cannot be used in CP1E-E10D-) 107: Interrupt input 7 (interrupt task 7) (Cannot be used in CP1E-E10D-) Recorded Interrupt C 0000 hex: Retain the recorded interrupt. 0001 hex: Clear the recorded interrupt. (2) Setting the Time to the First Scheduled Interrupts Operand Contents Scheduled Interrupt No. N 4: Interrupt task 0 (interrupt task 1) Scheduled interrupt time units (Set in the PLC Setup.) Scheduled interrupt set time C 0.1 ms 10 to 9,999 decimal (000A to 270F hex): Sets time to first interrupt between 1.0 and 999.9 ms. CP1E CPU Unit Instructions Reference Manual(W483) 2-303 2 Instructions (3) Clearing/Retaining High-speed Counter Interrupts Operand Contents High-speed Counter Input 10: High-speed counter input 0 11: High-speed counter input 1 N 12: High-speed counter input 2 13: High-speed counter input 3 14: High-speed counter input 4 15: High-speed counter input 5 (Cannot be used in CP1E-E10D-) Recorded Interrupt C 0000 hex: Retain the recorded interrupt. 0001 hex: Clear the recorded interrupt.  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM Constants CF Pulse bits TR bits OK --- --- --- *DM N --- --- --- --- --- --- --- --- --- C OK OK OK OK OK OK OK OK OK Flags Name Error Flag Label P_ER Operation • ON if N is not within the specified range. • ON if C is not 0000 or 0001 hex (for I/O interrupts or high-speed counter interrupts). • ON if C is not within the specified range of 10 to 9,999 decimal (000A to 270F hex) for scheduled interrupts. • OFF in all other cases. Function Depending on the value of N, CLI(691) clears the specified recorded I/O interrupts, sets the time before execution of the first scheduled interrupt, or clears the specified recorded high-speed counter interrupts. (1) N = 102 to 107: Clearing Interrupt Inputs CLI(691) clears a recorded interrupt input specified by N, when the corresponding bit of C is ON and retains the recorded interrupt input when the corresponding bit is OFF. Interrupt input n Interrupt input n Internal status Internal status Recorded interrupt cleared Recorded interrupt retained If an I/O interrupt task is being executed and an interrupt input with a different interrupt number is received, that interrupt number is recorded internally. The recorded I/O interrupts are executed later in order of their priority (from the lowest number to the highest). If you want to ignore interrupt inputs that are received while an interrupt task is being executed, use CLI(691) to clear the recorded interrupts before they are executed. 2-304 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions (2) N = 4: Setting the Time to the First Scheduled Interrupt Task MSKS(690) Execution of scheduled interrupt task. Time to first scheduled interrupt (3) N = 10 or 15: Clearing High-speed Counter Interrupts When N is 10 or 15, CLI(691) clears or retains the recorded high-speed counter interrupt (target comparison) specified by N. Sample program Interrupt Control Instructions When N is 4, the content of C specifies the time interval to the first scheduled interrupt task. 2  Example for Input Interrupts When W0.00 turns ON in the following example, CLI(691) clears all interrupts stored for input interrupt 2. CLI W0.00 CLI N 102 S #0001  Example for First Scheduled Interrupts When W0.01 turns ON in the following example, CLI(691) sets the time to the first schedule interrupt 10.5 ms (0069 hex = 105 decimal). W0.01 CLI N 4 S D1100 15 D1100 0 0 0 6 9  Example for High-speed Counter Interrupts When W0.02 turns ON in the following example, CLI(691) clears all interrupts stored for high-speed counter interrupt 0. W0.02 CLI N 10 S #0001 CP1E CPU Unit Instructions Reference Manual(W483) 2-305 2 Instructions DI Instruction Mnemonic DISABLE INTERRUPTS Variations DI Function code Function 693 Disables execution of all interrupt tasks except the power OFF interrupt. @DI DI Symbol DI(693) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Flags Name Label Error Flag P_ER Operation • ON if DI(693) is executed from an interrupt task. • OFF in all other cases. Function DI(693) is executed from the main program to temporarily disable all interrupt tasks (I/O interrupts, scheduled interrupts). Precautions All interrupt tasks will remain disabled until EI(694) is executed. DI(693) cannot be executed from an interrupt task. Sample program When CIO 0.00 is ON in the following example, DI(693) disables all interrupt tasks. 0.00 DI Disables execution of all interrupt tasks 2-306 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic ENABLE INTERRUPTS Function code Variations EI --- 694 Function Enables execution of all interrupt tasks that were disabled with DI(693). EI Symbol EI(694) Interrupt Control Instructions EI 2 Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed EI Flags Name Error Flag Label P_ER Operation • ON if EI(694) is executed from an interrupt task. • OFF in all other cases. Function • EI(694) is executed from the main program to temporarily enable all interrupt tasks that were disabled by DI(693). DI(693) disables all interrupts (I/O interrupts, scheduled interrupts). Precautions • EI(694) does not require an execution condition. It is always executed with an ON execution condition. • EI(694) enables the interrupt tasks that were disabled by DI(693). It cannot unmask I/O interrupts that have not been unmasked by MSKS(690) or set scheduled interrupts that have not been set by MSKS(690). • EI(694) cannot be executed in an interrupt task. Sample program DI Disables execution of all interrupt tasks. EI 0.00 Enables execution of all disabled interrupt tasks. CP1E CPU Unit Instructions Reference Manual(W483) 2-307 2 Instructions High-speed Counter/Pulse Output Instructions INI Instruction Mnemonic Variations Function code Function INI(880) can be used to execute the following operations • To start comparison with the high-speed counter comparison table • To stop comparison with the high-speed counter comparison table MODE CONTROL INI @INI 880 • To change the PV of the high-speed counter. • To change the PV of interrupt inputs in counter mode. • To change the PV of the pulse output (origin fixed at 0). • To stop pulse output. INI INI(880) Symbol P P: Port specifier C C: Control data NV NV: First word with new PV Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size P Port specifier WORD 1 C Control data UINT 1 DWORD 2 NV Description First word with new PV P: Port Specifier P 2-308 Port 0000 hex Pulse output 0 0001 hex Pulse output 1 0010 hex High-speed counter 0 0011 hex High-speed counter 1 0012 hex High-speed counter 2 0013 hex High-speed counter 3 0014 hex High-speed counter 4 0015 hex High-speed counter 5 (Cannot be used in CP1E-E10D-) 1000 hex PWM(891) output 0 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions C: Control Data C INI(880) function Starts comparison. 0001 hex Stops comparison. 0002 hex Changes the PV. 0003 hex Stops pulse output. High-speed Counter/Pulse Output Instructions 0000 hex NV: First Word with New PV If C is 0002 hex (i.e., when changing a PV), NV and NV+1 contain the new PV. Any values in NV and NV+1 are ignored when C is not 0002 hex. 0 15 NV Lower word of new PV NV+1 Upper word of new PV 2 For Pulse Output or High-speed Counter Input: 0000 0000 to FFFF FFFF hex INI  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM CF Pulse bits TR bits --- --- --- *DM P, C --- --- --- --- --- --- --- --- --- OK NV OK OK OK OK OK OK OK OK OK --- Flags Name Error Flag Label P_ER Operation • ON if the specified range for P, C, or NV is exceeded. • ON if the combination of P and C is not allowed. • ON if a comparison table has not been registered but starting comparison is specified. • ON if a new PV is specified for a port that is currently outputting pulses. • ON if changing the PV of a high-speed counter is specified for a port that is not specified for a high-speed counter. • ON if INI(880) is executed in an interrupt task for a high-speed counter and an interrupt occurs when CTBL(882) is executed. • OFF in all other cases. Function INI(880) performs the operation specified in C for the port specified in P. The possible combinations of operations and ports are shown in the following table. C: Control data P: Port specifier 0000 hex: Start comparison 0001 hex: Stop comparison 0002 hex: Change PV 0003 hex: Stop pulse output 0000 or 0001 hex: Pulse output Not allowed. Not allowed. OK OK 0010 to 0015 hex: High-speed counter input OK OK OK Not allowed. 1000 hex: PWM (891) output Not allowed. Not allowed. Not allowed. OK  Starting Comparison (C = 0000 hex) If C is 0000 hex, INI(880) starts comparison of a high-speed counter’s PV to the comparison table registered with CTBL(882). Note A target value comparison table must be registered in advance with CTBL(882). If INI(880) is executed without registering a table, the Error Flag will turn ON.  Stopping Comparison (C = 0001 hex) If C is 0001 hex, INI(880) stops comparison of a high-speed counter’s PV to the comparison table registered with CTBL(882). CP1E CPU Unit Instructions Reference Manual(W483) 2-309 2 Instructions  Changing a PV (C = 0002 hex) Port and mode Operation Setting range The present value of the pulse output is changed. The new value is specified in NV and NV+1. Pulse output (P = 0000 or 0001 hex) High-speed counter input (P = 0010 to 0015 hex) Linear Mode Note This instruction can be executed only when pulse output is stopped. An error will occur if it is executed during pulse output. Differential inputs, increment/decrement pulses, or pulse + direction inputs Increment pulse input The present value of the high-speed counter is changed. The new value is specified in NV and NV+1. Note An error will occur for the instruction if the specified port is not set for a high-speed counter. Ring Mode 8000 0000 to 7FFF FFFF hex (-2,147,483,648 to 2,147,483,647) 8000 0000 to 7FFF FFFF hex (-2,147,483,648 to 2,147,483,647) 0000 0000 to FFFF FFFF hex (0 to 4,294,967,295) 0000 0000 to FFFF FFFF hex (0 to 4,294,967,295)  Stopping Pulse Output (P = 0000, 0001 or 1000 hex and C = 0003 hex) If C is 0003 hex, INI(880) immediately stops pulse output for the specified port. If this instruction is executed when pulse output is already stopped, then the pulse amount setting will be cleared. Sample program When CIO 0.00 turns ON in the following example, SPED(885) starts outputting pulses from pulse output 0 in Continuous Mode at 500 Hz. When CIO 0.01 turns ON, pulse output is stopped by INI(880). i 0.00 @SPED D100 01F4 D101 0 #0000 Pulse output 0 #0100 Pulse + Direction output, CW, Continuous Mode Target frequency: 500 Hz D100 0.01 @INI #0000 Pulse output 0 #0003 Stop pulse output 0 2-310 (Not used.) CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions PRV HIGH-SPEED COUNTER PV READ Mnemonic PRV Variations @PRV Function code Function 881 PRV(881) reads the High-speed counter PV and pulse output PV and interrupt input PV in counter mode. PRV High-speed Counter/Pulse Output Instructions Instruction PRV(881) Symbol P P: Port specifier C C: Control data D D: First destination word 2 PRV Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description P Port specifier C Control data D First destination word Data type Size --- 1 --- 1 WORD Variable P: Port Specifier P Port 0000 hex Pulse output 0 0001 hex Pulse output 1 0010 hex High-speed counter 0 0011 hex High-speed counter 1 0012 hex High-speed counter 2 0013 hex High-speed counter 3 0014 hex High-speed counter 4 0015 hex High-speed counter 5 (Cannot be used in CP1E-E10D-) 1000 hex PWM(891) output 0 C: Control Data C PRV(881) function 0000 hex Reads the PV. 0001 hex Reads status. 0002 hex Reads range comparison results. P = 0000 or 0001: Reads the output frequency of pulse output 0 or pulse output 1. C = 0003 hex 00 3 hex P = 0010: Reads the frequency of high-speed counter input 0. C = 0013 hex: 10-ms sampling method C = 0023 hex: 100-ms sampling method C = 0033 hex: 1-s sampling method CP1E CPU Unit Instructions Reference Manual(W483) 2-311 2 Instructions D: First Destination Word 0 15 D Lower word of PV D+1 Upper word of PV 2-word PV Pulse output PV, high-speed counter input PV, high-speed counter input frequency for high-speed counter input 0 0 15 D PV 1-word PV Status, range comparison results  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM P, C --- --- --- --- --- --- --- --- --- OK D OK OK OK OK OK OK OK OK OK --- CF Pulse bits TR bits --- --- --- Flags Name Label Error Flag P_ER Operation • ON if the specified range for P or C is exceeded. • ON if the combination of P and C is not allowed. • ON if reading range comparison results is specified even though range comparison is not being executed. • ON if reading the output frequency is specified for anything except for high-speed counter 0. • ON if specified for a port not set for a high-speed counter. • OFF in all other cases. Function PRV(881) reads the data specified in C for the port specified in P. The possible combinations of data and ports are shown in the following table. C: Control data P: Port specifier 0000 hex: Read PV 0001 hex: Read status 0002 hex: Read range comparison results 0000 or 0001 hex: Pulse output OK OK Not allowed. 0010 to 0015 hex: High-speed counter input OK OK OK 1000 hex: PWM (891) output Not allowed. OK Not allowed. 00 3 hex: Read frequency 0003 hex: Pulse output read high-speed counter frequency 0013 hex: 10-ms sampling method 0023 hex: 100-ms sampling method 0033 hex: 1-s sampling method 0000 or 0001 hex: Pulse output OK Not allowed. Not allowed. Not allowed. 0010 or 0015 hex: High-speed counter input Not allowed. OK (high-speed counter 0 only) OK (high-speed counter 0 only) OK (high-speed counter 0 only) 1000 hex: PWM (891) output Not allowed. Not allowed. Not allowed. Not allowed. P: Port specifier 2-312 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Reading a PV (C = 0000 hex) Port and mode Operation Setting range The present value of the pulse output is stored in D and D+1. 8000 0000 to 7FFF FFFF hex (−2,147,483,648 to 2,147,483,647) High-speed counter input (P = 0010 to 0015 hex) The present value of the high-speed counter is stored in D and D+1. 8000 0000 to 7FFF FFFF hex (−2,147,483,648 to 2,147,483,647) Linear Mode Ring Mode High-speed Counter/Pulse Output Instructions Pulse output (P = 0000 or 0001 hex) 0000 0000 to FFFF FFFF hex (0 to 4,294,967,295)  Reading Status (C = 0001 hex) Port and mode Pulse output Operation The pulse output status is stored in D. Results of reading 15 D 0 0 0 0 0 0 0 0 0 2 PRV Pulse Output Status Flag OFF: Constant speed ON: Accelerating/decelerating PV Overflow/Underflow Flag OFF: Normal ON: Error Pulse Output Amount Set Flag OFF: Not set ON: Set Pulse Output Completed Flag OFF: Output not completed ON: Output completed Pulse Output In-progress Flag OFF: Stopped ON: Outputting No-origin Flag OFF: Origin established ON: Origin not established At-origin Flag OFF: Not stopped at origin ON: Stopped at origin Pulse Output Stopped Error Flag OFF: No error ON: Pulse output stopped due to error High-speed counter input The high-speed counter status is stored in D. 15 D 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Comparison In-progress Flag OFF: Stopped ON: Comparing PV Overflow/Underflow Flag OFF: Normal ON: Error Count Direction OFF: Decrementing ON: Incrementing PWM(891) output The PWM(891) output is stored in D. 15 0 D 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Pulse Output In-progress Flag OFF: Stopped ON: Outputting  Reading the Results of Range Comparison (C = 0002 hex) If C is 0002 hex, PRV(881) reads the results of range comparison and stores it in D as shown in the following diagram. 15 D 0 0 0 0 0 0 0 0 0 0 0 Comparison Result 1 OFF: Not in range ON: In range Comparison Result 2 OFF: Not in range ON: In range Comparison Result 3 OFF: Not in range ON: In range Comparison Result 4 OFF: Not in range ON: In range Comparison Result 5 OFF: Not in range ON: In range Comparison Result 6 OFF: Not in range ON: In range CP1E CPU Unit Instructions Reference Manual(W483) 2-313 2 Instructions  Reading Pulse Output or High-speed Counter Frequency (C = 00@3 hex) If C is 00@3 hex, PRV(881) reads the frequency being output from pulse output 0 or 1 or the frequency being input to high-speed counter 0 and stores it in D and D+1. 0000 or 0001 hex (Reading the frequency of pulse output 0 or 1) 0000 0000 to 0001 86A0 hex (0 to 100,000) 0010 hex (Reading the frequency of high-speed counter 0) Counter input method: Any input method other than 4× differential phase mode: Result = 00000000 to 000186A0 hex (0 to 100,000) Note If a frequency higher than 100 kHz has been input, the output will remain at the maximum value of 000186A0 hex. Counter input method: 4× differential phase mode: Result = 00000000 to 00030D40 hex (0 to 200,000) Note If a frequency higher than 200 kHz has been input, the output will remain at the maximum value of 00030D40 hex.  Pulse Frequency Calculation Methods The function counts the number of pulses within a fixed interval (the sampling time) and calculates the frequency from that count. One of the following three sampling times can be selected by setting the rightmost two digits of C. Sampling time Value of C Description 10 ms 0013 hex Counts the number of pulses every 10 ms. The error is 10% max. at 1 kHz. 100 ms 0023 hex Counts the number of pulses every 100 ms. The error is 1% max. at 1 kHz. 1s 0033 hex Counts the number of pulses every 1 s. The error is 0.1% max. at 1 kHz. Precautions If the counter is reset when P is 0010 hex (high-speed counter 0) and C is 0013, 0023, or 0033 hex (sampling method), the data read during the sampling time when the counter was reset will not be dependable. Sample program When CIO 0.00 turns ON in the following programming example, CTBL(882) registers a range comparison table for high-speed counter 0 and starts comparison. When CIO 0.01 turns ON, PRV(881) reads the range comparison results at that time and stores them in CIO 0100. 0.00 @CTBL #0000 High-speed counter input 0 #0001 Range comparison table registration and comparison start D100 0.01 @PRV #0010 High-speed counter input 0 #0002 Read range comparison results 100 When CIO 1.00 turns ON in the following programming example, PRV(881) reads the frequency of the pulse being input to highspeed counter 0 at that time and stores it as a hexadecimal value in D200 and D201. 2-314 1.00 PRV #0010 High-speed counter input 0 #0013 Read input frequency D200 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions CTBL REGISTER COMPARISON TABLE Mnemonic CTBL Function code Variations @CTBL Function CTBL(882) is used to register a comparison table and perform comparisons for a high-speed counter PV. 882 CTBL CTBL(882) Symbol P P: Port specifier C C: Control data TB TB: First comparison table word 2 CTBL Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description P Port specifier C Control data TB First comparison table word High-speed Counter/Pulse Output Instructions Instruction Data type Size --- 1 --- 1 LWORD Variable P: Port specifier P Port 0000 hex High-speed counter 0 0001 hex High-speed counter 1 0002 hex High-speed counter 2 0003 hex High-speed counter 3 0004 hex High-speed counter 4 0005 hex High-speed counter 5 (Cannot be used in CP1E-E10D-) C: Control data C CTBL(882) function 0000 hex Registers a target value comparison table and starts comparison. 0001 hex Registers a range comparison table and performs one comparison. 0002 hex Registers a target value comparison table. Comparison is started with INI(880). 0003 hex Registers a range comparison table. Comparison is started with INI(880). CP1E CPU Unit Instructions Reference Manual(W483) 2-315 2 Instructions TB: First comparison table word • TB is the first word of the comparison table. The structure of the comparison table depends on the type of comparison being performed. For target value comparison, the length of the comparison table is determined by the number of target values specified in TB. The table can be between 4 and 19 words long, as shown below. 15 0 0001 to 6 hex (1 to 6 target values) Number of target values TB TB+1 Lower word of target value 1 TB+2 Upper word of target value 1 00000000 to FFFFFFFF hex TB+3 Interrupt task number for target value 1 TB+16 Lower word of target value 6 TB+17 Upper word of target value 6 00000000 to FFFFFFFF hex TB+18 Interrupt task number for target value 6 Interrupt Task Number 15 14 12 11 87 0 0 0 4 3 0 0 Interrupt task number 00 to 0F hex (0 to 15) Direction OFF: Incrementing, ON: Decrementing • For range comparison, the comparison table always contains six ranges. The table is 30 words long, as shown below. If it is not necessary to set six ranges, set the interrupt task number to FFFF hex for all unused ranges. 15 0 TB Lower word of range 1 lower limit 0000 0000 to FFFF FFFF hex (See note.) TB+1 Upper word of range 1 lower limit TB+2 Lower word of range 1 upper limit TB+3 Upper word of range 1 upper limit 0000 0000 to FFFF FFFF hex (See note.) Range 1 interrupt task number TB+25 Lower word of range 6 lower limit 0000 0000 to FFFF FFFF hex (See note.) TB+26 Upper word of range 6 lower limit TB+27 Lower word of range 6 upper limit TB+28 Upper word of range 6 upper limit 0000 0000 to FFFF FFFF hex (See note.) TB+29 Range 6 interrupt task number Interrupt task number 0000 to 000F hex: Interrupt task number 0 to 15 AAAA hex: Do not execute interrupt task. FFFF hex: Ignore the settings for this range. Note Always set the upper limit greater than or equal to the lower limit for any one range.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM P, C --- --- --- --- --- --- --- --- --- OK TB OK OK OK OK OK OK OK OK OK --- 2-316 CF Pulse bits TR bits --- --- --- *DM CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Flags Name Label P_ER Operation • ON if the specified range for P or C is exceeded. • ON if the number of target values specified for target value comparison is set to 0. • ON if the number of target values specified for target value comparison exceeds 6. • ON if the upper value is less than the lower value for any range. • ON if the set values for all ranges are disabled during a range comparison. • ON if the high-speed counter is set for incremental pulse mode and decrementing is set in the table as the direction for comparison. • ON if the same target value is specified more than once in the same comparison direction for target comparison when the high-speed counter is set to incremental pulse mode and linear mode. • ON if an instruction is executed when the high-speed counter is set to Ring Mode and the specified value exceeds the maximum ring value. • ON if specified for a port not set for a high-speed counter. High-speed Counter/Pulse Output Instructions Error Flag 2 • ON if executed for a different comparison method while comparison is already in progress. • OFF in all other cases. CTBL(882) registers a comparison table and starts comparison for the port specified in P and the method specified in C. Once a comparison table is registered, it is valid until a different table is registered or until the CPU Unit is switched to PROGRAM mode. Each time CTBL(882) is executed, comparison is started under the specified conditions. When using CTBL(882) to start comparison, it is normally sufficient to use the differentiated version (@CTBL(882)) of the instruction or an execution condition that is turned ON only for one scan. Note If an interrupt task that has not been registered is specified, a fatal program error will occur the first time an interrupt is generated.  Registering a Comparison Table (C = 0002 or 0003 hex) If C is set to 0002 or 0003 hex, a comparison table will be registered, but comparison will not be started. Comparison is started with INI(880).  Registering a Comparison Table and Starting Comparison (C = 0000 or 0001 hex) If C is set to 0000 or 0001 hex, a comparison table will be registered, and comparison will be started.  Stopping Comparison Comparison is stopped with INI(880). It makes no difference what instruction was used to start comparison.  Target Value Comparison The corresponding interrupt task is called and executed when the PV matches a target value. • The same interrupt task number can be specified for more than one target value. • The direction can be set to specify whether the target value is valid when the PV is being incremented or decremented. If bit 15 in the word used to specify the interrupt task number for the range is OFF, the PV will be compared to the target value only when the PV is being incremented, and if bit 00 is ON, only when the PV is being decremented. • The comparison table can contain up to 6 target values, and the number of target values is specified in TB (i.e., the length of the table depends on the number of target values that is specified). • Comparisons are performed for all target values registered in the table. Note 1 An error will occur if the same target value with the same comparison direction is registered more than once in the same table. 2 If the high-speed counter is set for incremental pulse mode, an error will occur if decrementing is set in the table as the direction for comparison. 3 If the count direction changes while the PV equals a target value that was reached in the direction opposite to that set as the comparison direction, the comparison condition for that target value will not be met. Do not set target values at peak and bottom values of the count value. CP1E CPU Unit Instructions Reference Manual(W483) 2-317 CTBL Function 2 Instructions  Range Comparison The corresponding interrupt task is called and executed when the PV enters a set range. • The same interrupt task number can be specified for more than one target value. • The range comparison table contains 6 ranges, each of which is defined by a lower limit and an upper limit. If a range is not to be used, set the interrupt task number to FFFF hex to disable the range. • The interrupt task is executed only once when the PV enters the range. If the PV is within more than one range when the comparison is made, the interrupt task for the range closest to the beginning of the table will be given priority and other interrupt tasks will be executed in following cycles. • If there is no reason to execute an interrupt task, specify AAAA hex as the interrupt task number. The range comparison results can be read with PRV(881) or using the Range Comparison In-progress Flags. Note An error will occur if the upper limit is less than the lower limit for any one range. Sample program When CIO 0.00 turns ON in the following programming example, CTBL(882) registers a target value comparison table and starts comparison for high-speed counter 0. The PV of the high-speed counter is counted incrementally and when it reaches 500, it equals target value 1 and interrupt task 1 is executed. When the PV is incremented to 1000, it equals target value 2 and interrupt task 2 is executed. 0.00 @CTBL D100 0002 #0000 High-speed counter input 0 D101 01F4 #0000 Register target comparison table and start comparison D102 0000 D103 0001 D104 03E8 D105 0000 D106 0002 D100 2-318 Two target values Target value 1: 0000 01F4 hex (500) Incrementing, Interrupt task number 1 Target value 2: 0000 03E8 hex (1000) Incrementing, Interrupt task number 2 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions SPED Mnemonic SPEED OUTPUT Variations SPED @SPED Function code Function 885 SPED(885) is used to set the output pulse frequency for a specific port and start pulse output without acceleration or deceleration. SPED High-speed Counter/Pulse Output Instructions Instruction SPED(855) Symbol P P: Port specifier M M: Output mode F F: First pulse frequency word 2 SPED Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size P Port specifier UINT 1 M Output mode WORD 1 F First pulse frequency word UDINT 2 P: Port specifier P Port 0000 hex Pulse output 0 0001 hex Pulse output 1 M: Output mode 15 12 11 87 F: First pulse frequency word 4 3 0 15 0 F Lower word of target frequency M F+1 Upper word of target frequency Mode 0 hex: Continuous 1 hex: Independent 0 to 100,000 Hz (0000 0000 to 0001 86A0 hex) Specify the pulse frequency in Hz. Direction 0 hex: CW 1 hex: CCW Pulse output method 1 hex: Pulse + direction Always 0 hex.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM P, M --- --- --- --- --- --- --- --- --- OK F OK OK OK OK OK OK OK OK OK --- CP1E CPU Unit Instructions Reference Manual(W483) CF Pulse bits TR bits --- --- --- *DM 2-319 2 Instructions Flags Name Label Error Flag P_ER Operation • ON if the specified range for P, M, or F is exceeded. • ON if PLS2(887) or ORG(889) is already being executed to control pulse output for the specified port. • ON if SPED(885) or INI(880) is used to change the mode between continuous and independent output during pulse output. • ON if SPED(885) is executed in an interrupt task when an instruction controlling pulse output is being executed in a cyclic task. • ON if SPEC(885) is executed in independent mode with an absolute number of pulses and the origin has not been established. • OFF in all other cases. Function SPED(885) starts pulse output on the port specified in P using the method specified in M at the frequency specified in F. Pulse output will be started each time SPED(885) is executed. It is thus normally sufficient to use the differentiated version (@SPED(885)) of the instruction or an execution condition that is turned ON only for one scan. Pulse frequency Target frequency Time SPED(885) executed. In independent mode, pulse output will stop automatically when the number of pulses set with PULS(886) in advance have been output. In continuous mode, pulse output will continue until stopped from the program. An error will occur if the mode is changed between independent and continuous mode while pulses are being output. Note SPED instruction can be used only with transistor output type of CP1E N/NA-type CPU Unit. In case of transistor output type of CP1E E-type CPU Unit or relay output type, NOP processing is applied.  Continuous Mode Speed Control When continuous mode operation is started, pulse output will be continued until it is stopped from the program. Note Pulse output will stop immediately if the CPU Unit is changed to PROGRAM mode. Operation Purpose Application Starting pulse output To output with specified speed Changing the speed (frequency) in one step Frequency changes Procedure/ instruction Description Pulse frequency Outputs pulses at a specified frequency. SPED(885) (Continuous) Changes the frequency (higher or lower) of the pulse output in one step. SPED(885) (Continuous) Target frequency Time Execution of SPED(885) Changing settings To change speed in one step Changing the speed during operation Pulse frequency Target frequency ↓ SPED(885) (Continuous) Present frequency Time Execution of SPED(885) 2-320 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Purpose Application Stopping pulse output Stop pulse output Immediate stop Description Procedure/ instruction Stops the pulse output immediately. SPED(885) (Continuous) Frequency changes Pulse frequency ↓ Present frequency INI(880) Time Execution of INI(880) Stop pulse output Immediate stop Stops the pulse output immediately. Pulse frequency SPED(885) (Continuous) High-speed Counter/Pulse Output Instructions Operation ↓ Present frequency SPED(885) (Continuous, Target frequency of 0 Hz) Time 2 Execution of SPED(885) SPED  Independent Mode Positioning When independent mode operation is started, pulse output will be continued until the specified number of pulses has been output. Note • Pulse output will stop immediately if the CPU Unit is changed to PROGRAM mode. • The number of output pulses must be set each time output is restarted. • The number of output pulses must be set in advance with PULS(881). Pulses will not be output for SPED(885) if PULS(881) is not executed first. • The direction set in the SPED(885) operand will be ignored if the number of pulses is set with PULS(881) as an absolute value. Operation Starting pulse output Purpose To output with specified speed Application Positioning without acceleration or deceleration Frequency changes Pulse frequency Procedure/ instruction Description Specified number of pulses (Specified with PULS(886).) Target frequency Starts outputting pulses at the specified frequency and stops immediately when the specified number of pulses has been output. PULS(886) ↓ SPED(885) (Independent) Time Execution of SPED(885) Changing settings To change speed in one step Changing the speed in one step during operation Outputs the specified number of pulses and then stops. Specified number of pulses Pulse frequency (Specified with Number of pulses PULS(886).) New target specified with frequency PULS(886) does Original target not change. frequency Note The target position (number of pulses) cannot be changed during positioning (pulse output). SPED(885) can be executed during positioning to change (raise or lower) the pulse output frequency in one step. The target position (specified number of pulses) is not changed. PULS(886) ↓ SPED(885) (Independent) ↓ SPED(885) (Independent) Time Execution of SPED(885) (independent mode) CP1E CPU Unit Instructions Reference Manual(W483) SPED(885) (independent mode) executed again to change the target frequency. (The target position is not changed.) 2-321 2 Instructions Operation Stopping pulse output Purpose Application To stop pulse output (Number of pulses setting is not preserved.) Immediate stop Frequency changes Stops the pulse output immediately and clears the number of output pulses setting. Pulse frequency Present frequency PULS(886) ↓ SPED(885) (Independent) ↓ INI(880) Time Execution of SPED(885) Stop pulse output (Number of pulses setting is not preserved.) Procedure/ instruction Description Immediate stop Execution of INI(880) Stops the pulse output immediately and clears the number of output pulses setting. Pulse frequency Present frequency PULS(886) ↓ SPED(885) (Independent) ↓ SPED(885), (Independent, Target frequency of 0 Hz) Time Execution of SPED(885) Execution of SPED(885) Sample program When CIO 0.00 turns ON in the following programming example, PULS(886) sets the number of output pulses for pulse output 0. An absolute value of 5,000 pulses is set. SPED(885) is executed next to start pulse output using the pulse + direction method in the clockwise direction in independent mode at a target frequency of 500 Hz. . 0.00 @PULS #0000 Pulse output: 0 #0000 Pulse type: Relative D100 D100 1388 D101 0000 D110 01F4 D111 0000 Number of output pulses: 5,000 Target frequency: 500 Hz @SPED #0000 #0101 D110 Pulse output: 0 Pulse + direction output Direction: CW in independent mode Pulse frequency Target frequency: 500 Hz 5,000 pulses Time PULS(881) and the SPED(885) executed. 2-322 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions PULS Mnemonic SET PULSES PULS Variations @PULS Function code Function 886 PULS(886) is used to set the pulse output amount (number of output pulses). PULS PULS(886) Symbol P P: Port specifier T T: Pulse type N N: Number of pulses 2 PULS Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description P Port specifier T Pulse type N Number of pulses Data type Size --- 1 --- 1 DINT 2 P: Port specifier P Port 0000 hex Pulse output 0 0001 hex Pulse output 1 T: Pulse type T Pulse type 0000 hex Relative 0001 hex Absolute High-speed Counter/Pulse Output Instructions Instruction N and N+1: Number of pulses 15 0 N Lower word with number of pulses N+1 Upper word with number of pulses • The actual number of movement pulses that will be output are as follows: For relative pulse output, the number of movement pulses = the set number of pulses. For absolute pulse output, the number of movement pulses = the set number of pulses - the PV.  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM P, T --- --- --- --- --- --- --- --- --- N OK OK OK OK OK OK OK OK OK CP1E CPU Unit Instructions Reference Manual(W483) Constants CF Pulse bits TR bits OK --- --- --- 2-323 2 Instructions Flags Name Error Flag Label P_ER Operation • ON if the specified range for P, T, or N is exceeded. • ON if PULS(886) is executed for a port that is already outputting pulses. • ON if PULS(886) is executed in an interrupt task when an instruction controlling pulse output is being executed in a cyclic task. • OFF in all other cases. Function PULS(886) sets the pulse type and number of pulses specified in T and N for the port specified in P. Actual output of the pulses is started later in the program using SPED(885) or ACC(888) in independent mode. Note • An error will occur if PULS(886) is executed when pulses are already being output. Use the differentiated version (@PULS(886)) of the instruction or an execution condition that is turned ON only for one scan to prevent this. • The calculated number of pulses output for PULS(886) will not change even if INI(880) is used to change the PV of the pulse output. • The direction set for SPED(885) or ACC(888) will be ignored if the number of pulses is set with PULS(881) as an absolute value. • It is possible to move outside of the range of the PV of the pulse output amount (-2,147,483,648 to 2,147,483,647). • PULS instruction can be used only with transistor output type of CP1E N/NA-type CPU Unit. In case of transistor output type of CP1E E-type CPU Unit or relay output type, NOP processing is applied. Sample program When CIO 0.00 turns ON in the following programming example, PULS(886) sets the number of output pulses for pulse output 0. An absolute value of 5,000 pulses is set. SPED(885) is executed next to start pulse output using the pulse + direction method in the clockwise direction in independent mode at a target frequency of 500 Hz. 0.00 @PULS #0000 Pulse output: 0 #0000 Pulse type: Relative D100 @SPED #0000 #0101 D110 2-324 D100 1388 D101 0000 D110 01F4 D111 0000 Number of output pulses: 5,000 Target frequency: 500 Hz Pulse output: 0 Pulse + direction output Direction: CW in independent mode CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions PLS2 Mnemonic PULSE OUTPUT Variations PLS2 @PLS2 Function code Function 887 PLS2(887) outputs a specified number of pulses to the specified port. Pulse output starts at a specified startup frequency, accelerates to the target frequency at a specified acceleration rate, decelerates at the specified deceleration rate, and stops at approximately the same frequency as the startup frequency. High-speed Counter/Pulse Output Instructions Instruction 2 PLS2 PLS2(887) P P: Port specifier M M: Output mode S S: First word of settings table F F: First word of starting frequency PLS2 Symbol Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size --- 1 P Port specifier M Output mode --- 1 S First word of settings table WORD 6 F First word of starting frequency UDINT 2 P: Port Specifier P Port 0000 hex Pulse output 0 0001 hex Pulse output 1 M: Output Mode 15 12 11 87 4 3 0 M Relative/absolute specifier 0 hex: Relative pulses 1 hex: Absolute pulses Direction 0 hex: CW 1 hex: CCW Pulse output method 1 hex: Pulse + direction Always 0 hex. CP1E CPU Unit Instructions Reference Manual(W483) 2-325 2 Instructions S: First Word of Settings Table 15 0 S1 Acceleration rate S1+1 Deceleration rate 1 to 65535 Hz (#0001 to FFFF) Specify the increase or decrease in the frequency per pulse control period (4 ms). S1+2 Lower word with target frequency 0 to 100,000 Hz (0000 0000 to 0001 86A0 hex) S1+3 Upperword with target frequency Specify the frequency after acceleration/deceleration in Hz. S1+4 Lower word with number of output pulses S1+5 Upper word with number of output pulses The actual number of movement pulses that will be output are as follows: • For relative pulse output, the number of movement pulses = the set number of pulses. • For absolute pulse output, the number of movement pulses = the set number of pulses − the PV. F: First Word of Starting Frequency The starting frequency is given in F and F+1. 15 0 F Lower word with starting frequency 0 to 100,000 Hz (0000 0000 to 0001 86A0 hex) F+1 Upper word with starting frequency Specify the starting frequency in Hz.  Operand Specifications Word addresses Indirect DM addresses Area P, M Constants CIO WR HR AR T C DM @DM *DM --- --- --- --- --- --- --- --- --- OK OK OK OK OK OK OK OK OK S Pulse bits TR bits --- --- --- OK --- F CF OK Flags Name Error Flag Label P_ER Operation • ON if the specified range for P, M, S, or F is exceeded. • ON if PLS2(887) is executed for a port that is already outputting pulses for SPED(885) or ORG(889). • ON if PLS2(887) is executed in an interrupt task when an instruction controlling pulse output is being executed in a cyclic task. • ON if PLS2(887) is executed for an absolute pulse output but the origin has not been established. • OFF in all other cases. 2-326 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function The frequency is increased every pulse control period (4 ms) at the acceleration rate specified in S until the target frequency specified in S is reached (2 in diagram). When the target frequency has been reached, acceleration is stopped and pulse output continues at a constant speed (3 in diagram). The deceleration point is calculated from the number of output pulses and deceleration rate set in S and when that point is reached, the frequency is decreased every pulse control period (4 ms) at the deceleration rate specified in S until the starting frequency specified in S is reached, at which point pulse output is stopped (4 in diagram). Pulse output is started each time PLS2(887) is executed. It is thus normally sufficient to use the differentiated version (@PLS2(887)) of the instruction or an execution condition that is turned ON only for one scan. 2 PLS2 Pulse frequency Target frequency Starting frequency Time PLS2(887) executed. PLS2(887) can be used only for positioning. With the CJ1M CPU Units, PLS2(887) can be executed during pulse output for ACC(888) in either independent or continuous mode, and during acceleration, constant speed, or deceleration. (See notes 1 and 2.) ACC(888) can also be executed during pulse output for PLS2(887) during acceleration, constant speed, or deceleration. Note 1 Executing PLS2(887) during speed control with ACC(888) (continuous mode) with the same target frequency as ACC(888) can be used to achieve interrupt feeding of a fixed distance. Acceleration will not be performed by PLS2(887) for this application, but if the acceleration rate is set to 0, the Error Flag will turn ON and PLS2(887) will not be executed. Always set the acceleration rate to a value other than 0. 2 If PLS2 (887) is executed during the period from pulse output stop to one cycle after the stop (when pulse output in-progress flag is ON), pulse output will start again in the next cycle after stopping. However, if pulse output is stopped by INI (880), the pulse output instruction will become invalid within one cycle after the stop. Execute the instruction till the pulse output in-progress flag is OFF. 3 PLS2 instruction can be used only with transistor output type of CP1E N/NA-type CPU Unit. In case of transistor output type of CP1E E-type CPU Unit or relay output type, NOP processing is applied. CP1E CPU Unit Instructions Reference Manual(W483) High-speed Counter/Pulse Output Instructions PLS2(887) starts pulse output on the port specified in P using the mode specified in M at the start frequency specified in F (1 in diagram). 2-327 2 Instructions  Independent Mode Positioning Note Pulse output will stop immediately if the CPU Unit is changed to PROGRAM mode. Operation Starting pulse output Changing settings Purpose Complex trapezoidal control To change speed smoothly (with unequal acceleration and deceleration rates) Application Positioning with trapezoidal acceleration and deceleration (Separate rates used for acceleration and deceleration; starting speed) The number of pulses can be changed during positioning. Changing the target speed (frequency) during positioning (different acceleration and deceleration rates) Frequency changes Specified number of pulses Pulse frequency Target frequency Deceleration rate Acceleration rate Starting frequency Execution of PLS2(887) Target frequency reached. To change target position Stop frequency Time Output stops. Deceleration point Specified number of pulses (Specified with PULS(886).) Pulse frequency Changed target frequency Target frequency Acceleration/ deceleration rate Time Execution of ACC(888) (independent mode) Changing the target position during positioning (multiple start function) Pulse frequency Target frequency PLS2(887) executed to change the target frequency and acceleration/deceleration rates. (The original target position is specified again.) Specified number of pulses Number of pulses changed with PLS2(887). Acceleration/ deceleration rate Time Execution of PLS2(887) executed to PLS2(887) change the target position. (The target frequency and acceleration/deceleration rates are not changed.) To change target position and speed smoothly Changing the target position and target speed (frequency) during positioning (multiple start function) Number of pulses Number of changed with Pulse pulses specified PLS2(887). frequency with PLS2(887). Changed target frequency Target frequency Acceleration/ deceleration rate Time Execution of PLS2(887) PLS2(887) executed to change the target frequency, acceleration rate and deceleration rate. 2-328 Procedure/ instruction Description Accelerates and decelerates at a fixed rates. The pulse output is stopped when the specified number of pulses has been output. (See note.) PLS2(887) Note The target position (specified number of pulses) can be changed during positioning. PLS2(887) can be executed during positioning to change the acceleration rate, deceleration rate, and target frequency. PLS2(887) Note To prevent the target position from being changed intentionally, the original target position must be specified in absolute coordinates. ACC(888) (Independent) PLS2(887) can be executed during positioning to change the target position (number of pulses), acceleration rate, deceleration rate, and target frequency. PLS2(887) Note If a constant speed cannot be maintained after changing the settings, an error will occur and the original operation will continue to the original target position. ↓ PLS2(887) PULS(886) ↓ ↓ PLS2(887) ↓ PLS2(887) PULS(886) ↓ ACC(888) (Independent) ↓ PLS2(887) PLS2(887) can be executed during positioning to change the target position (number of pulses), acceleration rate, deceleration rate, and target frequency. PULS(886) Note If a constant speed cannot be maintained after changing the settings, an error will occur and the original operation will continue to the original target position. PLS2(887) ↓ ACC(888) (Independent) ↓ PLS2(887) ↓ PLS2(887) CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Operation To change target position and speed smoothly, continued Application Changing the acceleration and deceleration rates during positioning (multiple start function) Frequency changes Pulse frequency Acceleration rate n New target Acceleration frequency rate 3 Original target Acceleration rate 2 frequency Acceleration Number of pulses specified by PLS2(887) #N. PLS2(887) can be executed during positioning (acceleration or deceleration) to change the acceleration rate or deceleration rate. Time Execution of PLS2(887) #1 Pulse frequency Specified number of pulses Change of direction at the specified deceleration rate Number of pulses (position) changed by PLS2(887) Stop pulse output (Number of pulses setting is not preserved.) Immediate stop ↓ ↓ PLS2(887) PLS2(887) can be executed during positioning with absolute pulse specification to change to absolute pulses and reverse direction. PLS2(887) ↓ PULS(886) ↓ ↓ PLS2(887) Pulse frequency Present frequency Stops the pulse output immediately and clears the number of output pulses. PLS2(887) Decelerates the pulse output to a stop. PLS2(887) ↓ INI(880) Time Execution of SPED(885) Stop pulse output smoothly. (Number of pulses setting is not preserved.) Decelerate to a stop Execution of INI(880) Pulse frequency Present frequency Deceleration rate Target frequency = 0 Execution of PLS2(887) Time ↓ ACC(888) (Independent, target frequency of 0 Hz) Execution of ACC(888) Note Triangular Control If the specified number of pulses is less than the number required to reach the target frequency and return to zero, the function will automatically reduce the acceleration/deceleration time and perform triangular control (acceleration and deceleration only.) An error will not occur. Pulse frequency Target frequency Specified number of pulses (Specified with PLS2(887).) Time Execution of PLS2(887) CP1E CPU Unit Instructions Reference Manual(W483) 2 PLS2(887) ACC(888) (Independent) Time Execution of PLS2 Execution of (887) PLS2(887) Stopping pulse output ACC(888) (Independent) 2-329 PLS2 Target frequency ↓ PLS2(887) Execution of PLS2(887) #N Execution of PLS2(887) #3 Execution of PLS2(887) #2 Changing the direction during positioning PULS(886) PLS2(887) rate 1 To change direction Procedure/ instruction Description High-speed Counter/Pulse Output Instructions Changing settings, continued Purpose 2 Instructions  Switching from Continuous Mode Speed Control to Independent Mode Positioning Example application Frequency changes Change from speed control to fixed distance positioning during operation PLS2(887) can be executed during a speed control operation started with ACC(888) to change to positioning operation. Outputs the number of pulses specified in PLS2(887) (Both relative and absolute pulse specification can be used.) Pulse frequency Procedure/ instruction Description ACC(888) (Continuous) ↓ PLS2(887) Target frequency Time Execution of ACC(888) (continuous mode) Execution of PLS2(887) Fixed distance feed interrupt Pulse frequency Present frequency Time Execution of ACC(888) (continuous mode) Execution of PLS2(887) with the following settings Number of pulses = number of pulses until stop Relative pulse specification Target frequency = present frequency Acceleration rate = 0001 to 07D0 hex Deceleration rate = target deceleration rate Sample program When CIO 0.00 turns ON in the following programming example, PLS2(887) starts pulse output from pulse output 0 with an absolute pulse specification of 100,000 pulses. Pulse output is accelerated at a rate of 500 Hz every 4 ms starting at 200 Hz until the target speed of 50 kHz is reached. From the deceleration point, the pulse output is decelerated at a rate of 250 Hz every 4 ms starting until the starting speed of at 200 Hz is reached, at which point pulse output is stopped. 0.00 D100 01F4 Acceleration rate: 500 Hz/4 ms D101 00FA Deceleration rate: 250 Hz/4 ms D102 C350 D100 Pulse output: 0 Pulse output method: Pulse + direction output Direction: CW D103 0000 D110 Pulse type: Relative D104 86A0 D105 0001 D110 00C8 D111 0000 @PLS2 #0000 #0100 Pulse frequency Target frequency: 50 kHz Pulse output amount: 100,000 pulses Start frequency: 200 Hz Target frequency 50 kHz 100,000 pulses Start frequency 200 Hz Time PLS2(887) executed. 2-330 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions ACC Mnemonic ACCELERATION CONTROL Variations ACC Function code Function 888 ACC(888) outputs pulses to the specified output port at the specified frequency using the specified acceleration and deceleration rate. @ACC ACC High-speed Counter/Pulse Output Instructions Instruction ACC(888) Symbol P P: Port specifier M M: Output mode S S: First word of settings table 2 ACC Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size P Port specifier Description --- 1 M Output mode --- 1 S First word of settings table WORD 3 P: Port Specifier P Port 0000 hex Pulse output 0 0001 hex Pulse output 1 M: Output Mode 15 12 11 87 4 3 0 M Mode 0 hex: Continuous mode 1 hex: Independent mode Direction 0 hex: CW 1 hex: CCW Pulse output method 1 hex: Pulse + direction Always 0 hex. Note Use the same pulse output method when using both pulse outputs 0 and 1. S: First Word of Settings Table S 15 0 Acceleration/deceleration rate 1 to 65535 Hz (#0001 to FFFF) Specify the increase or decrease in the frequency per pulse control period (4 ms). S+1 Lower word with target frequency S+2 Upper word with target frequency 0 to 100,000 Hz (0000 0000 to 0001 86A0 hex) Specify the frequency after acceleration or deceleration in Hz. CP1E CPU Unit Instructions Reference Manual(W483) 2-331 2 Instructions  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM CF Pulse bits TR bits --- --- --- *DM P, M --- --- --- --- --- --- --- --- --- OK S OK OK OK OK OK OK OK OK OK --- Flags Name Label Error Flag P_ER Operation • ON if the specified range for P, M, or S is exceeded. • ON if pulses are being output using ORG(889) for the specified port. • ON if ACC(888) is executed to switch between independent and continuous mode for a port that is outputting pulses for SPED(885), ACC(888), or PLS2(887). • ON if ACC(888) is executed in an interrupt task when an instruction controlling pulse output is being executed in a cyclic task. • ON if ACC(888) is executed for an absolute pulse output in independent mode but the origin has not been established. • OFF in all other cases. Function ACC(888) starts pulse output on the port specified in P using the mode specified in M using the target frequency and acceleration/deceleration rate specified in S. The frequency is increased every pulse control period (4 ms) at the acceleration rate specified in S until the target frequency specified in S is reached. Pulse output is started each time ACC(888) is executed. It is thus normally sufficient to use the differentiated version (@ACC(888)) of the instruction or an execution condition that is turned ON only for one scan. Pulse frequency Acceleration/deceleration rate Target frequency Time ACC(888) executed. ACC(888) executed. In independent mode, pulse output stops automatically when the specified number of pulses has been output. In continuous mode, pulse output continues until it is stopped from the program. An error will occur if an attempt is made to switch between independent and continuous mode during pulse output. PLS2(887) can be executed during pulse output for ACC(888) in either independent or continuous mode, and during acceleration, constant speed, or deceleration. (See note.) ACC(888) can also be executed during pulse output for PLS2(887) during acceleration, constant speed, or deceleration. If ACC(888) is executed in independent or continuous mode with a target frequency of 0 Hz and then ACC(888) or PLS2(887) is executed before pulse output stops, the target frequency will not change and pulse output will stop. Execute ACC(888) or PLS2(887) after pulse output stops. Note 1 Executing PLS2(887) during speed control with ACC(888) (continuous mode) with the same target frequency as ACC(888) can be used to achieved interrupt feeding of a fixed distance. Acceleration will not be performed by PLS2(887) for this application, but if the acceleration rate is set to 0, the Error Flag will turn ON and PLS2(887) will not be executed. Always set the acceleration rate to a value other than 0. 2 If ACC (888) or PLS2 (887) is executed during the period from pulse output stop to one cycle after the stop (when pulse output in-progress flag is ON), pulse output will start again in the next cycle after stopping. However, if pulse output is stopped by INI (880), the pulse output instruction will become invalid within one cycle after the stop. Execute the instruction till the pulse output in-progress flag is OFF. 3 ACC instruction can be used only with transistor output type of CP1E N/NA-type CPU Unit. In case of transistor output type of CP1E E-type CPU Unit or relay output type, NOP processing is applied. 2-332 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Continuous Mode Speed Control Pulse output will continue until it is stopped from the program. Operation Starting pulse output Purpose Application To output with specified acceleration and speed Accelerating the speed (frequency) at a fixed rate Frequency changes Pulse frequency Target frequency Present frequency Procedure/ instruction Description Outputs pulses and changes the frequency at a fixed rate. ACC(888) (Continuous) Changes the frequency from the present frequency at a fixed rate. The frequency can be accelerated or decelerated. ACC(888) or SPED(885) (Continuous) Changes the acceleration or deceleration rate during acceleration or deceleration. ACC(888) (Continuous) The deceleration rate is changed while decelerating. ACC(888) (Continuous) Note If the target frequency is set to 0 Hz, the current deceleration rate will be used. ACC(888) (Continuous) Immediately stops pulse output. ACC(888) (Continuous) Acceleration/ deceleration rate High-speed Counter/Pulse Output Instructions Note Pulse output will stop immediately if the CPU Unit is changed to PROGRAM mode. Time Execution of ACC(888) Changing settings To change speed smoothly Changing the speed smoothly during operation 2 Pulse frequency Acceleration/ deceleration rate Present frequency ↓ ACC(888) (Continuous) Time Execution of ACC(888) Changing the speed in a polyline curve during operation Pulse frequency Acceleration rate n Target frequency Acceleration rate 2 Acceleration rate 1 Present frequency ↓ ACC(888) (Continuous) Time Execution of ACC(888) Execution of ACC(888) Execution of ACC(888) Decelerating to a stop Pulse frequency Acceleration/deceleration rate 1 Present frequency Acceleration/ deceleration rate 2 Target frequency = 0 Time Execution of ACC(888) Execution of ACC(888) Execution of ACC(888) (target frequency = 0) Stopping pulse output To stop pulse output Immediate stop Pulse frequency ↓ ↓ ACC(888) (Continuous, target frequency of 0 Hz) ↓ Present frequency INI(880) (Continuous) Time Execution of ACC(888) Execution of INI(880) To stop pulse output smoothly Decelerating to a stop Pulse frequency Decelerated pulse output to a stop. Acceleration/deceleration Note If the target frerate (value set when starting) quency of the second ACC(888) instruction is 0 Hz, Target frequency = 0 Time the deceleration rate from the first Execution of ACC(888) Execution of ACC(888) ACC(888) instruction will be used. Present frequency CP1E CPU Unit Instructions Reference Manual(W483) ACC(888) (Continuous) ↓ ACC(888) (Continuous, target frequency of 0) 2-333 ACC Target frequency 2 Instructions  Independent Mode Positioning When independent mode operation is started, pulse output will be continued until the specified number of pulses has been output. The deceleration point is calculated from the number of output pulses and deceleration rate set in S and when that point is reached, the frequency is decreased every pulse control period (4 ms) at the deceleration rate specified in S until the specified number of points has been output, at which point pulse output is stopped. Note 1 Pulse output will stop immediately if the CPU Unit is changed to PROGRAM mode. 2 The number of output pulses must be set each time output is restarted. 3 The number of output pulses must be set in advance with PULS(881). Pulses will not be output for ACC(888) if PULS(881) is not executed first. 4 The direction set in the ACC(888) operand will be ignored if the number of pulses is set with PULS(881) as an absolute value. Operation Purpose Application Starting pulse output Simple trapezoidal control Positioning with trapezoidal acceleration and deceleration (Same rate used for acceleration and deceleration; no starting speed) The number of pulses cannot be changed during positioning. Changing settings To change speed smoothly (with the same acceleration and deceleration rates) Changing the target speed (frequency) during positioning (acceleration rate = deceleration rate) Frequency changes Pulse frequency Target frequency Specified number of pulses (Specified with PULS(886).) Acceleration/ deceleration rate Time Execution of ACC(888) Pulse frequency Changed target frequency Target frequency Outputs the specified number of pulses and then stops. Specified number of pulses (Specified with PULS(886).) Number of pulses specified with PULS(886) does not change. Acceleration/ deceleration rate Accelerates and decelerates at the same fixed rate and stops immediately when the specified number of pulses has been output. (See note.) Stopping pulse output To stop pulse output. (Number of pulses setting is not preserved.) Immediate stop ACC(888) can be executed during positioning to change the acceleration/deceleration rate and target frequency. The target position (specified number of pulses) is not changed. PULS(886) ↓ ACC(888) or SPED(885) (Independent) ↓ ACC(888) (Independent) ACC(888) (Independent) PULS(886) ↓ ACC(888) (Independent) ↓ Time Execution of ACC(888) 2-334 ACC(888) (Independent) ↓ Pulse output is stopped immediately and the remaining number of output pulses is cleared. Present frequency ↓ PLS2(887) ACC(888) (independent mode) executed again to change the target frequency. (The target position is not changed, but the acceleration/deceleration rate is changed.) Pulse frequency PULS(886) Note The target position (specified number of pulses) cannot be changed during positioning. Time Execution of ACC(888) (independent mode) Procedure/ instruction Description INI(880) Execution of INI(880) CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Operation To stop pulse output smoothly. (Number of pulses setting is not preserved.) Application Frequency changes Decelerating to a stop Pulse frequency Present frequency Deceleration rate Target frequency = 0 Execution of PLS2(887) Procedure/ instruction Description Time Execution of ACC(888) Decelerates the pulse output to a stop. PULS(886) Note If ACC(888) started the operation, the original acceleration/deceleration rate will remain in effect. If SPED(885) started the operation, the acceleration / deceleration rate will be invalid and the pulse output will stop immediately. ACC(888) or SPED(885) (Independent) ↓ ↓ ACC(888) (Independent, independent, target frequency of 0) PLS2(887) 2 ↓ Note Triangular Control If the specified number of pulses is less than the number required to reach the target frequency and return to zero, the function will automatically reduce the acceleration/deceleration time and perform triangular control (acceleration and deceleration only.) An error will not occur. Pulse frequency Specified number of pulses (Specified with PULS(886).) Time Execution of ACC(888) Sample program When CIO 0.00 turns ON in the following programming example, ACC(888) starts pulse output from pulse output 0 in continuous mode in the clockwise direction using the pulse + direction method. Pulse output is accelerated at a rate of 20 Hz every 4 ms until the target frequency of 500 Hz is reached. When CIO 0.01 turns ON, ACC(888) changes to an acceleration rate of 10 Hz every 4 ms until the target frequency of 1,000 Hz is reached. 0.00 @ACC #0000 #0100 D100 Pulse output: 0 Pulse output method: Pulse + direction output Direction: CW in continuous mode 0.01 @ACC #0000 #0100 D105 Pulse output: 0 Pulse output method: Pulse + direction output Direction: CW in continuous mode D100 0014 D101 01F4 D102 0000 D105 000A D106 03E8 D107 0000 Acceleration/deceleration rate: 20 Hz Target frequency: 500 Hz Acceleration/deceleration rate: 10 Hz Target frequency: 1,000 Hz Pulse frequency Target frequency 1000 Hz 10 Hz/4 ms 500 Hz 20 Hz/4 ms Time ACC(888) executed. ACC(888) executed. CP1E CPU Unit Instructions Reference Manual(W483) 2-335 ACC ACC(888) (Independent, target frequency of 0) Target frequency High-speed Counter/Pulse Output Instructions Stopping pulse output, continued Purpose 2 Instructions ORG Instruction Mnemonic ORIGIN SEARCH ORG Variations Function code @ORG 889 Function ORG(889) performs an origin search or origin return operation. ORG ORG(889) Symbol P P: Port specifier C C: Control data Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size P Port specifier --- 1 C Control data --- 1 P: Port Specifier P Port 0000 hex Pulse output 0 0001 hex Pulse output 1 C: Control Data 15 12 11 87 4 3 0 C Always 0 hex. Always 0 hex. Pulse output method 1 hex: Pulse + direction Mode 0 hex: Origin search 1 hex: Origin return  Operand Specifications Word addresses Indirect DM addresses Area P,C 2-336 CIO WR HR AR T C DM @DM *DM --- --- --- --- --- --- --- --- --- Constants CF Pulse bits TR bits OK --- --- --- CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Flags Name Label P_ER Operation • ON if the specified range for P or C is exceeded. • ON if ORG(889) is specified for a port during pulse output for SPED(885), ACC(888), or PLS2(887). • ON if ORG(889) is executed in an interrupt task when an instruction controlling pulse output is being executed in a cyclic task. • ON if the origin search or origin return parameters set in the PLC Setup are not within range. • ON if the Origin Search High Speed is less than or equal to the Origin Search Proximity Speed or the Origin Search Proximity Speed is less than or equal to the Origin Search Initial Speed. • ON if an origin return operation is attempted when the origin has not been established. • OFF in all other cases. High-speed Counter/Pulse Output Instructions Error Flag Function ORG(889) performs an origin search or origin return operation for the port specified in P using the method specified in C. Origin search ORG The following parameters must be set in the PLC Setup before ORG(889) can be executed. Origin return • Origin Search Function Enable/Disable • Origin Search/Return Initial Speed • Origin Search Operating Mode • Origin Return Target Speed • Origin Search Operation Setting • Origin Return Acceleration Rate • Origin Detection Method • Origin Return Deceleration Rate • Origin Search Direction Setting • Origin Search/Return Initial Speed • Origin Search High Speed • Origin Search Proximity Speed • Origin Compensation • Origin Search Acceleration Rate • Origin Search Deceleration Rate • Limit Input Signal Type • Origin Proximity Input Signal Type • Origin Input Signal Type • Positioning Monitor Time An origin search or origin return is started each time ORG(889) is executed. It is thus normally sufficient to use the differentiated version (@ORG(889)) of the instruction or an execution condition that is turned ON only for one scan. Note ORG instruction can be used only with transistor output type of CP1E N/NA-type CPU Unit. In case of transistor output type of CP1E E-type CPU Unit or relay output type, NOP processing is applied.  Origin Search (Bits 12 to 15 of C = 0 hex) ORG(889) starts outputting pulses using the specified method at the Origin Search Initial Speed (1 in diagram). Pulse output is accelerated to the Origin Search High Speed using the Origin Search Acceleration Rate (2 in diagram). Pulse output is then continued at constant speed until the Origin Proximity Input Signal turns ON (3 in diagram), from which point pulse output is decelerated to the Origin Search Proximity Speed using the Origin Search Deceleration Rate (4 in diagram). Pulses are then output at constant speed until the Origin Input Signal turns ON (5 in diagram). Origin Proximity Input Signal Origin Input Signal Pulse frequency Origin search high speed Origin search deceleration rate Origin search acceleration rate Origin search proximity speed Origin search initial speed ORG(889) executed. Time Stop Pulse output is stopped when the Origin Input Signal turns ON (6 in diagram). CP1E CPU Unit Instructions Reference Manual(W483) 2 2-337 2 Instructions When the origin search operation has been completed, the Error Counter Reset Output will be turned ON. The above operation, however, depends on the operating mode, origin detection method, and other parameters.  Origin Return (Bits 12 to 15 of C = 1 hex) ORG(889) starts outputting pulses using the specified method at the Origin Return Initial Speed (1 in diagram). Pulse frequency Pulse output is accelerated to the Origin Return Target Speed using the Origin Return Acceleration Rate (2 in diagram) and pulse output is continued at constant speed (3 in diagram). Origin return target speed Origin return deceleration rate Origin return acceleration rate Origin return initial speed Time The deceleration point is calculated from the number of pulses remaining to the origin and the deceleration rate and when that point is reached, the pulse output is decelerated (4 in diagram) at the Origin Return Deceleration Rate until the Origin Return Start Speed is reached, at which point pulse output is stopped at the origin (5 in diagram). Stop ORG(889) executed. Sample program When CIO 0.00 turns ON in the following programming example, ORG(889) starts an origin return operation for pulse output 0 by outputting pulses using the pulse + direction method. According to the PLC Setup, the initial speed is 100 pps, the target speed is 200 pps, and the acceleration and deceleration rates are 50 Hz/4 ms. 0.00 Speed @ORG #0000 Pulse output 0 200 pps #1100 Origin return, pulse + direction output method 100 pps Time ORG(889) executed. Output stopped. The PLC Setup parameters are as follows: Parameter 2-338 Setting Pulse Output 0 Starting Speed for Origin Search and Origin Return 0000 0064 hex: 100 pps Pulse Output 0 Origin Return Target Speed 0000 00C8 hex: 200 pps Pulse Output 0 Origin Return Acceleration Rate 0032 hex: 50 hex/4 ms Pulse Output 0 Origin Return Deceleration Rate 0032 hex: 50 hex/4 ms CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions PWM Mnemonic PULSE WITH VARIABLE DUTY FACTOR PWM Variations @PWM Function code Function 891 PWM(891) is used to output pulses with the specified duty factor from the specified port. PWM PWM Symbol P P: Port specifier F F: Frequency D D: Duty factor 2 Area Step program areas Subroutines Interrupt tasks Usage OK OK OK PWM Applicable Program Areas Operands Operand Description Data type Size P Port specifier --- 1 F Frequency --- 1 D Duty factor --- 1 P: Port Specifier P Port 1000 hex PWM output 0 (duty factor: in increments of 1%, frequency 0.1 Hz) 1100 hex PWM output 0 (duty factor: in increments of 1%, frequency 1 Hz) F: Frequency F specifies the frequency of the PWM output between 2.0 and 6,553.5 Hz (0.1 Hz units, 0014 to FFFF hex), or between 2 and 32,000 Hz (2 Hz units, 0002 to 7D00 hex). D: Duty Factor • 0.0% to 100.0% (0.1% units, 0000 to 03E8 hex) D specifies the duty factor of the PWM output, i.e., the percentage of time that the output is ON. CP1E CPU Unit Instructions Reference Manual(W483) High-speed Counter/Pulse Output Instructions Instruction 2-339 2 Instructions  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM Constants CF Pulse bits TR bits OK --- --- --- *DM P --- --- --- --- --- --- --- --- --- F, D OK OK OK OK OK OK OK OK OK Flags Name Label Error Flag P_ER Operation • ON if the specified range for P, F, or D is exceeded. • ON if PWM are being output using ORG(889) for the specified port. • ON if PWM(891) is executed in an interrupt task when an instruction controlling PWM output is being executed in a cyclic task. • OFF in all other cases. Function PWM(891) outputs the frequency specified in F at the duty factor specified in D from the port specified in P. PWM(891) can be executed during duty-factor PWM output to change the duty factor without stopping PWM output. Any attempts to change the frequency will be ignored. PWM output is started each time PWM(891) is executed. It is thus normally sufficient to use the differentiated version (@PWM(891)) of the instruction or an execution condition that is turned ON only for one scan. The PWM output will continue either until INI(880) is executed to stop it (C = 0003 hex: stop PWM output) or until the CPU Unit is switched to PROGRAM mode. Note PWM instruction can be used only with transistor output type of CP1E N/NA-type CPU Unit. In case of transistor output type of CP1E E-type CPU Unit or relay output type, NOP processing is applied. Sample program When CIO 0.00 turns ON in the following programming example, PWM(891) starts PWM output from PWM output 0 at 200 Hz with a duty factor of 50%. When CIO 0.01 turns ON, the duty factor is changed to 25%. 0.00 Duty factor: 50% Duty factor: 25% @PWM #1000 PWM output 0 #07D0 Frequency: 200.0 Hz &500 Duty factor: 50% CIO 0.00 ON CIO 0.01 ON 0.01 @PWM #1000 PWM output 0 #07D0 Frequency: 200.0 Hz &250 2-340 Duty factor: 25% CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Step Instructions Instruction Operation SNXT(009): STEP START Step Instructions In CP1E series PLCs, STEP(008)/SNXT(009) can be used together to create step programs. Diagram Controls progression to the next step of the program. Step Ladder section start instruction Equivalent to STEP(008): STEP DEFINE Indicates the start of a step. Repeats the same step program until the conditions for progression to the next step are established. Step Ladder section start instruction 2 Equivalent to Step a Corresponds SNXT a Starts the step programming area A a turns ON STEP Proceeds to the next step A Process A Process A repeated until b turns ON. Process A b SNXT b b turns ON B STEP B Process B Process B repeated until c turns ON. Process B c SNXT c C c turns ON STEP C Process C Process C repeated until d turns ON. Process C d SNXT d D Proceeds to the end of the ladder step programming area d turns ON End STEP Step programming area completed Note Work bits are used as the control bits for A, B, C and D. CP1E CPU Unit Instructions Reference Manual(W483) 2-341 2 Instructions SNXT/STEP Instruction Mnemonic Variations Function code Function STEP START SNXT --- 009 SNXT(009) is used to control progression of step execution in the step program area. STEP DEFINE STEP --- 008 STEP(008) is used to define the beginning and the end of the step program area. SNXT STEP When defining the beginning of a step, a control bit is specified as follows: SNXT(009) STEP(008) B: Bit B Symbol B: Bit B When defining the end of a step, a control bit is not specified as follows: STEP(008) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK Not allowed Not allowed Operands Operand Description B Data type Size --- 1 Bit  Operand Specifications Word addresses Indirect DM addresses Area B CIO WR HR AR T C DM @DM *DM --- OK --- --- --- --- --- --- --- Constants CF Pulse bits TR bits --- --- --- --- Flags Operation Name Label SNXT Error Flag P_ER STEP • ON when the specified bit B is not in the WR area. • ON when the specified bit B is not in the WR area. • ON when SNXT(009) is used in an interrupt program. • ON when STEP(008) is used in an interrupt program. • OFF in all other cases. • OFF in all other cases. Function  SNXT(009) SNXT(009) is used in the following three ways: 1.To start step programming execution. 2. To proceed to the next step control bit. 3. To end step programming execution. The step program area is from the first STEP(008) instruction (which always takes a control bit) to the last STEP(008) instruction (which never takes a control bit). Starting Step Execution SNXT(009) is placed at the beginning of the step program area to start step execution. It turns ON the control bit specified for B for the next STEP(008) and proceeds to step B (all instructions after STEP(008) B). A differentiated execution condition must be used for the SNXT(009) instruction that starts step programming area execution, or step execution will last for only one cycle. 2-342 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Proceeding to the Next Step When SNXT(009) occurs in the middle of the step program area, it is used to proceed to the next step. It turns OFF the previous control bit and turns ON the next control bit B, for the next step, thereby starting step B (all instructions after STEP(008) B). When SNXT(009) is placed at the very end of the step program area, it ends step execution and turns OFF the previous control bit. The control bit specified for B is a dummy bit. This bit will however be turned ON, so be sure to select a bit that will not cause problems.  STEP(008) STEP(008) functions in following 2 ways, depending on its position and whether or not a control bit has been specified. 1. Starts a specific step. 2. Ends the step program area (i.e., step execution). STEP(008) is placed at the beginning of each step with an operand, B, that serves as the control bit for the step. The control bit B will be turned ON by SNXT(009) and the instruction in the step will be executed from the one immediately following STEP(008). A200.12 (Step Flag) will also turn ON when execution of a step begins. After the first cycle, step execution will continue until the conditions for changing the step are established, i.e., until the SNXT(009) instruction turns ON the control bit in the next STEP(008). When SNXT (009) turns ON the control bit for a step, the control bit B of the current instruction will be reset (turned OFF) and the step controlled by bit B will become interlocked. Handling of outputs and instructions in a step will change according to the ON/OFF status of the control bit B. (The status of the control bit is controlled by SNXT(009)). When control bit B is turned OFF, the instructions in the step are reset and are interlocked. Refer to the following tables. Control bit status Handling ON Instructions in the step are executed normally. ON→OFF Bits and instructions in the step are interlocked as shown in the next table. OFF All instructions in the step are processed as NOPs. Interlock Status (IL) Instruction output Status Bits specified for OUT, OUT NOT TIM, TIMX(551), TIMH(015), TIMHX(551), TMHH(540), TIMHHX(552), TIML(542), and TIMLX(553) Bits or words specified for other instructions (see note) All OFF PV 0000 hex (reset) Completion Flag OFF (reset) Holds the previous status (but the instructions are not executed) Note Indicates all other instructions, such as TTIM(087), TTIMX(555), SET, REST, CNT, CNTX(546), CNTR(012), CNTRX(548), SFT(010), and KEEP(011). The STEP(008) instruction must be placed at the beginning of each step. STEP(008) is placed at the beginning of a step area to define the start of the step. Ending the Step Program Area STEP(008) is placed at the end of the step program area without an operand to define the end of step programming. When the control bit preceding a SNXT(009) instruction is turned OFF, step execute is stopped by SNXT(009). CP1E CPU Unit Instructions Reference Manual(W483) 2-343 2 SNXT/STEP Starting a Step Step Instructions Ending the Step Programming Area 2 Instructions Hint A200.12 (Step Flag) is turned ON for one cycle when STEP(008) is executed. This flag can be used to conduct initialization once the step execution has started. 0.00 Start SNXT W0.00 STEP W0.00 A200.12 W0.00 1 cycle 0.01 CNT A200.12 0001 #0003 Related Bits Name Step Flag Address A200.12 Details ON for one cycle when a step program is started using STEP(008). Can be used to reset timers and perform other processing when starting a new step. c SNXT a STEP Step a starts when C turns ON a A executed A d SNXT When d turns ON, b starts (A is interlocked) b STEP b B executed B e SNXT e turns ON (B is interlocked) (Dummy) STEP Normal ladder program End of step programming area Returns to normal ladder program Precaution • The control bit, B, must be in the Work Area for STEP(008)/SNXT(009). • A control bit for STEP(008)/SNXT(009) cannot be use anywhere else in the ladder diagram. If the same bit is used twice, as duplication bit error will occur. • If SBS(091) is used to call a subroutine from within a step, the subroutine outputs and instructions will not be interlocked when the control bit turns OFF. • SNXT(009) will be executed only once, i.e., on the rising edge of the execution condition. • Input SNXT(009) at the end of the step program area and make sure that the control bit is a dummy bit in the Work Area. If a control bit for a step is used in the last SNXT(009) in the step program area, the corresponding step will be started when SNXT(009) is executed. 2-344 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • STEP(008) and SNXT(009) cannot be used inside of subroutines, interrupt programs, or block programs. • Be sure that two steps are not executed during the same cycle. • The instructions that cannot be used within step programs are listed in the following table. Mnemonic Sequence Control Instructions Subroutine Instructions Name END(001) END IL(002) INTERLOCK ILC(003) INTERLOCK CLEAR JMP(004) JUMP JME(005) JUMP END CJP(510) CONDITIONAL JUMP SBN(092) SUBROUTINE ENTRY RET(093) SUBROUTINE RETURN Step Instructions Function 2 SNXT/STEP Sample program 0.00 SNXT CIO 0.00 turns ON, step W0.00 starts W0.00 STEP Step W0.00 starts from the next instruction W0.00 Step W0.00 Step (A) ladder program SNXT W0.01 STEP W0.01 End of step programming area 0.01 Step (B) ladder program W0.00 turns OFF, W0.01 turns ON and step W0.01 starts Step W0.01 starts from the next instruction Step W0.01 0.02 SNXT W0.01 turns OFF and dummy bit W30.0 turns ON W30.0 STEP End of step programming area Normal ladder program CP1E CPU Unit Instructions Reference Manual(W483) 2-345 2 Instructions (1) Sequential Control 0.01 SNXT 0.01 (Step (A) starting condition) W0.00 STEP Step (A) W0.00 W0.00 Step W0.00 (A) 0.02 (Step (A) → Step (B) transition condition) Step (A) ladder program Step (B) W0.01 0.02 SNXT 0.03 (Step (B) → Step (C) transition condition) W0.01 STEP Step (C) W0.02 W0.01 0.04 (Step (C) reset conditions) Step (B) ladder program Step W0.01 (B) End 0.03 SNXT W0.02 STEP W0.02 Step (C) ladder program Step W0.02 (C) 0.04 SNXT W30.0 STEP 2-346 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions (2) Branching Control 0.01 0.02 SNXT 0.02 (Step (B) starting condition) 0.01 (Step (A) starting condition) W0.00 0.02 Step (B) W0.01 0.03 (Step (A) → Step (C) transition condition) 0.01 Step Instructions Step (A) W0.00 SNXT W0.01 0.04 (Step (B) → Step (C) transition condition) STEP W0.00 Step (C) W0.02 Step (A) ladder program 0.05 (Step (C) reset conditions) Step W0.00 (A) 2 0.03 End SNXT SNXT/STEP W0.02 STEP W0.01 Step (B) ladder program Step W0.01 (B) 0.04 SNXT W0.02 STEP W0.02 Step (C) ladder program Step W0.02 (C) 0.05 SNXT W30.0 STEP  Additional Information: • In the above example, where SNXT(009) is executed for W0.02, the branching moves onto the next steps even though the same control bit is used twice. This is not picked up as an error in the program check using the CX-Programmer. A duplicate bit error will only occur in a step ladder program only when a control bit in a step instructions is also used in the normal ladder diagram. • The above programming is used when steps A and B cannot be executed simultaneously. For simultaneous execution of A and B, delete the execution conditions illustrated below. 0.02 0.01 CP1E CPU Unit Instructions Reference Manual(W483) 2-347 2 Instructions (3) Parallel Control 0.01 SNXT 0.01 (Step (A), (C) simultaneous starting condition) Step (A) W0.00 W0.00 Step (C) W0.02 SNXT W0.02 0.02 (Step (A) → Step (B) transition condition) 0.03 (Step (C) → Step (D) transition condition) STEP W0.00 Step (B) W0.01 Step (D) W0.02 Step (A) ladder program 0.04 (When both Step (B) and Step (D) are complete, moves to Step (E) Step W0.00 (A) 0.02 SNXT Step (E) W0.04 W0.01 0.05 (Step (C) reset conditions) STEP W0.01 End Step (B) ladder program Step W0.01 (B) W0.03 200.03 0.04 SNXT W0.04 STEP W0.02 Step (C) ladder program Step W0.02 (C) 0.03 SNXT W0.03 STEP W0.03 Step (D) ladder program Step W0.03 (D) STEP W0.04 Step (E) ladder program Step W0.04 (E) 0.05 SNXT W30.0 STEP 2-348 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Application Examples (1) Sequential Execution Robot hand Solenoid 1 SW 1 SW 4 SW 2 SW 3 Step Instructions Solenoid 2 Photomicrosensor 2 Conveyor belt 2 Process A: Loading Process B: Part installation SNXT/STEP Conveyor belt 1 Conveyor belt 3 Process C: Inspection/Unloading 0.01(SW1) SNXT 0.01 (SW1) Process A started. W0.00 Loading Process A STEP W0.00 0.02 (SW2) Part Installation Process B 0.03 (SW3) Programming for process A 0.02(SW2) SNXT Inspection/Unloading Process C W0.01 Process A reset. Process B started. STEP 0.04 (SW4) W0.01 End Programming for process B Explanation of operation (1) SW1 ON: Solenoid 1 operates Process A Conveyor 1 operates (2) SW2 ON stops the previous process Robot hand operates Process B Conveyor 2 operates (3) SW3 ON stops the previous process Photo microsensor operates (for part inspection) Conveyor 3 operates Process C Solenoid 2 operates (removal of defective items) (4) SW4 ON stops the previous process 0.03(SW3) SNXT W0.02 STEP W0.02 Programming for process C 0.01(SW1) Additional Information When another process is started from within a process (when an SNXT instruction turns ON), all outputs of the current process are turned OFF within that cycle. CP1E CPU Unit Instructions Reference Manual(W483) Process B reset. Process C started. SNXT Process C reset. W30.0 STEP 2-349 2 Instructions (2) Branching Execution SW C1 SW D SW A1 Guide Printer SW A2 SW C2 Process A Conveyer A Process B Conveyer B SW B2 SW B1 Weight scale Process C 0.01 (SW A1) 0.02 (SW B1) SNXT 0.02(SW B1) 0.01(SW A1) Process A 0.01 (SW A1) 0.02 (SW B1) Process B W0.00 SNXT Process A started. W0.01 0.03(SW A2) 0.04(SW B2) STEP Process C W0.00 0.05(SW D) Programming for process A End 0.03(SW A2) SNXT Explanation of operation Products are sorted by the guides by weight. (1) SWA1 ON: Conveyor (A) operates Process A Machine (A) operates (2) SWB1 ON: Conveyor (B) operates Process B Machine (B) operates (3) SWA2 ON stops process A Printing machine operates (down) Process C UP by SWC2 ON (4) SWB2 ON stops process B Printing machine operates (down) Process C UP by SWC2 ON (5) SWD ON stops the printing machine W0.02 Process A reset. Process C started. STEP W0.01 Programming for process B 0.04(SW B2) SNXT W0.02 Process B reset. Process C started. STEP W0.02 Programming for process C 0.05(SW D) SNXT Process C reset. W30.0 STEP 2-350 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions (3) Parallel Execution SW1 Process A SW3 Conveyer B SW5 SW7 Conveyer A Process B SW2 Process C Conveyer C SW4 Conveyer D Step Instructions Process E Process D Conveyer E SW6 0.01(SW1, SW2) SNXT 0.01(SW 1 and SW2 both ON) W0.00 Process C started. SNXT Process C W0.02 0.03(SW4) 0.02(SW3) STEP W0.00 Process B Process D Programming for process A 0.04(SW5 and SW6 both ON) 0.02(SW3) SNXT W0.01 Process E Process A reset. Process B started. STEP 0.05(SW7) W0.01 End Explanation of operation (1) SW1, SW2 ON: Conveyor (A) operates Work (A) operates Conveyor (C) operates Work (C) operates (2) SW3 ON: Process (A) stops Conveyor (B) operates Work (B) operates (3) SW4 ON: Process (C) stops Conveyor (D) operates Work (D) operates (4) SW5, SW6 ON: Process (B) stops Process (D) stops Conveyor (E) operates Work (E) operates (5) SW7 ON: Process (E) stops Programming for process B W0.03 Process A W0.03 Used to turn off process D. 0.04(SW5, SW6) SNXT Process C Process E started. W0.04 STEP W0.02 Process B Programming for process C 0.03(SW4) Process D SNXT W0.03 Process C reset. Process D started. STEP W0.03 Process E Note When processes (B) and (D) are in operation and SW5 and SW6 turn ON, it is judged that processes (B) and (D) are finished. Execution of SNXT W0.04 turns OFF the outputs of process (B) and W0.03 turns OFF. STEP W0.03 judges ON to OFF and turns OFF the outputs of process (D). Additional Information The STEP instruction turns all outputs in its process OFF when ON changes to OFF. CP1E CPU Unit Instructions Reference Manual(W483) Programming for process D STEP W0.04 W0.04 Programming for process E 0.05(SW7) SNXT 2 SNXT/STEP Process A Process A started. Process E reset. W30.0 STEP 2-351 2 Instructions Basic I/O Unit Instructions IORF Instruction Mnemonic I/O REFRESH Function code Variations IORF @IORF 097 Function Refreshes the specified I/O words. IORF IORF(097) Symbol St St: Starting word E E: End word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size St Starting word Description --- Variable E End word --- Variable St: Starting Word CIO 001 to CIO 099, CIO 101 to CIO 199 (CP1W Expansion I/O Unit’s I/O Area) E: End Word CIO 001 to CIO 099, CIO 101 to CIO 199 (CP1W Expansion I/O Unit’s I/O Area)  Operand Specifications Word addresses Indirect DM addresses Area St, E CIO WR HR AR T C DM @DM *DM OK --- --- --- --- --- --- --- --- Constants CF Pulse bits TR bits --- --- --- --- Flags Name Error Flag Label P_ER Operation • ON if St is greater than E. • ON if St and E are in different memory areas. • OFF in all other cases. 2-352 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Units Refreshed by IORF(097) Unit type CH CPU Unit with 60 I/O Points NA-type CPU Unit Refreshable by IORF(097) CP1E CPU Unit built-in I/O: 0CH, 1CH, 100CH and 101CH No CP1W Expansion I/O Unit: 2CH to 99CH, 102CH to 199CH Yes CP1W Expansion Unit: 2CH to 99CH, 102CH to 199CH Yes CP1E CPU Unit built-in I/O: 0CH, 1CH, 2CH, 100CH, 101CH and 102CH No CP1W Expansion I/O Unit: 3CH to 99CH, 103CH to 199CH Yes CP1W Expansion Unit: 3CH to 99CH, 103CH to 199CH Yes CP1E CPU Unit built-in I/O: 0CH and 100CH No CP1E CPU Unit built-in analog: 90CH, 91CH and 190CH Yes CP1W Expansion I/O Unit: 1CH to 99CH, 101CH to 199CH Yes CP1W Expansion Unit: 1CH to 99CH, 101CH to 199CH Yes Basic I/O Unit Instructions CPU Unit with 30 or 40 I/O Points 2 Note CP1E CPU Unit built-in I/O area cannot be refreshed with IORF(097). CP1E CPU Unit built-in I/O area can be refreshed with immediate refreshing specifications (!). IORF Function IORF(097) refreshes the I/O words between St and E, inclusively. IORF(097) is used to refresh words allocated to CP1W Expansion (I/O) Units. For 30 or 40 I/O Points, Expansion (I/O) Units are allocated words between CIO 002 and CIO 099, CIO102 and CIO199. For 60 I/O Points, Expansion (I/O) Units are allocated words between CIO 003 and CIO 099, CIO103 and CIO199. For NA20 I/O Points, Expansion (I/O) Units are allocated words between CIO 001 and CIO 099, CIO101 and CIO199. I/O bit area St CP1W Expansion Units, CP1W Expansion I/O Units I/O refreshing E Precaution • IORF(097) can be used in an interrupt task, which allows high-speed processing of specific I/O data with an interrupt. If IORF(097) is used in an interrupt task, always disable cyclic refreshing of the specified Special I/O Unit by turning ON the corresponding Special I/O Unit Cyclic Refreshing Disable Bit in the PLC Setup. • If words for which there is no Unit mounted exist between St and E, nothing will be done for those words and only the words allocated to Units will be refreshed. • The I/O refreshing initiated by IORF(097) will be stopped midway if an I/O bus error occurs during I/O refreshing. Sample program Refreshing Words in the I/O Bit Area When CIO 0.00 turns ON in the following example, CIO 2 to CIO 4 (36 inputs) are refreshed (1) and then after the required processing is performed (2), CIO 104 (8 outputs) is refreshed (3). 0.00 IORF St 2 E 4 (1) Processing (2) IORF (3) CPM1A Expansion I/O Units 15 St 104 E 104 0 St CIO 2 CIO 3 E CIO 4 St CIO 104 E CP1E CPU Unit Instructions Reference Manual(W483) CIO 2 and CIO 3 CIO 4 I/O refreshing 15 0 CIO 102 and CIO 103 CIO 104 2-353 2 Instructions SDEC Instruction Mnemonic 7-SEGMENT DECODER Function code Variations SDEC @SDEC Function Converts the hexadecimal contents of the designated digit(s) into 8-bit, 7-segment display code and places it into the upper or lower 8-bits of the specified destination words. 078 SDEC SDEC(078) Symbol S S: Source word Di Di: Digit designator D D: First destination word Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size S Source word Description UINT 1 Di Digit designator UINT 1 D First destination word UINT Variable Di: Digit designator 15 12 11 0 Di 87 1/0 43 m 0 n First digit of S to convert (0 to 3) 0: Digit 0 (bits 0 to 3 of S) 1: Digit 1 (bits 4 to 7 of S) 2: Digit 2 (bits 8 to 11 of S) 3: Digit 3 (bits 12 to 15 of S) Number of digits to convert 0 to 3: 1 to 4 digits First half of D to receive converted data 0: Rightmost 8 bits (1st half) 1: Leftmost 8 bits (2nd half) Not used; set to 0.  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S Di CF Pulse bits TR bits --- --- --- --- D OK --- Flags Name Error Flag Label P_ER Operation • ON if settings in Di are not within the specified ranges. • OFF in all other cases. 2-354 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function 15 Di 0 8 7 12 11 4 3 1/0 m n 0 Number of digits m n S S+1 HEX First digit to convert Rightmost 8 bits (0) 7-segment 2 D D+1 D+2 • If more than one digit is specified for conversion in Di, digits are converted in order toward the mostsignificant digit. Digit 0 is the next digit after digit 3. • Results are stored in D in order from the specified portion toward higher-address words. If just one of the bytes in a destination word receives converted data, the other byte is left unchanged. Sample program When CIO 0.00 turns ON in the following example, the contents of the 3 digits beginning with digit 1 in D100 will be converted from hexadecimal data to 7-segment data, and the results will be output to the upper byte of D200 and both bytes of D201. The specifications of the bytes to be converted and the location of the output bytes are made in CIO 100. 0.00 SDEC D100 Di 100 D D200 12 11 15 Di: 100 3 15 S: D100 8 7 0 3 1 2 1 0 12 11 2 4 3 1 8 7 1 4 3 0 F Hexadecimal to 7-segment data conversion (F → 71, 1 → 06, and 2 → 5B) D: D200 D201 CP1E CPU Unit Instructions Reference Manual(W483) 7 5 1 B 0 6 2-355 SDEC Precaution S Basic I/O Unit Instructions SDEC(078) regards the data specified by S as 4-digit hexadecimal data, converts the digits specified in S by Di (first digit and number of digits) to 7-segment data and outputs the results to D in the bits specified in Di. 2 Instructions  7-segment Data The following table shows the data conversions from a hexadecimal digit (4 bits) to 7-segment code (8 bits). Original data Digit 2-356 Converted code (segments) Bits – g f e d c b a Hex 3F 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 06 2 0 0 1 0 0 1 0 1 1 0 1 1 5B 3 0 0 1 1 0 1 0 0 1 1 1 1 4F 4 0 1 0 0 0 1 1 0 0 1 1 0 66 5 0 1 0 1 0 1 1 0 1 1 0 1 6D 6 0 1 1 0 0 1 1 1 1 1 0 1 7 0 1 1 1 0 0 1 0 0 1 1 8 1 0 0 0 0 1 1 1 1 1 9 1 0 0 1 0 1 1 0 1 A 1 0 1 0 0 1 1 1 B 1 0 1 1 0 1 1 C 1 1 0 0 0 0 D 1 1 0 1 0 E 1 1 1 0 F 1 1 1 1 Display Original data LSB 1 a 1 b 7D 1 c 1 27 1 d 1 1 7F 1 e 1 1 1 6F 1 f 0 1 1 1 77 1 g 1 1 1 0 0 7C 1 1 1 0 0 1 39 1 0 1 1 1 1 0 5E 0 1 1 1 1 0 0 1 79 0 1 1 1 0 0 0 1 71 a f b g e c d 0 MSB CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions DSW Mnemonic DIGITAL SWITCH INPUT Variations DSW Function code Function 210 Reads the value set on a external digital switch (or thumbwheel switch) connected to an I/O Unit and stores the 4-digit or 8-digit value in the specified words. --- DSW DSW(210) Symbol I: Input word O O: Output word D D: First result word C1 C1: Number of digits C2 C2: System word 2 DSW I Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Operand Description Data type Size 1 I Input word UINT O Output word UINT 1 D First result word WORD Variable C1 Number of digit UINT 1 C2 System word WORD 1 I: Input Word (Data Line D0 to D3 Inputs) Specify the input word allocated to the Input Unit and connect the digital switch’s D0 to D3 data lines to the Input Unit as shown in the following diagram. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 I Leftmost 4 digits D3 D2 D1 D0 D0 D1 D2 D3 Rightmost 4 digits O: Output Word (CS/RD Control Signal Outputs) Specify the output word allocated to the Output Unit and connect the digital switch’s control signals (CS and RD signals) to the Output Unit as shown in the following diagram. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O One Round Flag RD0 Read signal CP1E CPU Unit Instructions Reference Manual(W483) CS0 CS1 CS2 CS3 Basic I/O Unit Instructions Instruction CS signals 2-357 2 Instructions D: First Result Word Specifies the leading word address where the external digital switch’s set values will be stored. 15 12 11 8 7 4 3 0 Digit 4 Digit 3 Digit 2 Digit 1 12 11 8 7 4 3 0 Digit 8 Digit 7 Digit 6 D 15 D+1 (See note.) Digit 5 Note: Only when C1 = 0001 hex to read 8 digits. C1: Number of Digits Specifies the number of digits that will be read from the external digital switch. Set C1 to 0000 hex to read 4 digits or 0001 hex to read 8 digits. C2: System Word Specifies a work word used by the instruction. This word cannot be used in any other application. 15 0 C2 System word (Cannot be accessed by the user.)  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM I, O, D OK OK OK OK OK OK OK OK OK C1 --- --- --- --- --- --- --- --- C2 OK OK OK OK OK OK OK OK CF Pulse bits TR bits --- --- --- --OK ----- Flags Name Error Flag Label P_ER Operation OFF Function DSW(210) outputs control signals to bits 00 to 04 of O, reads the specified number of digits (either 4digit or 8-digit, specified in C1) of digital switch data line data from I, and stores the result in D and D+1. (If 4 digits are read, the result is stored in D. If 8 digits are read, the result is stored in D and D+1.) DSW(210) reads the 4-digit or 8-digit switch data once every 16 cycles, and then starts over and continues reading the data. The One Round Flag (bit 05 of O) is turned ON once every 16 CPU Unit cycles. 2-358 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  External Connections COM 00 01 02 03 04 05 06 07 08 09 10 11 Basic I/O Unit Instructions Connect the digital switch or thumbwheel switch to Input Unit contacts 0 to 7 and Output Unit contacts 0 to 4, as shown in the following diagram. The following example illustrates connections for an A7B Thumbwheel Switch. 84 21 IN Switch No. 8 CP1W-20EDT Switch No. 7 Switch No. 6 Switch No. 5 Switch No. 4 Switch No. 3 Switch No. 2 2 Switch No. 1 COM 00 COM 01 COM 02 03 COM 04 05 06 07 A7B Thumbwheel Switch  Timing Chart I Four digits: 00 to 03 10 0 Eight digits: 00 to 03, 04 to 07 10 1 10 2 10 3 Input data Leftmost 4 digits Rightmost 4 digits O D+1 D 00 When only 4 digits are read, only word D is used. 01 CS signals 02 03 04 RD (read) signal 05 One Round Flag 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 16 cycles to complete one round of execution CP1E CPU Unit Instructions Reference Manual(W483) 2-359 DSW OUT 2 Instructions Precaution • Do not read or write the system word (C2) from any other instruction. DSW(210) will not operate correctly if the system word is accessed by another instruction. The system word is not initialized by DSW(210) in the first cycle when program execution starts. If DSW(210) is being used from the first cycle, clear the system word from the program. • DSW(210) will not operate correctly if I/O refreshing is not performed with the Input Unit and Output Unit connected to the digital switch or thumbwheel switch after DSW(210) is executed. Consequently, set the input time constant for the Input Units used for the data line input word to a value that is shorter than the cycle time. • DSW(210) reads the 4-digit or 8-digit data once in 16 cycles, and then starts over and reads the data again in the next 16 cycles. • When executed, DSW(210) begins reading the switch data from the first of the sixteen cycles, regardless of the point at which the last instruction was stopped. Sample program In this example, DSW(210) is used to read an 8-digit number from a digital switch and outputs the resulting value constantly to D0 and D3. The digital switch is connected through CIO 3 and CIO 104. D1000 is used as the system word. P_On DSW(210) Always ON Flag 2-360 I 3 O 104 D D0 C1 #0001 C2 D1000 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions MTR Mnemonic MATRIX INPUT Variations MTR Function code Function 213 Inputs up to 64 signals from an 8 × 8 matrix connected to an Input Unit and an Output Unit (using 8 input points and 8 output points) and stores that 64-bit data in the 4 destination words. --- MTR MTR(213) I: Input word O O: Output word D D: First destination word C C: System word 2 MTR I Symbol Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Operand I Description Input word Data type Size UINT 1 1 O Output word UINT D First destination word ULINT 4 C System word WORD 1 I: Input Word Specify the input word allocated to the Input Unit and connect the 8 input signal lines to the Input Unit as shown in the following diagram. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 I 0 1 2 3 4 5 6 7 Bits 00 to 07 correspond to Input Unit inputs 0 to 7. O: Output Word (Selection Signal Outputs) Specify the output word allocated to the Output Unit and connect the 8 selection signals to the Output Unit as shown in the following diagram. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O 0 1 2 3 4 5 6 7 CP1E CPU Unit Instructions Reference Manual(W483) Basic I/O Unit Instructions Instruction Bits 00 to 07 correspond to Output Unit outputs 0 to 7. 2-361 2 Instructions D: First Register Word Specifies the leading word address of the 4 words that contain the data from the 8 × 8 matrix. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D 15 14 13 12 11 10 9 8 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 Bits 00 to 15 correspond to matrix elements 0 to 15. 0 1 2 3 4 5 6 7 Bits 00 to 15 correspond to matrix elements 16 to 31. 0 1 2 3 4 5 6 7 Bits 00 to 15 correspond to matrix elements 32 to 47. 0 1 2 3 4 5 6 7 Bits 00 to 15 correspond to matrix elements 48 to 63. 0 D+1 15 14 13 12 11 10 9 8 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D+2 15 14 13 12 11 10 9 8 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D+3 15 14 13 12 11 10 9 8 C: System Word Specifies a work word used by the instruction. This word cannot be used in any other application. 15 0 C System word (Cannot be accessed by the user.)  Operand Specifications Word addresses Indirect DM addresses Area I, O, D, C 2-362 CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Flags Name Label Operation P_ER OFF Function MTR(213) outputs the selection signals to bits 00 to 07 of O, reads the data in order from bits 00 to 07 of I, and stores the 64 bits of data in the 4 words D through D+3. MTR(213) reads the status of the 64bit matrix every 24 CPU Unit cycles. The One Round Flag (bit 08 of O) is turned ON for one cycle in every 24 cycles after each of the selection signals has been turned ON.  External Connections Connect the hexadecimal keypad to Input Unit contacts 0 to 7 and Output Unit contacts 0 to 7, as shown in the following diagram. Basic I/O Unit Instructions Error Flag 2 MTR 11 10 09 08 07 06 05 04 03 02 01 00 COM 1st row IN CP1W-20EDT 7th row 07 06 05 04 COM 03 02 COM 01 COM 00 COM OUT 8th row  Timing Chart 00 01 02 03 04 05 06 07 00 : 32 : 64 00 : 32 : 64 08 Selection signals Matrix status Bits indicating status of inputs (Bit ON when input is ON) One Round Flag One round completed in 24 cycles CP1E CPU Unit Instructions Reference Manual(W483) 2-363 2 Instructions Precaution • Do not read or write the system word (C) from any other instruction. MTR(213) will not operate correctly if the system word is accessed by another instruction. The system word is not initialized by MTR(213) in the first cycle when program execution starts. If MTR(213) is being used from the first cycle, clear the system word from the program. • MTR(213) will not operate correctly if I/O refreshing is not performed with the Input Unit and Output Unit connected to the external matrix after MTR(213) is executed. Consequently, set the input time constant for the Input Units used for the data line input word to a value that is shorter than the cycle time. • When executed, MTR(213) begins reading the matrix status from the beginning of the matrix, regardless of the point at which the last instruction was stopped. Sample program In this example, MTR(213) reads the 64 bits of data from the 8 × 8 matrix and stores the data in W0 to W3. The 8 × 8 matrix is connected through CIO 3 and CIO 104. D1000 is used as the system word. P_On MTR(213) Always ON Flag I O 2-364 3 104 D W0 C D1000 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions 7SEG Mnemonic 7-SEGMENT DISPLAY OUTPUT Variations Function code Function --- 214 Converts the source data (either 4-digit or 8-digit BCD) to 7-segment display data, and outputs that data to the specified output word. 7SEG 7SEG Basic I/O Unit Instructions Instruction 7SEG(214) S S: Source word O O: Output word C C: Control data D D: System word 2 Symbol 7SEG Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK Not allowed Operands Operand Description Data type Size WORD Variable Output word UINT 1 Control word #+10 decimal only 1 System word WORD 1 S Source word O C D S: Source Word Specify the first source word containing the data that will be converted to 7-segment display data. 15 12 11 8 7 4 3 Digit 4 Digit 3 Digit 2 12 11 8 7 4 3 Digit 8 Digit 7 Digit 6 0 S 15 Digit 1 0 S+1 Digit 5 O: Output Word (Data and Latch Outputs) Specify the output word allocated to the Output Unit and connect the 7-segment display to the Output Unit as shown in the following diagram. • Converting 4 digits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O One Round Flag Latch outputs LE3 LE2 LE1 LE0 CP1E CPU Unit Instructions Reference Manual(W483) D0 D1 D2 D3 4-digit data output 2-365 2 Instructions • Converting 8 digits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O One Round Flag LE3 LE2 LE1 LE0 Latch outputs D0 D1 D2 D3 D0 D1 D2 D3 Leftmost 4-digit data output Rightmost 4-digit data output C: Control Data The value of C indicates the number of digits of source data and the logic for the Input and Output Units, as shown in the following table. (The logic refers to the transistor output’s NPN or PNP logic.) Source data 4 digits (S) 8 digits (S, S+1) Display’s data input logic Display’s latch input logic C Same as Output Unit Same as Output Unit 0000 Different from Output Unit 0001 Different from Output Unit Same as Output Unit 0002 Different from Output Unit 0003 Same as Output Unit Different from Output Unit Same as Output Unit 0004 Different from Output Unit 0005 Same as Output Unit 0006 Different from Output Unit 0007 D: System Word Specifies a work word used by the instruction. This word cannot be used in any other application. 15 0 D System word (Cannot be accessed by the user.)  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM S, O OK OK OK OK OK OK OK OK OK --- C --- --- --- --- --- --- --- --- --- OK D OK OK OK OK OK OK OK OK OK --- CF Pulse bits TR bits --- --- --- Flags Name Error Flag Label P_ER Operation OFF Function 7SEG(214) reads the source data, converts it to 7-segment display data, and outputs that data (as leftmost 4 digits D0 to D3, rightmost 4 digits D0 to D3, latch output signals LE0 to LE3) to the 7-segment display connected to the output indicated by O. The value of C indicates the number of digits of source data (either 4-digit or 8-digit) and the logic for the Input and Output Units. 7SEG(214) displays the 4-digit or 8-digit data in 12 cycles, and then starts over and continues displaying the data. The One Round Flag (bit 08 of O when converting 4 digits, bit 12 of O when converting 8 digits) is turned ON for one cycle in every 12 cycles after 7SEG(214) has turned ON each of the latch output signals. 2-366 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  External Connections 11 10 09 08 07 06 05 04 03 02 01 00 11 10 09 08 07 06 05 04 03 02 01 00 COM IN@ CH IN@ CH Basic I/O Unit Instructions Connect the 7-segment display to the Output Unit as shown in the following diagram. This example shows an 8-digit display. With a 4-digit display, the data outputs (D0 to D3) would be connected to outputs 0 to 3 and the latch outputs (LE0 to LE3) would be connected to outputs 4 to 7. Output point 12 (for 8-digit display) or output point 8 (for 4-digit display) will be turned ON when one round of data has been output, but it is not necessary to connect them unless required by the application. CP1W-40EDT 2 07 06 05 04 COM 03 02 01 00 COM 07 06 05 04 COM 03 02 OUT@ CH COM 01 COM 00 COM OUT@ CH 7SEG LE3 LE2 LE1 D0 D1 D2 D3 LE0 VDD (+) VSS (0) LE3 LE2 LE1 VDD (+) VSS (0) Rightmost 4 digits Leftmost 4 digits LE0 D0 D1 D2 D3 7-segment display  Timing Chart Bit(s) in O Function Output status (Data and latch logic depends on C) (4 digits, 1 block) Data output 00 to 03 (4 digits, 2 blocks) 00 to 03 04 to 07 Latch output 0 04 08 Latch output 1 05 09 Latch output 2 06 10 Latch output 3 07 11 One Round Flag 08 12 10 0 1 2 3 10 1 4 5 6 7 10 2 10 3 Note 0 to 3: Data output for word S 4 to 7: Data output for word S+1 8 9 10 11 12 1 12 cycles required to complete one round CP1E CPU Unit Instructions Reference Manual(W483) 2-367 2 Instructions Precaution • Do not read or write the system word (D) from any other instruction. 7SEG(214) will not operate correctly if the system word is accessed by another instruction. The system word is not initialized by 7SEG(214) in the first cycle when program execution starts. If 7SEG(214) is being used from the first cycle, clear the system word from the program. • After the 7-segment data is output in 12 cycles, 7SEG(214) starts over and converts the present contents of the source word(s) in the next 12 cycles. • When executed, 7SEG(214) begins on latch output 0 at the beginning of the round, regardless of the point at which the last instruction was stopped. • Even if the connected 7-segment display has fewer than 4 digits or 8 digits in its display, 7SEG(214) will still output 4 digits or 8 digits of data. Sample program In this example, 7SEG(214) converts the 8 digits of BCD data in D100 and D101 and outputs the data through CIO 100. There are 8 digits of data being output and the 7-segment display’s logic is the same as the Output Unit’s logic, so the control data (C) is set to 4. D200 is used as the system word, D. P_On 7SEG(214) Always ON Flag 2-368 S D100 O 100 C 4 D D200 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Serial Communication Instructions Instruction Mnemonic TRANSMIT Function code Variations TXD @TXD Function Outputs the specified number of bytes of data from the CPU Unit’s built-in RS-232C port or the Serial Option Board port. 236 Serial Communication Instructions TXD 2 TXD TXD TXD(236) Symbol S S: First source word C C: Control word N N: Number of bytes 0000 to 0100 hex (0 to 256) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description S First source word Data type Size UINT Variable C Control word UINT 1 N Number of bytes 0000 to 0100 hex (0 to 256) UINT 1 C: Control word 15 12 11 8 7 4 3 0 C Byte order 0: Most significant bytes first 1: Least significant bytes first Always 0 RS and ER signal control 0: No RS and ER signal control 1: RS signal control 2: ER signal control 3: RS and ER signal control Serial port specifier 1: CPU Unit’s RS-232C port 2: Serial Option Board port  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK S CF Pulse bits TR bits --- --- --- --- C, N CP1E CPU Unit Instructions Reference Manual(W483) OK 2-369 2 Instructions Flags Name Label Error Flag P_ER Operation • ON if no-protocol mode is not set in the PLC Setup. • ON if the value of C is not within range. • ON if the value for N is not between 0000 and 0100 hex. • ON if a send is attempted when the Send Ready Flag is OFF. (The Send Ready Flag is A392.05 for the CPU Unit’s RS-232C port, or A392.13 for Serial Option Board port.) • OFF in all other cases. Related Auxiliary Area Words and Bits  CPU Unit’s Built-in RS-232C Port Port CPU Unit’s built-in RS-232C port Address A392.05 Contents ON when data can be sent in the no-protocol mode.  Serial Option Board Port Port Serial Option Board port Address A392.13 Contents ON when data can be sent in the no-protocol mode. Related PLC Setup Settings Function • TXD(236) reads N bytes of data from words S to S+(N÷2)-1 and outputs the raw data in no-protocol mode from the CPU Unit’s built-in RS-232C port or the Serial Option Board port. (The output port is specified with bits 8 to 11 of C.) • The following send-message frame format can be set in the PLC Setup. 1) Start code: None or 00 to FF hex. 2) End code: None, CR+LF, or 00 to FF hex. The data will be sent with any start and/or end codes specified in the PLC Setup. If start and end codes are specified, the codes will be added to the send data (N). In this case, the maximum number of bytes that can be specified for N is 256 bytes. • Data is sent in the order specified in C0 to C3. • Specification of control in C4 to C7 for the RS and ER signals take effect as follows: 1) If RS signal control is specified in C, bit 15 of S will be used as the RS signal. 2) If ER signal control is specified in C, bit 15 of S will be used as the ER signal. 3) If RS and ER signal control is specified in C, bit 15 of S will be used as the RS signal and bit 14 of S will be used as the ER signal. • If 1, 2, or 3 hex is specified for RS and ER signal control in C, TXD(236) will be executed regardless of the status of the Send Ready Flag (A392.05, or A392.13 depending on the port being used). 2-370 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • Up to 259 bytes can be sent, including the send data (N = 256 bytes max.), the start code, and the end code. • Specify the size of the send data, not including the start code and end code, in N. Serial Communication Instructions  Start code / end code settings and send data 15 87 0 S S+1 S+2 N bytes of data is sent in the following order when sending the most significant bytes first is specified: , , , , , No Start or End Code ... 2 N send bytes: 256 max. Only Start Code ST ... ... ED Send bytes before ED: 256 max. Start and End Code ST ... ED Send bytes between ST and ED: 256 max. CR+LF End Code ... TXD Send bytes after ST: 256 max. Only End Code CR LF Send bytes before CR+LF: 256 max. Start and CR+LF End Code ST ... CR LF Send bytes between ST and CR+LF: 256 max. CPU Unit’s built-in RS-232C port or Serial Option Board port Data sent. Hint • When sending data to another device by TXD instruction, the device may require that the data be sent at certain intervals. In that case, a transmission delay time can be set to adjust the transmission intervals. Precautions • TXD(236) can be used only for the CPU Unit’s RS-232C port or the Serial Option Board port. In addition, the port must be set to no-protocol mode. • Data can be sent only when the port’s Send Ready Flag is ON. (The Send Ready Flag is A392.05 for the CPU Unit’s RS-232C port, or A392.13 for Serial Option Board port.) • Nothing will be sent if 0 is specified for N. CP1E CPU Unit Instructions Reference Manual(W483) 2-371 2 Instructions Sample program  Sending Data to a Code Reader This example shows how to send data to the V530-R150V3 2D Code Reader as an example of communicating with an external device. Hardware Configuration Sync Sensor Monitor F150-M05L Power Supply (24 VDC) Console F150-KP Console Cable RS-232C Cable XW2Z-200T (2 m) XW2Z-500T (5 m) V530-R150V3 Programmable Controller SYSMAC CJ1G-CPU@@H CJ1H-CPU@@H CJ1M-CPU@@ Camera F150-SLC20 In this example, the external device is connected to the RS-232C port built into the CPU Unit. First, set the reading conditions for the Code Reader. Communications Settings The communications settings of the Code Reader are given in the following table. These are the default settings. Item Setting Communications mode No-protocol Baud rate 38,400 bps Data bit length 8 bits Parity None Stop bits 1 Start code None End code #000D (CR) Set the PLC communications settings to the same values in the PLC Setup. Only the end code needs to be set. 2-372 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Programming Example 0.01 A392.05 @TXD RS-232C Port Send Ready Flag 0.02 S D10 C D20 N &3 Serial Communication Instructions If CIO 0.01 turns ON while the RS-232C Port Send Ready Flag (A392.05) is ON, three bytes of data starting from the upper byte of D10 are sent without conversion to the Code Reader connected to the CPU Unit’s built-in RS-232C port. These three bytes contain “@GO”, which is the normal read command used as a trigger input to the Code Reader from the RS-232C line. A392.06 2 @RXD RS-232C Port Receive Ready Flag D100 D20 Upper byte 15 Lower byte 12 11 8 7 4 3 0 S: D10 4 0 5 3 D11 4 E 0 0 15 C: D20 12 11 0 TXD RS-232C Port Reception Counter A393 8 7 4 1 3 0 Sent @GL 40 53 4E ED Three bytes 0 0 Byte Order #0: Most significant bytes first RS and ER Signal Control #0: No RS and ER signal control. Serial Port Specifier #1: CPU Unit’s built-in RS-232C port Always #0.  Controlling Signals 0.01 TXD S D300 C D400 N &0 When CIO 0.01 turns ON, the status of bit 15 of D300 is output as the RS signal and the status of bit 14 is output as the ER signal. 15 14 13 12 1 0 0 0 S: D300 Turns OFF ER signal. Turns ON RS signal. 15 C: D400 12 11 0 8 7 1 4 3 3 0 0 Byte Order #0: Most significant bytes first RS and ER Signal Control #3: RS and ER signal control Serial Port Specifier #1: CPU Unit’s built-in RS-232C port Always #0. CP1E CPU Unit Instructions Reference Manual(W483) 2-373 2 Instructions RXD Instruction Mnemonic RECEIVE Variations RXD @RXD Function code Function 235 Reads the specified number of bytes of data from the CPU Unit’s built-in RS-232C port or the Serial Option Board port. RXD RXD(235) Symbol D D: First destination word C C: Control word N N: Number of bytes to store 0000 to 0100 hex (0 to 256 decimal) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Data type Size D First destination word Description UINT Variable C Control word UINT 1 N Number of bytes to store 0000 to 0100 hex (0 to 256 decimal) UINT 1 C: Control Word 15 12 11 8 7 4 3 0 C Byte order 0 Hex: Most significant byte to least significant byte 1 Hex: Lest significant byte to most significant byte CS and DR signal monitoring 0: No CS and DR signal monitoring 1: CS signal monitoring 2: DR signal monitoring 3: CS and DR signal monitoring. Always 0 Serial port specifier 1: CPU Unit’s RS-232C port 2: Serial Option Board port  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK D CF Pulse bits TR bits --- --- --- --- C, N OK Flags Name Error Flag Label P_ER Operation • ON if no-protocol mode is not set in the PLC Setup. • ON if the value of C is not within range. • ON if the value for N is not between 0000 and 0100 hex. • OFF in all other cases. 2-374 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Related Auxiliary Area Words and Bits  Auxiliary Area Flags for CPU Unit’s RS-232C Port Address A392.06 Contents ON when no-protocol reception is completed. Number of Receive Bytes Specified: The flag will turn ON when the specified number of bytes has been received. End Code Specified: The flag will turn ON when the end code is received or when 256 bytes have been received. RS-232C Port Reception Overflow Flag A392.07 ON when more than the expected number of receive bytes has been received. Serial Communication Instructions Name RS-232C Port Reception Completed Flag Number of Receive Bytes Specified: The flag will turn ON when anything is received after reception has been completed and execution of the next RXD(235). End Code Specified: The flag will turn ON when anything is received after the end code has been received and execution of the next RXD(235) or when the 257th byte of data is received before the end code is received. RS-232C Port Reception Counter A393 Counts in hexadecimal the number of bytes received in no-protocol mode (0 to 256 decimal). RXD  Auxiliary Area Flags for Serial Option Board Port Name Serial Option Board port Reception Completed Flag Address A392.14 Contents ON when no-protocol reception is completed. Number of Receive Bytes Specified: The flag will turn ON when the specified number of bytes has been received. End Code Specified: The flag will turn ON when the end code is received or when 256 bytes have been received. Serial Option Board port Reception Overflow Flag A392.15 ON when more than the expected number of receive bytes has been received in noprotocol mode. Number of Receive Bytes Specified: The flag will turn ON when more data is received after reception was completed but before the received data was not read from the buffer with RXD(235). End Code Specified: The flag will turn ON when 257 or more bytes of data are received without an end code. Serial Option Board port Reception Counter A394.00 to A394.15 Counts in hexadecimal the number of bytes received in no-protocol mode (0 to 256 decimal). Related PLC Setup Settings CP1E CPU Unit Instructions Reference Manual(W483) 2 2-375 2 Instructions Function • RXD(235) reads data that has been received in no-protocol mode at the CPU Unit’s built-in RS-232C port or the Serial Option Board port (the port is specified with bits 8 to 11 of C) and stores N bytes of data in words D to D+(N÷2)-1. If N bytes of data has not been received at the port, then only the data that has been received will be stored. • The following receive message frame format can be set in the PLC Setup. 1) Start code: None or 00 to FF hex 2) End code: None, CR+LF, or 00 to FF hex. If no end code is specified, the number of bytes to received is set from 00 to FF hex (1 to 256 decimal; 00 specifies 256 bytes). • Data will be stored in memory in the order specified in C0 to C3. • Cases where the reception completion flag turns ON The Reception Completed Flag (note (a)) will turn ON when the number of bytes specified in the PLC Setup has been received. When the Reception Completed Flag turns ON, the number of bytes in the Reception Counter (note (b)) will have the same value as the number of receive bytes specified in the PLC Setup. If an end code is specified in the PLC Setup, the Reception Completed Flag (note (a)) will turn ON when the end code is received or when 256 bytes of data have been received. If more bytes are received than specified, the Reception Overflow Flag (note (c)) will turn ON. • When RXD(235) is executed, data is stored in memory starting at D, the Reception Completed Flag (note (a)) will turn OFF (even if the Reception Overflow Flag (note (c)) is ON), and the Reception Counter (note (b)) will be cleared to 0. • If the RS-232C Port Restart Bit (note (d)) is turned ON, the Reception Completed Flag (note (a)) will be turned OFF (even if the Reception Overflow Flag is ON), and the Reception Counter (note (b)) will be cleared to 0. • Specification of monitor in bits C4 to C7 for the CS and DR signals takes effect as follows: 1) If CS signal monitoring is specified in C, the status of the CS signal will be stored in bit 15 of D. 2) If DR signal monitoring is specified in C, the status of the DR signal will be stored in bit 15 of D. 3) If CS and DR signal monitoring is specified in C, the status of the CS signal will be stored in bit 15 of D and the status of the DR signal will be stored in bit 14 of D. • If 1, 2, or 3 hex is specified for CS and DR signal control in C, RXD(235) will be executed regardless of the status of the Receive Completed Flag (note (a)). • Receive data will not be stored if CS or DR signal monitoring is specified. • Up to 259 bytes can be received, including the receive data (N = 256 bytes max.), the start code, and the end code. • Specify the size of the receive data, not including the start code and end code, in N. Note Related Auxiliary Area and CIO Area Addresses (a) Reception Completed Flags Built-in RS232C port A392.06 Serial Option Board port: A392.14 (b) Reception Counters Built-in RS232C port A393 Serial Option Board port: A394 (c) Reception Overflow Flags Built-in RS232C port A392.07 Serial Option Board port: A392.15 (d) RS-232C Port Restart Bit 2-376 Built-in RS232C port A526.00 Serial Option Board port: A526.01 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Start Code/End Code Settings and Receive Data No Start or End Code 1 2 3 4 5 6 0... Serial Communication Instructions Receive bytes: Specified in the PC Setup Only Start Code 1 2 3 4 5 6 0... ST Receive bytes after ST: Specified in the PC Setup Only End Code 1 2 3 4 5 6 0... ED Receive bytes before ED: 256 max. Start and End Code 1 2 3 4 5 6 0... ST ED Receive bytes between ST and ED: 256 max. CR+LF End Code 1 2 3 4 5 6 0... CR Receive bytes before CR+LF: 256 max. Start and CR+LF End Code CR 1 2 3 4 5 6 0... RXD ST 2 LF LF Receive bytes between ST and CR+LF: 256 max. Received CPU Unit’s built-in RS-232C port or Serial Option Board port When receiving the most significant bytes first is specified (0): Least signifMost signifiicant bytes cant bytes Bytes 1 2 3 4 N bytes stored in the specified Max: 256 bytes order. 5 15 87 0 D 1 2 D+1 3 4 D+2 5 6 6 When receiving the least significant bytes first is specified (1): Most significant bytes 15 Least significant bytes 87 0 D 1 2 D+1 3 4 D+2 5 6 Hint • When RXD(235) is used to read data that was received at one of the Serial Option Board’s ports , the port’s reception buffer is cleared after RXD(235) is executed. Consequently, RXD(235) can not be executed repeatedly to read a block of data in parts. Precautions • RXD(235) can be used only for the CPU Unit’s RS-232C port or the Serial Option Board port. In addition, the port must be set to no-protocol mode. • Execute this instruction when the reception completion flag (RS-232C incorporated in the CPU unit: A392.06, Serial Option Board: A392.14) is 1 (ON) to receive data (from the reception buffer). • When data is received, the data must be read by an RXD instruction or the next data cannot be received. When the reception completion flag turns ON, read the received data with an RXD instruction before the next reception. • Specify the size of the receive data, not including the start code and end code, in N. • If 0 is specified for N, the Reception Completed Flag and Reception Overflow Flag (note(a)) will be turned OFF, the Reception Counter (note(b)) will be cleared to 0, and nothing will be stored in memory. CP1E CPU Unit Instructions Reference Manual(W483) 2-377 2 Instructions Sample program  Receiving data This example shows how to receive data from the V530-R150V3 2D Code Reader as an example of communicating with an external device. Hardware Configuration Sync Sensor Monitor F150-M05L Power Supply (24 VDC) Console F150-KP Console Cable RS-232C Cable XW2Z-200T (2 m) XW2Z-500T (5 m) V530-R150V3 Programmable Controller SYSMAC CJ1G-CPU……H CJ1H-CPU……H CJ1M-CPU…… Camera F150-SLC20 In this example, the external device is connected to the RS-232C port built into the CPU Unit. First, set the reading conditions for the Code Reader. Communications Settings The communications settings of the Code Reader are given in the following table. These are the default settings. Item Setting Communications mode No-protocol Baud rate 38,400 bps Data bit length 8 bits Parity None Stop bits 1 Start code None End code #000D (CR) Set the PLC communications settings to the same values in the PLC Setup. Only the end code needs to be set. 2-378 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Programming Example 0.01 A392.05 TXD D10 RS-232C Port Send Ready Flag D20 &3 0.02 A392.06 Serial Communication Instructions If CIO 0.02 turns ON while the RS-232C Port Send Ready Flag (A392.05) is ON, the number of bytes of reading results specified in the RS-232C Port Reception Counter (A393) are read from the Code Reader connected to the CPU Unit’s built-in RS-232C port and stored starting from the upper byte of D100. RXD RS-232C Port Receive Ready Flag S D100 C D20 N 2 RS-232C Port Reception Counter A393 36 2F 30 38 2F 31 S: D100 31 =”06/08/11 15 C: D20 12 11 8 7 0 4 3 1 0 Lower byte 15 12 11 8 7 Received 30 0 3 0 RXD Upper byte 4 3 3 0 6 D101 2 F 3 0 D102 3 8 2 F D103 3 1 3 1 0 Byte Order #0: Most significant bytes first RS and ER Signal Control #0: No RS and ER signal control Serial Port Specifier #1: CPU Unit’s built-in RS-232C port Always #0. Controlling Signals 0.00 RXD D D100 C D200 N &10 When CIO 0.00 turns ON, the status of the CS signal is output to bit 15 of D100 and the status of the DR signal is output to bit 14 of D100. 15 14 13 12 1 0 0 0 D: D100 DR signal: 0 CS signal: 1 15 C: D200 12 11 0 8 7 1 4 3 3 0 0 Byte Order #0: Most significant bytes first CS and DR Signal Monitor #3: CS and DR signal monitor Serial Port Specifier #1: CPU Unit’s built-in RS-232C port Always #0. CP1E CPU Unit Instructions Reference Manual(W483) 2-379 2 Instructions Clock Instructions CADD/CSUB Instruction Mnemonic Variations Function code Function CALENDAR ADD CADD @CADD 730 Adds time to the calendar data in the specified words. CALENDAR SUBTRACT CSUB @CSUB 731 Subtracts time from the calendar data in the specified words. CADD CSUB CSUB(731) CADD(730) Symbol C C: First calendar word T: First time word T T: First time word R: First result word R R: First result word C C: First calendar word T R Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand 2-380 Description Data type Size WORD 3 C First calendar word T First time word DWORD 2 R First result word WORD 3 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  CADD C through C+2: Calendar Data 15 8 7 T and T+1: Time Data 15 0 8 7 0 T C Minutes: 00 to 59 (BCD) Minutes: 00 to 59 (BCD) 15 15 8 7 0 C+1 0 Clock Instructions Seconds: 00 to 59 (BCD) Seconds: 00 to 59 (BCD) T+1 2 Hour: 00 to 23 (BCD) Hours: 0000 to 9999 (BCD) CADD/CSUB Day: 01 to 31 (BCD) 15 8 7 0 C+2 Month: 01 to 12 (BCD) Year: 00 to 99 (BCD) R through R+2: Result Data 15 8 7 0 R Seconds: 00 to 59 (BCD) Minutes: 00 to 59 (BCD) 15 8 7 0 R+1 Hour: 00 to 23 (BCD) Day: 01 to 31 (BCD) 15 8 7 0 R+2 Month: 01 to 12 (BCD) Year: 00 to 99 (BCD) CP1E CPU Unit Instructions Reference Manual(W483) 2-381 2 Instructions  CSUB C through C+2: Calendar Data 15 8 7 T and T+1: Time Data 15 0 8 7 0 T C Seconds: 00 to 59 (BCD) Seconds: 00 to 59 (BCD) Minutes: 00 to 59 (BCD) Minutes: 00 to 59 (BCD) 15 8 7 15 0 0 T+1 C+1 Hour: 00 to 23 (BCD) Hours: 0000 to 9999 (BCD) Day: 01 to 31 (BCD) 15 8 7 0 C+2 Month: 01 to 12 (BCD) Year: 00 to 99 (BCD) R through R+2: Result Data 15 8 7 0 R Seconds: 00 to 59 (BCD) Minutes: 00 to 59 (BCD) 15 8 7 0 R+1 Hour: 00 to 23 (BCD) Day: 01 to 31 (BCD) 15 8 7 0 R+2 Month: 01 to 12 (BCD) Year: 00 to 99 (BCD) 2-382 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions  Operand Specifications Word addresses Indirect DM addresses Area Constants CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK C CF Pulse bits TR bits --- --- --- --OK R --- Flags Name Error Flag Label P_ER Operation • ON if the calendar data in C through C+2 is not within the specified ranges. Clock Instructions T • ON if the time data in T and T+1 is not within the specified ranges. • OFF in all other cases. Equal Flag P_EQ 2 • ON when the result of a CSUB instruction is 0. • OFF in all other cases.  CADD CADD(730) adds the calendar data (words C through C+2) to the time data (words T and T+1) and outputs the resulting calendar data to R through R+2. 87 15 C Minutes C+1 C+2 Day Hour Year Month + 15 T 87 Minutes 15 87 0 R R+1 Minutes Day Hour R+2 Year Month  CSUB Seconds 87 15 Minutes C C+1 C+2 0 Seconds Day Hour Year Month - 15 T 87 Minutes 0 Seconds Hours T+1 15 CP1E CPU Unit Instructions Reference Manual(W483) 0 Seconds Hours T+1 CSUB(731) subtracts the time data (words T and T+1) from the calendar data (words C through C+2) to and outputs the resulting calendar data to R through R+2. 0 Seconds 87 0 R R+1 Minutes Day Hour R+2 Year Month Seconds 2-383 CADD/CSUB Function 2 Instructions Sample program  CADD When CIO 0.00 turns ON in the following example, the calendar data in D100 through D102 (year, month, day, hour, minutes, seconds) is added to the time data in D200 and D201 (hours, minutes, seconds) and the result is output to D300 through D302. 0.00 CADD C D100 T D200 R D300 15 87 0 20 18 12 30 10 99 C:D100 D101 D102 18:30:20 10 December, 1999 + 87 15 T:D200 D201 10 06 87 15 R:D300 D301 D302 0 15 00 40 04 00 10 minutes, 15 seconds 600 hours 0 35 18 01 18:40:35 4 January, 2000  CSUB When CIO 0.00 turns ON in the following example, the time data in D200 and D201 (hours, minutes, seconds) is subtracted from the calendar data in D100 through D102 (year, month, day, hour, minutes, seconds) and the result is output to D300 through D302. 0.00 CSUB C D100 T D200 R D300 15 87 15 T:D200 D201 87 10 00 15 R:D300 D301 D302 2-384 0 20 18 07 30 10 98 C:D100 D101 D102 0 15 50 87 20 08 98 18:30:20 10 July, 1998 50 hours, 10 minutes, 15 seconds 0 05 16 07 16:20:05 8 July, 1998 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions DATE Instruction Mnemonic DATE Function code Function 735 Changes the internal clock setting to the setting in the specified source words. @DATE DATE DATE(735) Symbol Clock Instructions CLOCK ADJUSTMENT Variations S: First source word S 2 Applicable Program Areas Step program areas Subroutines Interrupt tasks Usage OK OK OK DATE Area Operands Operand Description S First source word Data type Size LWORD 4 S through S+3: New Clock Setting 15 8 7 0 15 S 8 7 0 S+2 Seconds: 00 to 59 (BCD) Month: 01 to 12 (BCD) Minutes: 00 to 59 (BCD) 15 8 Year: 00 to 99 (BCD) 0 7 8 7 15 0 S+3 S+1 Day of the week: 00 = Sunday 01 = Monday 02 = Tuesday 03 = Wednesday 04 = Thursday 05 = Friday 06 = Saturday Hour: 00 to 23 (BCD) Always set to 00. Day: 01 to 31 (BCD) Note S through S+3 must be in the same data area.  Operand Specifications Word addresses Indirect DM addresses Area S CIO WR HR AR T C DM @DM *DM OK OK OK OK OK OK OK OK OK Constants CF Pulse bits TR bits --- --- --- --- Flags Name Error Flag Label P_ER Operation • ON if the new clock setting in S through S+3 is not within the specified range. • OFF in all other cases. • ON when DATE instruction is executed for CP1E-E-. CP1E CPU Unit Instructions Reference Manual(W483) 2-385 2 Instructions Related Auxiliary Area Words and Bits Name Address Clock data A351 to A354 Operation A351.00 to A351.07: Seconds (00 to 59) (BCD) A351.08 to A351.15: Minutes (00 to 59) (BCD) A352.00 to A352.07: Hours (00 to 23) (BCD) A352.08 to A352.15: Day of the month (01 to 31) (BCD) A353.00 to A353.07: Month (01 to 12) (BCD) A353.08 to A353.15: Year (00 to 99) (BCD) A354.00 to A354.07: Day of the week (00 to 06) (BCD) 00: Sunday, 01: Monday, 02: Tuesday, 03: Wednesday, 04: Thursday, 05: Friday, 06: Saturday Function DATE(735) changes the internal clock setting according to the clock data in the four source words. The new internal clock setting is immediately reflected in the Calendar/Clock Area (A351 to A354). CPU Unit Internal clock New setting Seconds S1 Minutes S+1 Day Hour S+2 Year Month S+3 00 Day of week Hint The internal clock setting can also be changed from a Peripheral Device or the CLOCK WRITE FINS command (0702). Precaution • An error will not be generated even if the internal clock is set to a non-existent date (such as November 31). • In case this instruction is executed for E-type CPU Unit (CP1E-E-), the error flag will turn ON and the instruction cannot be executed. For E-type CPU Unit, A351 to A354 is always 01-01-01 01:01:01 Sunday. Sample program When CIO 0.00 turns ON in the following example, the internal clock is set to 20:15:30 on Thursday, October 9, 1998. 0.00 DATE S D100 15 S:D100 87 15 0 30 Minute 15 D101 Second 0 87 09 20 Day of Hour the month 0 15 87 D102 98 10 Year 15 D103 0 87 00 Always set to 00. 2-386 Month 04 Day of the week CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions FAL Instruction Mnemonic FAILURE ALARM Variations FAL Function code Function 006 Generates or clears user-defined non-fatal errors. Non-fatal errors do not stop PLC operation. @FAL Failure Diagnosis Instructions Failure Diagnosis Instructions 2 FAL Generating or Clearing User-defined Non-fatal Errors Generating Non-fatal System Errors FAL FAL(006) FAL(006) Symbol N N: FAL number N N: FAL number (value in A529) S S: First message word or constant (0000 to FFFF) S S: First word containing the error code and error details Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description N FAL number S First message word or constant / First word containing the error code and error details Data type Size Constants only 1 WORD Variable  Generating or Clearing User-defined Non-fatal Errors Note The value of operand N must be different from the content of A529 (the system-generated FAL/FALS number). Generates a non-fatal error Clears all non-fatal errors N 1 to 511 (These FAL numbers are shared with FALS numbers.) 0 #FFFF: S Word address: Generates a non-fatal error with the corresponding FAL number. The 16-character ASCII message contained in S through S+7 will be displayed on the Programming Device. #0000 to #FFFF: Generates a non-fatal error with the corresponding FAL number (no message). Clears all non-fatal errors. #0001 to #01FF: Clears the non-fatal error with the corresponding FAL number. Other: Clears the most serious non-fatal error.  Generating Non-fatal System Errors Note The value of operand N must be the same as the content of A529 (the system-generated FAL/FALS number). Generates a non-fatal error N 1 to 511 (These FAL numbers are shared with FALS numbers.) S Error code that will be generated. (See Function below.) S+1 Error details code that will be generated. (See Function below.)  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM *DM N --- --- --- --- --- --- --- --- --- S OK OK OK OK OK OK OK OK OK CP1E CPU Unit Instructions Reference Manual(W483) Constants CF Pulse bits TR bits OK --- --- --- 2-387 2 Instructions Flags Name Label Error Flag ER Operation • ON if N is not within the specified range of 0 to 511 decimal. • ON if a non-fatal system error is being generated, but the specified error code or error details code is incorrect. • OFF in all other cases. Related Auxiliary Area Words and Bits  Auxiliary Area Words/Flags for User-defined Errors Only Name Address Operation FAL Error Flag A402.15 ON when an error is generated with FAL(006). Executed FAL Number Flags A360.01 to A391.15 When an error is generated with FAL(006), the corresponding flag will be turned ON. Flags A360.01 to A391.15 correspond to FAL numbers1 to 511 decimal.  Auxiliary Area Words/Flags for System Errors Only Name Address System-generated FAL/FALS number A529 Operation A dummy FAL/FALS number is used when a system error is generated with FAL(006). Set the same dummy FAL/FALS number in this word (0001 to 01FF hex, 1 to 511 decimal).  Auxiliary Area Words/Flags for both User-defined and System Errors Name Address Operation Error Log Area A100 to A199 The Error Log Area contains the error codes and time/date of occurrence for the most recent 20 errors, including errors generated by FAL(006). Error code A400 When an error occurs its error code is stored in A400. The error codes for FAL numbers 0001 to 01FF are 4101 to 42FF, respectively. If two or more errors occur simultaneously, the error code of the most serious error will be stored in A400. Clearing Non-fatal Errors without a Programming Device  Clearing User-defined Non-fatal Errors When FAL(006) is executed with N set to 0, non-fatal errors can be cleared. The value of S will determine the processing, as shown in the following table. S &1 to &511 (0001 to 01FF hex) Process The FAL error of the specified number will be cleared. FFFF hex All non-fatal errors (including system errors) will be cleared. 0200 to FFFE hex or word specification The most serious non-fatal error (even if it is a non-fatal system error) that has occurred. When more than one FAL error has occurred, the FAL error with the smallest FAL number will be cleared.  Clearing Non-fatal System Errors There are two ways to clear non-fatal system errors generated with FAL(006). • Turn the PLC OFF and then ON again. • When keeping the PLC ON, the system error must be cleared as if the specified error had actually occurred. 2-388 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Function The following table shows the error codes and FAL Error Flags for FAL(006). FAL number 1 to 511 decimal FAL error codes 4101 to 42FF Executed FAL Number Flags A360.01 to A391.15 When FAL(006) is executed with N set to an FAL number (&1 to &511) that is not equal to the content of A529 (the system-generated FAL/FALS number), a non-fatal error will be generated with that FAL number and the following processing will be performed: FAL Error Flag ON FAL N 0000 2 Corresponding Executed FAL Number Flag ON Error code written to A400 Error code and time written to Error Log Area FAL Execution of FAL(006) generates a non-fatal error with FAL number N. ERR Indicator flashes 1. The FAL Error Flag (A402.15) will be turned ON. (PLC operation will continue.) 2. The Executed FAL Number Flag will be turned ON for the corresponding FAL number. Flags A360.01 to A391.15 correspond to FAL numbers 0001 to 01FF (1 to 511). 3. The error code will be written to A400. Error codes 4101 to 42FF correspond to FAL numbers 0001 to 01FF (1 to 511). 4. The error code and the time that the error occurred will be written to the Error Log Area (A100 through A199). Note The error record will not be written to the Error Log Area if the Don’t register FAL to error log Option in the PLC Setup is selected. 5. The ERR Indicator on the CPU Unit will flash. 6. If a word address has been specified in S, the message beginning at S will be registered (displayed on the Programming Device). Note If a fatal error or a more serious non-fatal error occurs at the same time as the FAL(006) instruction, the more serious error’s error code will be written to A400.  Generating Non-fatal System Errors When FAL(006) is executed with N set to an FAL number (&1 to &511) that is equal to the content of A529 (the system-generated FAL/FALS number), a non-fatal error will be generated with the error code and error details code specified in S and S+1. The following processing will be performed at the same time: Error code written to A400 FAL N S Execution of FAL(006) generates a non-fatal system error with the error code/details specified in S and S+1. Matching values A529CH S S+1 Failure Diagnosis Instructions  Generating Non-fatal User-defined Errors Error code and time written to Error Log Area The corresponding Auxiliary Area Flags are set based on the error code and error details. ERR Indicator flashes. N Error code Error details CP1E CPU Unit Instructions Reference Manual(W483) 2-389 2 Instructions 1. The specified error code will be written to A400. 2. The error code and the time that the error occurred will be written to the Error Log Area (A100 through A199). 3. The appropriate Auxiliary Area Flags are set based on the error code and error details. 4. The ERR Indicator on the CPU Unit will flash and PLC operation will continue. Note 1 FAL(006) can be used to generate non-fatal errors from the system when debugging the program. For example, a system error can be generated intentionally to check whether or not error messages are being displayed properly at an interface such as a Programmable Terminal (PT). 2 The value of A529 (the system-generated FAL/FALS number) is a dummy FAL number (FAL and FALS numbers are shared.) used when a non-fatal error is generated intentionally by the system. This number is a dummy FAL number, so it does not change the status of the Executed FAL Number Flags (A360.01 to A391.15) or the error code. When it is necessary to generate two or more system errors (fatal and/or non-fatal errors), different errors can be generated by executing the FAL/FALS instructions more than once with the same values in A529 and N, but different values in S and S+1. 3 If a more serious error (including a system-generated fatal error or FALS(007) error) occurs at the same time as the FAL(006) instruction, the more serious error’s error code will be written to A400. 4 To clear a system error generated by FAL(006), turn the PLC OFF and then ON again. The PLC can be kept ON, but the same processing will be required to clear the error as if the specified error had actually occurred. Refer to CP1E CPU Unit Hardware Operation Manual or CP1E CPU Unit Software Operation Manual. The following table shows how to specify error codes and error details in S and S+1. Error name PLC Setup Error S 009B hex S+1 PLC Setup Error Location 0000 to FFFF hex Built-in Analog Error 008A hex --- (not fixed) Option Board Error 00D1 hex Option Board Slot No. 0001 hex Battery Error 00F7 hex --- (not fixed)  Disabling Error Log Entries of User-defined Errors Normally when FAL(006) generates a user-defined error, the error code and the time that the error occurred are written to the Error Log Area (A100 through A199). It is possible to set the PLC Setup so that user-defined errors generated by FAL(006) are not recorded in the Error Log. Note Even though the error will not be recorded in the Error Log, the FAL Error Flag (402.15) will be turned ON, the corresponding flag in the Executed FAL Number Flags (A360.01 to A391.15) will be turned ON, and the error code will be written to A400. Disable Error Log entries for user-defined FAL(006) errors when you want to record only the systemgenerated errors. For example, this function is useful during debugging if the FAL(006) instructions are used in several applications and the Error Log is becoming full of user-defined FAL(006) errors. • The following screen capture shows the PLC Setup setting from the CX-Programmer. 2-390 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions • Fatal errors generated by FALS(007) • Non-fatal errors from the system • Fatal errors from the system • Non-fatal errors from the system generated intentionally with FAL(006) • Fatal errors from the system generated intentionally with FALS(007)  Displaying Messages with Non-fatal User-defined Errors • If S is a word address and an ASCII message has been stored at S, that message will be displayed at the Peripheral Device when FAL(006) is executed. (If a message is not required, set S to a constant.) • The message beginning at S will be registered when FAL(006) is executed. Once the message is registered, it will be displayed. Failure Diagnosis Instructions Note Even if PLC Setup word 129 bit 15 is set to 1 (Do not record FAL Errors in Error Log.), the following errors will be recorded: 2 • An ASCII message up to 16 characters long can be stored in S through S+7. The leftmost (most significant) byte in each word is displayed first. FAL • The end code for the message is the null character (00 hexadecimal). • All 16 characters in words S to S+7 will be displayed if the null character is omitted. • If the contents of the words containing the message are changed after FAL(006) is executed, the message will change accordingly. Sample program  Generating a Non-fatal Error When CIO 0.00 is ON in the following example, FAL(006) will generate a non-fatal error with FAL number 31 and execute the following processes. 1. The FAL Error Flag (A402.15) will be turned ON. 2. The corresponding Executed FAL Number Flag (A361.15) will be turned ON. 3. The corresponding error code (411F) will be written to A400. 4. The error code and the time/date that the error occurred will be written to the Error Log Area (A100 through A199). 5. The ERR Indicator on the CPU Unit will flash. 6. The ASCII message in D100 to D107 will be displayed at the Peripheral Device. Note If a message is not required, specify a constant for S. 0.00 FAL N 31 M D100 15 0 M: D100 M: 4C D101 57 20 D102 56 4F D103 4C 54 D104 41 47 D105 45 00 D106 4F MESSAGE LOW VOLTAGE Disregarded D107 Note If two or more errors occur at the same time, the error code of the most serious error (with the highest error code) will be stored in A400. CP1E CPU Unit Instructions Reference Manual(W483) 2-391 2 Instructions  Clearing a Particular Non-fatal Error When CIO 0.01 is ON in the following example, FAL(006) will clear the non-fatal error with FAL number 31, turn OFF the corresponding Executed FAL Number Flag (A361.15), and turn OFF the FAL Error Flag (A402.15). 0.01 FAL N 0 Set N to 0 to clear errors. M #001F Set M to the desired FAL number (031(001F)).  Clearing All Non-fatal Errors When CIO 0.02 is ON in the following example, FAL(006) will clear all of the non-fatal errors, turn OFF the Executed FAL Number Flags (A360.01 to A391.15), and turn OFF the FAL Error Flag (A402.15). 0.02 FAL N 0 M #FFFF Set N to 0 to clear errors. Set M to FFFF to clear all non-fatal errors (both FAL(006) and system errors).  Clearing the Most Serious Non-fatal Error When CIO 0.03 is ON in the following example, FAL(006) will clear the most serious non-fatal error that has occurred and reset the error code in A400. If the cleared error was originally generated by FAL(006), the corresponding Executed FAL Number Flag and the FAL Error Flag (A402.15) will be turned OFF. 0.03 FAL Set N to 0 to clear errors. N 0 M #0000 Set M to 0000, another constant between 0200 and FFFE, or a word address to clear the most serious non-fatal error. (In this case, M is set to 0000.)  Generating a Non-fatal System Error When CIO 0.00 is ON in the following example, FAL(006) will generate Option Board Error. In this case, dummy FAL number 10 is used and the corresponding value (000A hex) is stored in A529. 1. The specified error code (00D1) will be written to A400 if it is the most serious error. 2. The error code and the time/date that the error occurred will be written to the Error Log Area (A100 through A199). 3. Option Board Error Flag(A315.13) will be turned ON. 4. The CPU Unit’s ERR Indicator will flash. 5. Option Board Error will occur. 0.00 MOV #000A A529 FAL N 10 S D200 Matching values 2-392 A529CH 000A S: D200 #00D1 D201 #0001 Error code: #00D1(Option Board Error) Error Slot number: 1(#0001) CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Instruction Mnemonic SEVERE FAILURE ALARM Variations Function code --- 007 FALS Function Generates user-defined fatal errors. Fatal errors stop PLC operation. FALS Generating User-defined Fatal Errors Generating Fatal System Errors FALS(007) FALS(007) Symbol N N: FAL number N N: FAL number (value in A529) S S: First message word or constant (0000 to FFFF) S S: First word containing the error code and error details Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Description N FAL number S First message word or constant / First word containing the error code and error details Data type Size Constants only 1 WORD Variable  Generating User-defined Fatal Errors Note The value of operand N must be different from the content of A529 (the system-generated FAL/FALS number). Generates a non-fatal error N 1 to 511 (These FALS numbers are shared with FALS numbers.) S Specifies the first of eight words containing an ASCII message to be displayed on the Programming Device. Specify a constant (0000 to FFFF) if a message is not required.  Generating Fatal Errors from the System The following table shows the function of the operands. Note The value of operand N must be the same as the content of A529 (the system-generated FAL/FALS number). Generates a non-fatal error N 1 to 511 (These FALS numbers are shared with FAL numbers.) S Error code that will be generated. (See Description below.) S+1 Error details code that will be generated. (See Description below.)  Operand Specifications Word addresses Indirect DM addresses Area CIO WR HR AR T C DM @DM Constants CF Pulse bits TR bits OK --- --- --- *DM N --- --- --- --- --- --- --- --- --- S OK OK OK OK OK OK OK OK OK Flags Name Error Flag Label P_ER 2 FALS Applicable Program Areas Operand Failure Diagnosis Instructions FALS Operation • ON if N is not within the specified range of 0001 to 01FF (1 to 511 decimal). • ON if a fatal system error is being generated, but the specified error code or error details code is incorrect. • OFF in all other cases. CP1E CPU Unit Instructions Reference Manual(W483) 2-393 2 Instructions Related Auxiliary Area Words and Bits  Auxiliary Area Words/Flags for User-defined Errors Only Name Address FALS Error Flag A401.06 Operation ON when an error is generated with FALS(007).  Auxiliary Area Words/Flags for System Errors Only Name Address System-generated FAL/FALS number A529 Operation A dummy FAL/FALS number is used when a system error is generated with FALS(007). Set the same dummy FAL/FALS number in this word (0001 to 01FF hex, 1 to 511 decimal).  Auxiliary Area Words/Flags for both User-defined and System Errors Name Address Operation Error Log Area A100 to A199 The Error Log Area contains the error codes and time/date of occurrence for the most recent 20 errors, including errors generated by FALS(007). Error code A400 When an error occurs its error code is stored in A400. The error codes for FALS numbers 0001 to 01FF (1 to 511 decimal) are C101 to C2FF, respectively. Note If two or more errors occur simultaneously, the error code of the most serious error will be stored in A400. Function  Generating Fatal User-defined Errors FALS number 1 to 511 FALS error codes C101 TO C2FF When FALS(007) is executed with N set to an FALS number (1 to 511) that is not equal to the content of A529 (the system-generated FAL/FALS number), a fatal error will be generated with that FALS number and the following processing will be performed: FALS Error Flag ON FALS N 0000 Execution of FALS(007) generates a fatal error with FALS number N. Error code written to A400 Error code and time/date written to Error Log Area ERR Indicator lit 1. The FALS Error Flag (A401.06) will be turned ON. (PLC operation will stop.) 2. The error code will be written to A400. Error codes C101 to C2FF correspond to FALS numbers 0001 to 01FF (1 to 511). Note If an error more serious than the FALS(007) instruction (one with a higher error code) has occurred, A400 will contain the more serious error’s error code. 3. The error code and the time/date that the error occurred will be written to the Error Log Area (A100 through A199). 4. The ERR Indicator on the CPU Unit will be lit. 5. If a word address has been specified in S, the ASCII message beginning at S will be registered (displayed on the Peripheral Device). Note 1 If an error that is more serious (including fatal system errors) than an error registered with this instruction occurs simultaneously, the error code of that error will be set in error code A400. 2 The end code for the message is the null character (00 hexadecimal). All 16 characters in words S to S+7 will be displayed if the null character is omitted. 3 N must between 0001 and 01FF. An error will occur and the Error Flag will be turned ON if N is outside of the specified range. 2-394 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions I/O memory Output status from output units ON Hold OFF OFF Hold OFF IOM Hold Bit (A500.12).  Generating Non-fatal System Errors Error code written to A400 FALS N S Execution of FALS(007) generates a fatal system error with the error code/details specified in S and S+1. Error code and time written to Error Log Area The corresponding Auxiliary Area Flags are set based on the error code and error details. ERR Indicator flashes. 2 Matching values A529CH N FALS S S+1 Failure Diagnosis Instructions 4 When a user-defined fatal error is registered, the I/O memory and output status from output units will be as indicated below. Error code Error details When FALS(007) is executed with N set to an FAL number (1 to 511) that is equal to the content of A529 (the system-generated FAL/FALS number), a fatal error will be generated with the error code and error details code specified in S and S+1. The following processing will be performed at the same time: 1. The specified error code will be written to A400. 2. The error code and the time that the error occurred will be written to the Error Log Area (A100 through A199). 3. The appropriate Auxiliary Area Flags are set based on the error code and error details. 4. The ERR Indicator on the CPU Unit will light and PLC operation will be stopped. Note 1 The value of A529 (the system-generated FAL/FALS number) is a dummy FAL number (FAL and FALS numbers are shared.) used when a non-fatal error is generated intentionally by the system. This number is a dummy FAL number, so it is not reflected in the error code. When it is necessary to generate two or more system errors, different errors can be generated by executing the FAL/FALS instructions more than once with the same values in A529 and N, but different values in S and S+1. 2 If a more serious error (including a system-generated fatal error or another FALS(007) error) occurs at the same time as the FALS(007) instruction, the more serious error’s error code will be written to A400. 3 To clear a system error generated by FALS(007), turn the PLC OFF and then ON again. The PLC can be kept ON, but the same processing will be required to clear the error as if the specified error had actually occurred. Refer to CP1E CPU Unit Hardware Operation Manual or CP1E CPU Unit Software Operation Manual for details. 4 The following table shows how the IOM Hold Bit affects the status of I/O memory and the status of outputs on Output Units after a fatal system error has been generated with FALS(007). Status of I/O memory Status of outputs on Output Units ON Retained OFF OFF Cleared OFF IOM Hold Bit (A500.12) CP1E CPU Unit Instructions Reference Manual(W483) 2-395 2 Instructions The following table shows how to specify error codes and error details in S and S+1. S S+1 Error code Error details Error name Memory Error 80F1 hex Bits 00 to 09: Memory Error Location Bit 00: User program Bit 01: I/O memory Bit 04: PLC Setup Bits 2, 3, 5 to 15: Invalid I/O Bus Error 80CA hex CP1W Expansion I/O Unit, Expansion Unit Too Many I/O Points Error 80E1 hex #0A0A hex Bits 13 to 15: Error Cause Bits 00 to 12: Details • The channel number of CP1W Expansion I/O Unit is too many. Bits 13 to 15: 001 Bits 00 to 12: All zeroes Program Error 80F0 hex Bits 08 to 15: Error Cause Bit 15: UM overflow error Bit 14: Illegal instruction error Bit 13: Differentiation overflow error Bit 12: Task error Bit 11: No END error Bit 10: Illegal access error Bit 09: Indirect DM BCD error Bit 08: Instruction error Bits 00 to 07: Invalid Cycle Time Overrun Error 809F hex #0000 hex  Displaying Messages with Fatal User-defined Errors • If S is a word address, the ASCII message beginning at S will be displayed at the Programming Device when FALS(007) is executed. (If a message is not required, set S to a constant.) • The message beginning at S will be registered when FALS(007) is executed. Once the message is registered, it will be displayed. • An ASCII message up to 16 characters long can be stored in S through S+7. The leftmost (most significant) byte in each word is displayed first. • The end code for the message is the null character (00 hexadecimal). • All 16 characters in words S to S+7 will be displayed if the null character is omitted. • If the contents of the words containing the message are changed after FALS(007) is executed, the message will change accordingly.  Clearing FALS(007) Fatal System Errors There are two ways to clear fatal system errors generated with FALS(007). 1. Turn the PLC OFF and then ON again. 2. When keeping the PLC ON, the system error must be cleared as if the specified error had actually occurred.  Clearing FALS(007) User-defined Fatal Errors To clear errors generated by FALS(007), first eliminate the cause of the error and then either clear the error from a Programming Device or turn the PLC OFF and then ON again. Precaution When a fatal system error is registered, if the IOM Hold Bit is OFF, I/O memory will be cleared. 2-396 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions Sample program When CIO 0.00 is ON in the following example, FALS(007) will generate a fatal error with FAL number 31 and execute the following processes. 1. The FALS Error Flag (A401.06) will be turned ON. 2. The corresponding error code (C11F) will be written to A400. 3. The error code and the time/date that the error occurred will be written to the Error Log Area (A100 through A199). 4. The ERR Indicator on the CPU Unit will be lit. 5. The ASCII message in D100 to D107 will be displayed at the Peripheral Device. Failure Diagnosis Instructions  Generating a User-defined Error 2 Note If a message is not required, specify a constant for S. 0.00 FALS FALS N 31 M D100 M: D100 15 4C 4F 0 D101 57 20 D102 56 4F D103 4C 54 D104 41 47 D105 45 00 D106 MESSAGE LOW VOLTAGE Disregarded D107 Note A400 will contain the error code of the most serious of all of the errors that have occurred, including non-fatal and fatal system errors, as well as errors generated by FAL(006) and FAL(007).  Generating a Non-fatal System Error When CIO 0.00 is ON in the following example, FALS(007) will generate Memory Error (User programe Error). In this case, dummy FAL number 10 is used and the corresponding value (80F1 hex) is stored in A529. 1. The specified error code (80F1) will be written to A400 if it is the most serious error. 2. The error code and the time/date that the error occurred will be written to the Error Log Area (A100 through A199). 3. The Memory Error Flag (A401.15) will be turned ON. 4. The CPU Unit’s ERR Indicator will light and PLC operation will stop. 5. Memory Error has occured. 0.00 MOV #000A A529 FALS N 10 S D200 Matching values A529CH 000A S: D200 #80F1 ......Error code: #80F1 (Memory Error Flag) D201 #0001 ......Memory Error generating Area: #0001(User Memory) CP1E CPU Unit Instructions Reference Manual(W483) 2-397 2 Instructions Other Instructions STC/CLC Instruction Mnemonic Function code Variations Function SET CARRY STC @STC 040 Sets the Carry Flag (CY). CLEAR CARRY CLC @CLC 041 Turns OFF the Carry Flag (CY). STC CLC Symbol CLC(041) STC(040) Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Flags Data type Operand Description STC Carry Flag P_CY ON CLC OFF Function  STC When the execution condition is ON, STC(040) turns ON the Carry Flag (CY). Although STC(040) turns the Carry Flag ON, the flag will be turned ON/OFF by the execution of subsequent instructions which affect the Carry Flag. ROL(027) and ROR(028) make use of the Carry Flag in their rotation shift operations.  CLC When the execution condition is ON, CLC(040) turns OFF the Carry Flag (CY). Although CLC(040) turns the Carry Flag OFF, the flag will be turned ON/OFF by the execution of subsequent instructions which affect the Carry Flag. +C(402), +CL(403), +BC(406), +BCL(407), -C(412), -CL(413), -BC(416), and -BCL(417) make use of the Carry Flag in their addition operations. Use CLC(041) just before any of these instructions to prevent any influence from other preceding instructions. ROL(027) and ROR(028) make use of the Carry Flag in their rotation shift operations. Hint The +(400), +L(401), +B(404), +BL(405), -(410), -L(411), -B(414), and -BL(415) instructions do no include the Carry Flag in their addition and subtraction operations. In general, use these instructions when performing addition or subtraction. 2-398 CP1E CPU Unit Instructions Reference Manual(W483) 2 Instructions WDT Instruction Mnemonic WDT @WDT Function code Function 094 Extends the maximum cycle time, but only for the cycle in which the instruction is executed. WDT(094) can be used to prevent errors for long cycle times when a longer cycle time is temporarily required for special processing. Other Instructions EXTEND MAXIMUM CYCLE TIME Variations WDT Symbol 2 WDT(094) T T: Timer setting WDT Applicable Program Areas Area Step program areas Subroutines Interrupt tasks Usage OK OK OK Operands Operand Description Data type Size T Timer setting Constants only 1 T: Timer setting Specifies the watchdog timer setting between 0000 and 0064 hexadecimal or between &0000 and &0100 decimal.  Operand Specifications Word addresses Indirect DM addresses Area T CIO WR HR AR T C DM @DM *DM --- --- --- --- --- --- --- --- --- Constants CF Pulse bits TR bits OK --- --- --- Flags Operand Error Flag Description P_ER Data type • ON if the watchdog timer setting exceeds 1 second. • OFF in all other cases. Related PLC Setup Settings  CX-Programmer settings CP1E CPU Unit Instructions Reference Manual(W483) 2-399 2 Instructions  PLC Setup settings Name Function Watch cycle time Note Settings A Cycle Time Too Long error (fatal error) will be registered if the cycle time exceeds the maximum setting. 0: Default setting (1,000 ms) Sets the maximum cycle time. (This setting is valid only when the first setting has been set to 1.) 0001 to 0FA0 (10 to 1,000 ms, 10-ms units) 1: User time setting • The default value for the maximum cycle time is 1,000 ms, although it can be set anywhere from 10 to 1,000 ms in 10-ms units. • WDT(094) can be used more than once in a cycle. When WDT(094) is executed more than once the cycle time extensions are added together, although the total must not exceed 1,000 ms. If WDT(094) cannot be executed again if the cycle has already been extended to 1,000 ms. Related Auxiliary Area Words and Bits Name Address Operation Cycle Time Too Long Flag A401.08 ON when the present cycle time exceeds the maximum cycle time (watch cycle time) set in the PLC Setup. This is a fatal error which causes program execution to stop. Maximum Cycle Time A262 and A263 These words contain the maximum cycle time in 32-bit binary. This value is updated every cycle. Present Cycle Time A264 and A265 These words contain the present cycle time in 32-bit binary. This value is updated every cycle. Function WDT(094) extends the maximum cycle time for the cycle in which this instruction is executed. The watchdog timer setting in the PLC Setup is extended by an interval of T × 10 ms (0 to 1,000 ms). When it is likely that the cycle time will increase due to a temporary increase in processing data, this instruction can be used to prevent a cycle time error. Sample program 0.00 WDT 1 &30 0.01 WDT 2 &500 0.02 WDT 3 &10 Operation of WDT(094) In this example, the watchdog timer setting is set to 500ms. • When CIO 0.00 turns ON, the first WDT(094) instruction extends the cycle time by 300 ms (30 × 10 ms). Thus, the total cycle time is 800 ms at this point. • When CIO 0.01 turns ON, the second WDT(094) instruction attempts to extend the cycle time by another 500 ms. Since the total cycle time (1,300 ms) exceeds the upper limit of 1,000 ms, the extra 300 ms is ignored. As a result, the second WDT(094) instruction actually extends the total cycle time by 200 ms. • When CIO 0.02 turns ON, the third WDT(094) instruction attempts to extend the cycle time by another 10 ms. Since the total cycle time has already reached the upper limit of 1,000 ms, the third WDT(094) instruction is not executed. 2-400 CP1E CPU Unit Instructions Reference Manual(W483) Instruction Execution Times and Number of Steps 3 This section provides the execution times for all instructions used with a CP1E CPU Unit. 3-1 CP1E CPU Unit Instruction Execution Times and Number of Steps . . . . . 3-2 CP1E CPU Unit Instructions Reference Manual(W483) 3-1 3 Instruction Execution Times and Number of Steps 3-1 CP1E CPU Unit Instruction Execution Times and Number of Steps The following table lists the execution times for all instructions that are supported by the CPU Units. The total execution time of instructions within one whole user program is the process time for program execution when calculating the cycle time (See note.). Note User programs are allocated tasks that can be executed within cyclic tasks and interrupt tasks that satisfy interrupt conditions. Execution times for most instructions differ depending on the CPU Unit used and the conditions when the instruction is executed. The execution time can also vary when the execution condition is OFF. The following table also lists the length of each instruction in the Length (steps) column. The number of steps required in the user program area for each instructions depends on the instruction and the operands used with it. The number of steps in a program is not the same as the number of instructions. ↓ Note 1 Most instructions are supported in differentiated form (indicated with , ↓, @, and %). Specifying differentiation will increase the execution times by the following amounts. (unit:s) Symbol CP1E CPU Unit CPU ↓ or ↓ +4.0 @ or % +2.5 2 Use the following time as a guideline when instructions are not executed. CP1E CPU Unit CPU 1.4 3-2 CP1E CPU Unit Instructions Reference Manual(W483) 3 Instruction Execution Times and Number of Steps Sequence Input Instructions LOAD LOAD NOT AND AND NOT OR OR NOT Mnemonic FUN No. Length (steps) ON execution time (µs) 3-1 CP1E CPU Unit Instruction Execution Times and Number of Instruction Conditions LD --- 1 1.19 --- !LD --- 2 10.26 --- LD NOT --- 1 1.19 --- !LD NOT --- 2 10.26 --- AND --- 1 1.19 --- !AND --- 2 10.26 ----- AND NOT --- 1 1.19 !AND NOT --- 2 10.26 --- OR --- 1 1.29 --- !OR --- 2 10.36 --- OR NOT --- 1 1.29 --- !OR NOT --- 2 10.36 --- AND LOAD AND LD --- 1 0.60 --- OR LOAD OR LD --- 1 0.60 --- NOT NOT 520 1 0.80 --- CONDITION ON UP 521 3 4.92 --- CONDITION OFF DOWN 522 4 5.69 --- Length (steps) ON execution time (µs) Conditions 3 Sequence Output Instructions Instruction OUTPUT OUTPUT NOT Mnemonic FUN No. OUT --- 1 1.61 --- !OUT --- 2 38.06 --- OUT NOT --- 1 1.61 --- !OUT NOT --- 2 38.06 --- KEEP KEEP 011 1 4.72 --- DIFFERENTIATE UP DIFU 013 2 4.12 --- DIFFERENTIATE DOWN DIFD 014 2 4.19 --- SET SET --- 1 2.69 --- !SET --- 2 39.12 RESET RSET --- 1 2.69 --Word specified !RSET --- 2 39.12 MULTIPLE BIT SET SETA 530 4 17.60 With 1-bit set 253.5 With 1,000-bit set MULTIPLE BIT RESET RSTA 531 4 17.60 With 1-bit reset 249.5 With 1,000-bit reset SINGLE BIT SET SETB 532 2 16.60 3 54.60 --- 2 16.60 --- 3 54.60 --- !SETB SINGLE BIT OUTPUT RSTB !RSTB CP1E CPU Unit Instructions Reference Manual(W483) 534 --- --- 3-3 3 Instruction Execution Times and Number of Steps Sequence Control Instructions Instruction Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions END END 001 1 4.6 --- NO OPERATION NOP 000 1 1.2 --- INTERLOCK IL 002 1 4.3 --- INTERLOCK CLEAR ILC 003 1 4.3 MULTI-INTERLOCK MILH 517 3 19.4 DIFFERENTIATION HOLD MULTI-INTERLOCK MILR 518 3 DIFFERENTIATION RELEASE MULTI-INTERLOCK CLEAR MILC 519 2 --During interlock 19.4 Not during interlock and interlock not set 21.5 Not during interlock and interlock set 19.4 During interlock 19.4 Not during interlock and interlock not set 21.5 Not during interlock and interlock set 8.9 Interlock not cleared 8.9 Interlock cleared JUMP JMP 004 2 6.1 JUMP END JME 005 2 6.2 CONDITIONAL JUMP CJP 510 2 10.1 When JMP condition is satisfied FOR LOOP FOR 512 2 9.7 Designating a constant BREAK LOOP BREAK 514 1 4.1 NEXT LOOP NEXT 513 1 5.8 When loop is continued 5.7 When loop is ended ----- --- Timer and Counter Instructions Instruction TIMER Mnemonic TIM TIMX COUNTER HIGH-SPEED TIMER ONE-MS TIMER ACCUMULATIVE TIMER CNT Length (steps) ON execution time (µs) --- 3 11.6 550 --- CNTX 546 TIMH 015 TIMHX 551 TMHH 540 TMHHX 552 TTIM 087 TTIMX LONG TIMER FUN No. TIML 555 542 553 3 11.5 RESET TIMER/ COUNTER CNTR 012 CNTRX 548 CNR 545 CNRX 3-4 547 --When loop is continued 3 11.6 --When loop is continued 3 10.8 ----- 3 3 4 22.7 4 3 3 3 --- 17.4 When resetting 15.0 When interlocking 22.2 --- 17.4 When resetting 15.2 When interlocking 24.3 --When interlocking 24.5 22.2 REVERSIBLE COUNTER --When loop is continued 20.4 TIMLX Conditions --When interlocking 26.2 --- 25.4 --- 19.0 When resetting 1 word 659.0 When resetting 256 words 19.0 When resetting 1 word 659.0 When resetting 256 words CP1E CPU Unit Instructions Reference Manual(W483) 3 Instruction Execution Times and Number of Steps Comparison Instructions Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions 4 9.3 --- 4 10.8 --- Input Comparison Instructions LD,AND,OR+= 300 (unsigned) LD,AND,OR+<> 305 LD,AND,OR+< 310 LD,AND,OR+<= 315 LD,AND,OR+> 320 LD,AND,OR+>= 325 Input Comparison Instructions LD,AND,OR+=+L 301 (double, unsigned) LD,AND,OR+<>+L 306 LD,AND,OR+<+L 311 LD,AND,OR+<=+L 316 LD,AND,OR+>+L 321 LD,AND,OR+>=+L 326 Input Comparison Instructions LD,AND,OR+=+S 302 (signed) LD,AND,OR+<>+S 307 LD,AND,OR+<+S 312 LD,AND,OR+<=+S 317 LD,AND,OR+>+S 322 LD,AND,OR+>=+S 327 Input Comparison Instructions LD,AND,OR+=+SL 303 (double, signed) LD,AND,OR+<>+SL 308 LD,AND,OR+<+SL 313 LD,AND,OR+<=+SL 318 LD,AND,OR+>+SL 323 LD,AND,OR+>=+SL 328 Time Comparison Instructions 3 4 9.4 --- 4 10.9 --- =DT 341 4 14.5 --- <>DT 342 4 14.5 ---
DT 345 4 14.6 --- >=DT 346 4 14.6 --- CMP 020 3 8.1 --- !CMP 020 7 49.1 --- DOUBLE COMPARE CMPL 060 3 9.5 --- SIGNED BINARY COMPARE CPS 114 3 8.1 --- !CPS 114 7 49.1 --- CPSL 115 3 9.5 COMPARE DOUBLE SIGNED BINARY COMPARE --- TABLE COMPARE TCMP 085 4 61.1 --- UNSIGNED BLOCK COMPARE BCMP 068 4 107.6 --- AREA RANGE COMPARE ZCP 088 3 17.8 --- DOUBLE AREA RANGE ZCPL 116 3 20.1 COMPARE CP1E CPU Unit Instructions Reference Manual(W483) 3-1 CP1E CPU Unit Instruction Execution Times and Number of Instruction --- 3-5 3 Instruction Execution Times and Number of Steps Data Movement Instructions FUN No. Length (steps) MOV 021 !MOV 021 DOUBLE MOVE MOVL 498 MOVE NOT MVN 022 MOVE BIT MOVB MOVE DIGIT MULTIPLE BIT TRANSFER Instruction MOVE BLOCK TRANSFER ON execution time (µs) Conditions 3 8.0 --- 7 57.7 --- 3 8.9 --- 3 13.7 --- 082 4 21.4 --- MOVD 083 4 22.4 --- XFRB 062 Mnemonic XFER 070 26.4 4 Transferring 255 bits 24.2 Transferring 1 word 3747.7 BLOCK SET BSET 071 4 Transferring 1 word 137.3 21.3 2074.4 Transferring 1,000 words Setting 1 word Setting 1,000 words DATA EXCHANGE XCHG 073 3 19.2 --- SINGLE WORD DISTRIBUTE DIST 080 4 20.8 --- DATA COLLECT COLL 081 4 20.6 --- FUN No. Length (steps) ON execution time (µs) Conditions 010 3 Data Shift Instructions Instruction SHIFT REGISTER Mnemonic SFT 14.1 1076.0 REVERSIBLE SHIFT REGISTER SFTR 084 4 WORD SHIFT WSFT 016 4 18.0 3784.4 25.8 3783.9 ARITHMETIC SHIFT LEFT ASL 025 2 Shifting 290 words Shifting 1 word Shifting 1,000 words Shifting 1 word Shifting 1,000 words 13.0 --- ARITHMETIC SHIFT RIGHT ASR 026 2 13.0 --- ROTATE LEFT ROL 027 2 13.3 --- ROTATE RIGHT ROR 028 2 13.5 ONE DIGIT SHIFT LEFT SLD 074 3 21.8 ONE DIGIT SHIFT RIGHT SRD 075 3 3778.3 22.2 3778.6 3-6 Shifting 1 word --Shifting 1 word Shifting 1,000 words Shifting 1 word Shifting 1,000 words SHIFT N-BITS LEFT NASL 580 3 19.5 ----- DOUBLE SHIFT NBITS LEFT NSLL 582 3 20.8 SHIFT N-BITS RIGHT NASR 581 3 19.6 --- DOUBLE SHIFT NBITS RIGHT NSRL 583 3 21.0 --- CP1E CPU Unit Instructions Reference Manual(W483) 3 Instruction Execution Times and Number of Steps Increment/Decrement Instructions Mnemonic FUN No. Length (steps) ON execution time (µs) 3-1 CP1E CPU Unit Instruction Execution Times and Number of Instruction Conditions INCREMENT BINARY ++ 590 2 12.3 --- DOUBLE INCREMENT BINARY ++L 591 2 13.5 --- DECREMENT BINARY -- 592 2 12.3 --- DOUBLE DECREMENT BINARY --L 593 2 13.6 --- INCREMENT BCD ++B 594 2 13.2 --- DOUBLE INCREMENT BCD ++BL 595 2 14.4 --- DECREMENT BCD --B 596 2 13.2 --- DOUBLE DECREMENT BCD --BL 597 2 14.5 --- 3 Symbol Math Instructions Instruction Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions --- SIGNED BINARY ADD WITHOUT CARRY + 400 4 11.5 DOUBLE SIGNED BINARY ADD WITHOUT CARRY +L 401 4 13.0 --- SIGNED BINARY ADD WITH CARRY +C 402 4 11.7 --- DOUBLE SIGNED BINARY ADD WITH CARRY +CL 403 4 13.2 --- BCD ADD WITHOUT CARRY +B 404 4 20.6 --- DOUBLE BCD ADD WITHOUT CARRY +BL 405 4 22.9 --- BCD ADD WITH CARRY +BC 406 4 20.8 --- DOUBLE BCD ADD WITH CARRY +BCL 407 4 23.1 --- SIGNED BINARY SUBTRACT WITHOUT CARRY - 410 4 11.6 --- DOUBLE SIGNED BINARY SUBTRACT WITHOUT CARRY -L 411 4 13.2 --- SIGNED BINARY SUBTRACT WITH CARRY -C 412 4 11.7 ----- DOUBLE SIGNED BINARY SUBTRACT WITH CARRY -CL 413 4 13.3 BCD SUBTRACT WITHOUT CARRY -B 414 4 20.3 --- DOUBLE BCD SUBTRACT WITHOUT CARRY -BL 415 4 23.6 --- BCD SUBTRACT WITH CARRY -BC 416 4 20.5 --- DOUBLE BCD SUBTRACT WITH CARRY -BCL 417 4 23.8 --- SIGNED BINARY MULTIPLY ∗ 420 4 18.4 --- DOUBLE SIGNED BINARY MULTIPLY ∗L 421 4 23.9 --- BCD MULTIPLY ∗B 424 4 22.0 --- DOUBLE BCD MULTIPLY ∗BL 425 4 33.2 --- SIGNED BINARY DIVIDE / 430 4 19.8 --- DOUBLE SIGNED BINARY DIVIDE /L 431 4 25.8 --- BCD DIVIDE /B 434 4 23.2 --- DOUBLE BCD DIVIDE /BL 435 4 33.0 --- CP1E CPU Unit Instructions Reference Manual(W483) 3-7 3 Instruction Execution Times and Number of Steps Conversion Instructions Instruction Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions --- BCD TO BINARY BIN 023 3 15.1 DOUBLE BCD TO DOUBLE BINARY BINL 058 3 16.7 BINARY TO BCD BCD 024 3 15.1 DOUBLE BINARY TO BCDL 059 3 17.3 2’S COMPLEMENT NEG 160 3 14.3 DATA DECODER MLPX 076 4 ------- DOUBLE BCD DATA ENCODER ASCII CONVERT ASCII TO HEX DMPX ASC HEX 077 086 4 4 --- 19.6 Decoding 1 digit (4 to 16) 31.0 Decoding 4 digits (4 to 16) 79.4 Decoding 1 digit (8 to 256) 138.2 Decoding 2 digits (8 to 256) 32.5 Encoding 1 digit (16 to 4) 63.0 Encoding 4 digits (16 to 4) 68.0 Encoding 1 digit (256 to 8) 112.3 Encoding 2 digits (256 to 8) 22.8 Converting 1 digit into ASCII 24.7 Converting 4 digits into ASCII Converting 1 digit 162 4 18.4 FUN No. Length (steps) ON execution time (µs) Logic Instructions Instruction Mnemonic Conditions LOGICAL AND ANDW 034 4 18.6 --- DOUBLE LOGICAL AND ANDL 610 4 20.4 --- LOGICAL OR ORW 035 4 18.6 --- DOUBLE LOGICAL OR ORWL 611 4 20.4 --- EXCLUSIVE OR XORW 036 4 18.6 --- DOUBLE EXCLUSIVE OR XORL 612 4 20.4 --- COMPLEMENT COM 029 2 12.4 --- DOUBLE COMPLEMENT COML 614 2 13.6 --- Special Math Instructions Instruction ARITHMETIC PROCESS BIT COUNTER 3-8 Mnemonic APR BCNT FUN No. Length (steps) 069 4 067 4 ON execution time (µs) Conditions 34.2 Designating SIN and COS 25.9 Designating line-segment approximation 19.5 Counting 1 word CP1E CPU Unit Instructions Reference Manual(W483) 3 Instruction Execution Times and Number of Steps Floating-point Math Instructions Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions FLOATING TO 16-BIT FIX 450 3 15.9 --- FLOATING TO 32-BIT FIXL 451 3 16.2 --- 16-BIT TO FLOATING FLT 452 3 16.2 --- 32-BIT TO FLOATING FLTL 453 3 17.1 --- FLOATING-POINT ADD +F 454 4 24.1 --- FLOATING-POINT SUBTRACT -F 455 4 25.2 --- FLOATING-POINT DIVIDE /F 457 4 25.0 --- FLOATING-POINT MULTIPLY ∗F 456 4 24.4 --- 3 11.6 Floating Symbol Comparison 3-1 CP1E CPU Unit Instruction Execution Times and Number of Instruction LD,AND,OR+=F 329 LD,AND,OR+<>F 330 --- --- LD,AND,OR+F 333 --- LD,AND,OR+>=F 334 --- FLOATING- POINT TO ASCII FSTR 448 4 56.8 --- ASCII TO FLOATING-POINT FVAL 449 3 42.9 --- 3 Table Data Processing Instructions Instruction SWAP BYTES FRAME CHECKSUM Mnemonic SWAP FCS FUN No. Length (steps) 637 3 180 ON execution time (µs) 16.8 Conditions Swapping 1 word 6250.0 Swapping 1,000 words 24.1 For 1-word table length 4 2710.0 For 1,000-word table length Data Control Instructions Instruction PID CONTROL WITH AUTOTUNING TIME-PROPORTIONAL OUTPUT Mnemonic PIDAT TPO FUN No. Length (steps) ON execution time (µs) 191 4 316.0 685 4 Conditions Initial execution of PID processing 270.0 PID processing When sampling 228.0 PID processing When not sampling 275.5 Initial execution of autotuning 276.0 Autotuning when sampling 5.8 OFF execution time 40.8 ON execution time with duty designation or displayed output limit 43.4 ON execution time with manipulated variable designation and output limit enabled SCALING SCL 194 4 24.8 --- SCALING 2 SCL2 486 4 20.2 --- SCALING 3 SCL3 487 4 26.4 --- AVERAGE AVG 195 4 CP1E CPU Unit Instructions Reference Manual(W483) 24.2 Average of an operation 225.5 Average of 64 operations 3-9 3 Instruction Execution Times and Number of Steps Subroutine Instructions Instruction Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions SUBROUTINE CALL SBS 091 2 6.6 --- SUBROUTINE ENTRY SBN 092 2 2.6 --- SUBROUTINE RETURN RET 093 1 3.1 --- FUN No. Length (steps) ON execution time (µs) Conditions 15.1 Set 15.1 Reset Interrupt Control Instructions Instruction Mnemonic SET INTERRUPT MASK MSKS 690 3 CLEAR INTERRUPT CLI 691 3 14.9 Set 18.0 Reset DISABLE INTERRUPTS DI 693 1 8.5 --- ENABLE INTERRUPTS EI 694 1 8.9 --- High-speed Counter and Pulse Output Instructions Instruction MODE CONTROL HIGH-SPEED COUNTER PV Mnemonic INI PRV FUN No. Length (steps) ON execution time (µs) 880 4 46.0 Starting high-speed counter comparison 31.8 Stopping high-speed counter comparison 48.7 Changing pulse output PV 35.2 Changing high-speed counter PV 881 4 READ COMPARISON TABLE LOAD SPEED OUTPUT 3-10 CTBL SPED 882 885 4 4 Conditions 27.2 Stopping pulse output 13.0 Stopping PWM(891) output 40.0 Reading pulse output PV 35.0 Reading high-speed counter PV 37.2 Reading pulse output status 32.6 Reading high-speed counter status 24.5 Reading PWM(891) status 36.5 Reading high-speed counter range comparison results 29.1 Reading frequency of high-speed counter 0 69.3 Registering target value table and starting comparison for 1 target value 116.3 Registering target value table and starting comparison for 6 target values 126.6 Registering range table and starting comparison 46.3 Only registering target value table for 1 target value 93.3 Only registering target value table for 6 target values 122.5 Only registering range table 69.2 Continuous mode 74.0 Independent mode SET PULSES PULS 886 4 44.1 --- PULSE OUTPUT PLS2 887 5 97.6 --- CP1E CPU Unit Instructions Reference Manual(W483) 3 Instruction Execution Times and Number of Steps Instruction Mnemonic ACCELERATION CONTROL ACC ORG PULSE WITH VARIABLE DUTY FACTOR PWM Length (steps) ON execution time (µs) 888 4 75.6 Continuous mode 82.8 Independent mode 52.2 Origin search 126.8 Origin return 889 891 3 4 Conditions 28.9 3-1 CP1E CPU Unit Instruction Execution Times and Number of ORIGIN SEARCH FUN No. --- Step Instructions Instruction Mnemonic FUN No. Length (steps) ON execution time (µs) 10.5 Step control bit ON 10.4 Step control bit OFF Conditions STEP DEFINE STEP 008 2 STEP START SNXT 009 2 9.6 --- FUN No. Length (steps) ON execution time (µs) Conditions 097 3 3 I/O Unit Instructions Instruction I/O REFRESH Mnemonic IORF 170.7 Refreshing 1 input word for CP1W Expansion Unit 146.6 Refreshing 1 output word for CP1W Expansion Unit 1725.8 Refreshing 12 input words for CP1W Expansion Unit 1359.9 Refreshing 12 output words for CP1W Expansion Unit 7-SEGMENT DECODER SDEC 078 4 21.9 MATRIX INPUT MTR 213 5 31.6 7-SEGMENT DISPLAY OUTPUT 7SEG 214 5 --Data input value: 00 31.6 Data input value:FF 27.1 4 digits 30.8 8 digits Serial Communications Instructions Instruction TRANSMIT RECEIVE Mnemonic TXD RXD FUN No. Length (steps) 236 4 235 4 ON execution time (µs) Conditions 25.0 Sending 1 byte 25.0 Sending 256 bytes 39.2 Storing 1 byte 256.6 Storing 256 bytes Clock Instructions Instruction Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions CALENDAR ADD CADD 730 4 56.6 --- CALENDAR SUBTRACT CSUB 731 4 55.1 --- CLOCK ADJUSTMENT DATE 735 2 29.9 --- CP1E CPU Unit Instructions Reference Manual(W483) 3-11 3 Instruction Execution Times and Number of Steps Failure Diagnosis Instructions Instruction FAILURE ALARM SEVERE FAILURE ALARM Mnemonic FAL FALS FUN No. Length (steps) ON execution time (µs) 006 3 55.6 Recording errors 79.6 Deleting errors (in order of priority) 007 3 Conditions 61.6 Deleting errors (all errors) 60.0 Deleting errors (individually) --- --- Other Instructions Instruction 3-12 Mnemonic FUN No. Length (steps) ON execution time (µs) Conditions 32.6 --- SET CARRY STC 040 1 CLEAR CARRY CLC 041 1 3.9 --- EXTEND MAXIMUM CYCLE TIME WDT 094 2 11.7 --- CP1E CPU Unit Instructions Reference Manual(W483) Monitoring and Computing the Cycle Time This section describes how to monitor and calculate the cycle time of a CP1E CPU Unit that can be used in the programs. 4-1 Monitoring the Cycle Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 4-1-1 Monitoring the Cycle Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 4-2 Computing the Cycle Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 4-2-1 4-2-2 4-2-3 4-2-4 4-2-5 CPU Unit Operation Flowchart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cycle Time Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I/O Refresh Times for PLC Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cycle Time Calculation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Increase in Cycle Time for Online Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . CP1E CPU Unit Instructions Reference Manual(W483) 4-3 4-4 4-5 4-6 4-6 4-1 4 4 Monitoring and Computing the Cycle Time 4-1 Monitoring the Cycle Time 4-1-1 Monitoring the Cycle Time The average, maximum, and minimum cycle times can be monitored when the CX-Programmer is connected online to a CPU Unit. Monitoring the Average Value While connected online to the PLC, the average cycle time is displayed in the status bar when the CPU Unit is in any mode other than PROGRAM mode. Monitoring Maximum and Minimum Values Select PLC Setting - PLC Information - Cycle Time from the PLC Menu. The following PLC Cycle Time Dialog Box will be displayed. The average (mean), maximum, and minimum cycle times will be displayed in order from the top. Click the Reset Button to recalculate and display the cycle time values. Additional Information The cycle time present value and maximum value are stored in the following Auxiliary Area words. • Cycle time present value (0.1-ms increments): A264 (lower bytes) and A265 (upper bytes) • Maximum Cycle Time (0.1-ms increments): A262 (lower bytes) and A263 (upper bytes) 4-2 CP1E CPU Unit Instructions Reference Manual(W483) 4 4-2 4-2-1 Monitoring and Computing the Cycle Time Computing the Cycle Time CPU Unit Operation Flowchart 4-2 Computing the Cycle Time The CPU Unit processes data in repeating cycles from the overseeing processing up to peripheral servicing as shown in the following diagram. Startup initialization Power ON Checks Unit connection status Overseeing processing Error 4-2-1 CPU Unit Operation Flowchart Checks hardware and user program memory 4 Check OK? Normal Flashing (nonfatal error) User program executed Cyclic task executed Lit (fatal error) NO End of program? Peripheral servicing CP1E CPU Unit Instructions Reference Manual(W483) I/O refresh I/O refresh Peripheral servicing Calculates cycle time Cycle time calculation YES Waits until the set cycle time has elapsed (when the minimum cycle time is valid) PLC cycle time ERR/ALM indicator ON or flashing? Program execution Sets error flags 4-3 4 Monitoring and Computing the Cycle Time 4-2-2 Cycle Time Overview The cycle time depends on the following conditions. • Type and number of instructions in the user program (cyclic tasks and all interrupt tasks for which the execution conditions have been satisfied) • Type and number of CP-series Expansion Units and Expansion I/O Units • Minimum (constant) cycle time setting in the PLC Setup • Use of peripheral USB and serial ports Precautions for Correct Use When the mode is switched from MONITOR mode to RUN mode, the cycle time may be extended by 10 ms (this will not, however, cause a cycle time exceeded error). The cycle time is the total time required for the PLC to perform the operations given in the following tables. Cycle time = (1) + (2) + (3) + (4) + (5) (1) Overseeing Processing time and fluctuation cause Operation Checks the I/O bus and user memory, checks for battery errors, etc. 0.4 ms min. (2) Program Execution Processing time and fluctuation cause Operation Executes the instructions in the user program. The time required is the total of the executions times for all instructions. Total instruction execution time. (3) Cycle Time Calculation for Minimum Cycle Time Operation Processing time and fluctuation cause Waits for the specified cycle time to elapse when a minimum (constant) cycle time has been set in the PLC Setup. When a minimum cycle time is not set, the time for step 3 is approximately 0. Calculates the cycle time. When a minimum cycle time is set, the time for step 3 is the preset fixed cycle time minus the actual cycle time ((1) + (2) + (4) + (5)). (4) I/O Refreshing Processing time and fluctuation cause Operation CPU Unit built-in I/O, CPU Unit built-in analog I/O (NAtype only), CP-series Expansion Units and Expansion I/O Units 4-4 Outputs from the CPU Unit to the actual outputs are refreshed first for each Unit, and then inputs. I/O refresh time for each Unit multiplied by the number of Units used. CP1E CPU Unit Instructions Reference Manual(W483) 4 Monitoring and Computing the Cycle Time (5) Peripheral Servicing Operation Services peripheral USB port Processing time and fluctuation cause In this servicing, 8% of the previous cycle’s cycle time (calculated in step (3)) will be allowed for peripheral servicing. Services serial port 4-2-3 I/O Refresh Times for PLC Units  I/O Refresh Times for Built-in Analog I/O (NA-type CPU Unit only) NA-type CPU Unit Unit name 20-point I/O + Analog I/O CPU Unit Model numbers CP1E-NA20D- I/O refresh time per unit 0.5 ms Note No matter whether use analog I/O function or not, the I/O refresh time is the same. 4-2 Computing the Cycle Time (Built-in RS-232C port, serial option board) 4  I/O Refresh Times for CP-series Expansion Units and Expansion I/O Units Unit name 8-point Input Unit 8-point Output Unit 16-point Output Unit 20-point I/O Unit 32-point Output Unit 40-point I/O Unit Expansion Unit Analog Input Unit Analog Output Unit Analog I/O Units Temperature Sensor Unit CompoBus/S I/O Link Unit Model numbers CP1W-8ED CP1W-8ER CP1W-8ET CP1W-8ET1 CP1W-16ER CP1W-16ET CP1W-16ET1 CP1W-20EDR1 CP1W-20EDT CP1W-20EDT1 CP1W-32ER CP1W-32ET CP1W-32ET1 CP1W-40EDR CP1W-40EDT CP1W-40EDT1 CP1W-AD041 CP1W-DA041 CP1W-MAD11 CP1W-TS001 CP1W-TS002 CP1W-TS101 CP1W-TS102 CP1W-SRT21 I/O refresh time per unit 0.14 ms 0.06 ms 0.17 ms 0.20 ms 0.33 ms 0.45 ms 0.72 ms 0.33 ms 0.36 ms 0.30 ms 0.57 ms 0.30 ms 0.57 ms 0.20 ms Additional Information The I/O refresh time for the built-in I/O of the CPU Unit is included in overseeing processing. CP1E CPU Unit Instructions Reference Manual(W483) 4-5 4-2-3 I/O Refresh Times for PLC Units Expansion I/O Unit 4 Monitoring and Computing the Cycle Time 4-2-4 Cycle Time Calculation Example The following example shows the method used to calculate the cycle time when Expansion I/O Units are connected to a CP1E CPU Unit.  Conditions Item Description CP1E CPU Unit 40-point I/O Unit 1 Unit CP1W-40EDR Ladder diagram 5K steps LD instructions: 2.5K steps OUT instructions: 2.5K steps Peripheral USB port connection Yes or no Minimum cycle time processing None Serial port connection None Other peripheral servicing None  Calculation Example Processing time Process name Equation Peripheral USB port connected Peripheral USB port not connected − 0.4 ms 0.4 ms 7.0 ms 7.0 ms (1)Overseeing (2)Program execution 4-2-5 1.19µs×2,500+1.61µs×2,500 (3)Cycle time calculation (Minimum cycle time not set.) 0 ms 0 ms (4)I/O refreshing 0.45 ms 0.45 ms 0.45 ms (5)Peripheral servicing (Only peripheral USB port connected) 0.2 ms 0 ms Cycle time (1)+(2)+(3)+(4)+(5) 8.15 ms 7.85 ms Increase in Cycle Time for Online Editing When online editing is executed to change the program from the CX-Programmer while the CPU Unit is operating in MONITOR mode, the CPU Unit will momentarily suspend operation while the program is being changed. The cycle time is extended by the writing programs for the CPU Unit. And the schedule task will not be executed while the CPU Unit suspends operation. If the program size is 8K steps, the cycle time extension will be as follows: CPU Unit CP1E CPU Unit Increase in cycle time for online editing Maximum: 16 ms, Normal: 6 ms (for a program size of 8K steps) When editing online, the cycle time will be extended and the schedule task execution may be delayed or become abnormal according to the editing that is performed. 4-6 CP1E CPU Unit Instructions Reference Manual(W483) pp Appendices CP1E CPU Unit Instructions Reference Manual(W483) A-1 App Alphabetical List of Instructions by Mnemonic . . . . . . . . . . . . . . . . . . . . . . . . . . A-2 Appendices Alphabetical List of Instructions by Mnemonic A Mnemonic ACC Instruction ACCELERATION CONTROL FUN No. Upward differentiation Downward differentiation Immediate refreshing specification 888 @ACC --- --- Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Page Page AND --- --- --- 2-88 AND DOUBLE SIGNED LESS THAN OR EQUAL 318 --- --- --- 2-88 AND GREATER THAN 320 AND<= SL AND>= 325 --- --- --- 2-88 AND<> AND NOT EQUAL 305 --- --- --- 2-88 AND GREATER THAN OR EQUAL --- --- 2-91 342 --- --- --- 2-91 AND TIME GREATER THAN OR EQUAL --- AND TIME NOT EQUAL AND>= DT 346 AND<> DT AND<>F AND FLOATING NOT EQUAL 330 --- --- --- 2-241 334 --- --- --- 2-241 AND<>L 306 --- --- --- 2-88 AND>=F AND FLOATING GREATER THAN OR EQUAL AND>=L AND DOUBLE GREATER THAN OR EQUAL 326 --- --- --- 2-88 AND>=S AND SIGNED GREATER THAN OR EQUAL 327 --- --- --- 2-88 AND DOUBLE NOT EQUAL --- --- --- 2-91 AND<>S AND SIGNED NOT EQUAL 307 --- --- --- 2-88 AND<> SL AND DOUBLE SIGNED NOT EQUAL 308 --- --- --- 2-88 AND< DT AND TIME 343 LESS THAN --- --- --- 2-91 A-2 CP1E CPU Unit Instructions Reference Manual(W483) Appendices Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Page 328 --- --- --- 2-88 AND> DT AND TIME GREATER THAN 345 --- --- --- 2-91 AND>F AND FLOATING GREATER THAN 333 AND DOUBLE GREATER THAN 321 AND SIGNED GREATER THAN 322 AND DOUBLE SIGNED GREATER THAN 323 DOUBLE LOGICAL AND 610 ANDW LOGICAL AND 034 @ANDW --- --- APR ARITHMETIC PROCESS 069 @APR --- ASC ASCII CONVERT 086 @ASC ASL ARITH025 METIC SHIFT LEFT @ASL ARITHMETIC SHIFT RIGHT 026 @ASR AVERAGE 195 AND>L AND>S AND> SL ANDL ASR AVG --- --- --- Instruction Upward differentiation Downward differentiation Immediate refreshing specification Page BINL DOUBLE BCD TO DOUBLE BINARY 058 @BINL --- --- 2-185 BREAK BREAK LOOP 514 --- --- --- 2-59 BSET BLOCK SET 071 @BSET --- --- 2-119 FUN No. Upward differentiation Downward differentiation Immediate refreshing specification 2-241 C --- --- --- 2-88 Mnemonic --- --- @ANDL --- Instruction Page CADD CALENDAR ADD 730 @CADD --- --- 2-380 CJP CONDITIONAL JUMP 510 --- --- --- 2-53 CLC CLEAR CARRY 041 @CLC --- --- 2-398 CLI CLEAR INTERRUPT 691 @CLI --- --- 2-303 CMP COMPARE 020 --- --- !CMP 2-95 2-210 CMPL DOUBLE COMPARE 060 --- --- --- 2-95 --- 2-218 CNR RESET 545 TIMER/COU NTER @CNR --- --- 2-86 --- --- 2-201 CNRX RESET 547 TIMER/COU NTER @CNRX --- --- 2-86 --- --- 2-133 CNT COUNTER --- --- --- --- 2-80 CNTR REVERSIBLE COUNTER 012 --- --- --- 2-83 CNTRX REVERSIBLE COUNTER 548 --- --- --- 2-83 CNTX COUNTER 546 --- --- --- 2-80 COLL DATA COLLECT 081 @COLL --- --- 2-125 COM COMPLEMENT 029 @COM --- --- 2-216 COML DOUBLE COMPLEMENT 614 @COML --- --- 2-216 CPS SIGNED BINARY COMPARE 114 --- --- !CPS 2-98 CPSL DOUBLE SIGNED BINARYCOMPARE 115 --- --- --- 2-98 CSUB CALENDAR SUBTRACT 731 @CSUB --- --- 2-380 CTBL REGISTERCOMPARISON TABLE 882 @CTBL --- --- 2-315 --- --- --- --- --- --- --- --- --- --- 2-88 2-88 2-210 2-134 2-287 B Mnemonic FUN No. FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Page BCD BINARY TO BCD 024 @BCD --- --- 2-187 BCDL DOUBLE BINARY TO DOUBLE BCD 059 @BCDL --- --- 2-187 BCMP BLOCK COMPARE 068 @BCMP --- --- 2-103 BCNT BIT COUNTER 067 @BCNT --- --- 2-227 BIN BCD TO BINARY 023 @BIN --- --- 2-185 CP1E CPU Unit Instructions Reference Manual(W483) A-3 App AND DBL SIGNED GREATER THAN OR EQUAL Instruction Alphabetical List of Instructions by Mnemonic AND>= SL Mnemonic Appendices D Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Mnemonic CLOCK ADJUSTMENT 735 @DATE --- --- 2-385 DI DISABLE INTERRUPTS 693 @DI --- --- 2-306 DIFD DIFFERENTIATE DOWN 014 --- --- !DIFD 2-27 DIFU DIFFERENTIATE UP 013 --- --- !DIFU 2-25 SINGLE WORD DISTRIBUTE 080 @DIST --- --- 2-123 DMPX DATA ENCODER 077 @DMPX --- --- 2-196 DOWN CONDITION OFF 522 --- --- --- 2-17 DSW DIGITAL SWITCH INPUT 210 --- --- --- 2-357 E END FUN No. Upward differentiation Downward differentiation Immediate refreshing specification ENABLE INTERRUPTS 694 --- --- --- END 001 --- 512 --- --- --- 2-56 448 @FSTR --- --- 2-244 FVAL ASCII TO FLOATINGPOINT 449 @FVAL --- --- 2-249 FUN No. Upward differentiation Downward differentiation Immediate refreshing specification 162 @HEX --- --- FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Mnemonic HEX Instruction ASCII TO HEX Page 2-205 I Instruction Page INI MODE CONTROL 880 @INI --- --- 2-308 IORF I/O REFRESH 097 @IORF --- --- 2-352 FUN No. Upward differentiation Downward differentiation Immediate refreshing specification 2-307 J --- --- --- 2-38 FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Instruction Page JME JUMP END 005 --- --- --- 2-53 JMP JUMP 004 --- --- --- 2-53 Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification KEEP 011 --- --- !KEEP Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification LD LOAD --- @LD %LD !LD 2-7 LD=DT LOAD DATE EQUAL 341 --- --- --- 2-91 LD =S LOAD SIGNED EQUAL 302 --- --- --- 2-88 Page K FAL FAILURE ALARM 006 @FAL --- --- 2-387 FALS SEVERE FAILURE ALARM 007 --- --- --- 2-393 FCS FRAME CHECKSUM 180 @FCS --- --- 2-255 KEEP FIX FLOATING TO 16-BIT 450 @FIX --- --- 2-233 L FIXL FLOATING TO 32-BIT 451 @FIXL --- --- 2-233 FLT 16-BIT TO FLOATING 452 @FLT --- --- 2-235 FLTL 32-BIT TO FLOATING 453 @FLTL --- --- 2-235 A-4 Page FLOATINGPOINT TO ASCII Page F Instruction Immediate refreshing specification FSTR Mnemonic Mnemonic Downward differentiation FOR Mnemonic EI Upward differentiation H DIST Instruction FUN No. Page DATE Mnemonic Instruction Mnemonic Mnemonic Page 2-21 Page CP1E CPU Unit Instructions Reference Manual(W483) Appendices Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Page --- --- --- !LD NOT 2-7 LOAD LESS THAN 310 --- --- --- 2-88 LD<= LOAD LESS THAN OR EQUAL 315 --- --- --- 2-88 LD<= DT LOAD DATE LESS THAN OR EQUAL 344 --- --- --- 2-91 LD<=F LOAD FLOATING LESS THAN OR EQUAL 332 --- --- --- 2-241 LD<=L LOAD DOU- 316 BLE LESS THAN OR EQUAL --- --- --- 2-88 LD<=S LOAD SIGNED LESS THAN OR EQUAL 317 --- --- --- 2-88 LD<= SL LOAD DOU- 318 BLE SIGNED LESS THAN OR EQUAL --- --- --- 2-88 LD<> LOAD NOT EQUAL 305 --- --- --- 2-88 LD<> DT LOAD DATE NOT EQUAL 342 --- --- --- 2-91 LD<>F LOAD FLOATING NOT EQUAL 330 --- --- --- 2-241 LD<>L LOAD DOU- 306 BLE NOT EQUAL --- --- --- 2-88 LD<>S LOAD SIGNED NOT EQUAL --- --- --- 2-88 307 LD<> SL LOAD DOU- 308 BLE SIGNED NOT EQUAL --- --- --- 2-88 LD
LOAD GREATER THAN 320 --- --- --- 2-88 LD>= LOAD GREATER THAN OR EQUAL 325 --- --- --- 2-88 LD>= DT LOAD DATE GREATER THAN OR EQUAL 346 --- --- --- 2-91 LD>=F LOAD FLOATING GREATER THAN OR EQUAL 334 --- --- --- 2-241 LD>=L LOAD DOU- 326 BLE GREATER THAN OR EQUAL --- --- --- 2-88 LD>=S LOAD SIGNED GREATER THAN OR EQUAL 327 --- --- --- 2-88 LD>= SL LOAD DBL SIGNED GREATER THAN OR EQUAL 328 --- --- --- 2-88 LD>DT LOAD DATE GREATER THAN 345 --- --- --- 2-91 LD>F LOAD FLOATING GREATER THAN 333 --- --- --- 2-241 LD>L LOAD DOU- 321 BLE GREATER THAN --- --- --- 2-88 LD>S LOAD SIGNED GREATER THAN 322 --- --- --- 2-88 LD>SL LOAD DOU- 323 BLE SIGNED GREATER THAN --- --- --- 2-88 A-5 App LOAD NOT Instruction Alphabetical List of Instructions by Mnemonic LD NOT LD< Mnemonic Appendices M O FUN No. Upward differentiation Downward differentiation Immediate refreshing specification MULTIINTERLOCK CLEAR 519 --- --- --- MULTIINTERLOCK DIFFERENTIAT IONHOLD 517 MULTIINTERLOCK DIFFERENTIAT IONRELEASE 518 MLPX DATA DECODER 076 @MLPX --- --- 2-191 MOV MOVE 021 @MOV --- !MOV 2-108 MOVB MOVE BIT 082 @MOVB --- --- 2-111 MOVD MOVE DIGIT 083 @MOVD --- --- 2-113 MOVL DOUBLE MOVE 498 @MOVL --- --- 2-108 Mnemonic MILC MILH MILR Instruction --- --- --- --- --- --- Page 2-44 2-44 2-44 MSKS SET INTER- 690 RUPT MASK @MSKS --- --- 2-300 MTR MATRIX INPUT 213 --- --- --- 2-361 MVN MOVE NOT 022 @MVN --- --- 2-108 N Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification SHIFT NBITS LEFT 580 @NASL --- --- 2-141 NASR SHIFT N581 BITS RIGHT @NASR --- --- 2-144 NEG 2'S COMPLEMENT 160 @NEG --- --- 2-189 NEXT --- 513 --- --- --- 2-56 NOP NO OPERA- 000 TION --- --- --- 2-39 NOT NOT 520 --- --- --- 2-16 NSLL DOUBLE SHIFT NBITS LEFT 582 @NSLL --- --- 2-141 DOUBLE SHIFT NBITSRIGHT 583 A-6 @NSRL --- --- Upward differentiation Downward differentiation Immediate refreshing specification Instruction FUN No. OR OR --- @OR %OR !OR 2-11 ORG ORIGIN SEARCH 889 @ORG --- --- 2-336 Page OR LD OR LOAD --- --- --- --- 2-13 OR NOT OR NOT --- --- --- !OR NOT 2-11 OR< OR LESS THAN 310 --- --- --- 2-88 OR<= OR LESS THAN OR EQUAL 315 --- --- --- 2-88 OR<= DT OR DATE LESS THAN OR EQUAL 344 --- --- --- 2-91 OR<=F OR FLOATING LESS THAN OR EQUAL 332 --- --- --- 2-241 OR<=L OR DOUBLE LESS THAN OR EQUAL 316 --- --- --- 2-88 OR<=S OR SIGNED LESS THAN OR EQUAL 317 --- --- --- 2-88 OR<= SL OR DOUBLE SIGNED LESS THAN OR EQUAL 318 --- --- --- 2-88 OR<> OR NOT EQUAL 305 --- --- --- 2-88 OR<> DT OR DATE NOT EQUA 342 --- --- --- 2-91 OR<>F OR FLOATING NOT EQUAL 330 --- --- --- 2-241 OR<>L OR DOUBLE NOT EQUAL 306 --- --- --- 2-88 OR<>S OR SIGNED NOT EQUAL 307 --- --- --- 2-88 OR<> SL OR DOUBLE SIGNED NOT EQUAL 308 --- --- --- 2-88 OR
OR GREATER THAN 320 --- --- --- 2-88 OR>= OR GREATER THAN OR EQUAL 325 --- --- --- 2-88 OR DATE GREATER THAN OR EQUAL 346 OR>=F OR FLOATING GREATER THAN OR EQUAL 334 --- --- --- 2-241 OR>=L OR DOUBLE GREATER THAN OR EQUAL 326 --- --- --- 2-88 OR>=S OR SIGNED GREATER THAN OR EQUAL 327 --- --- --- 2-88 OR>= SL OR DBL SIGNED GREATER THAN OR EQUAL 328 --- --- --- 2-88 OR DATE GREATER THAN 345 OR>= DT OR>DT OR>F --- --- --- Page Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Page ORWL DOUBLE LOGICAL OR 611 @ORWL --- --- 2-212 OUT OUTPUT --- --- --- !OUT 2-18 OUT NOT OUTPUT NOT --- --- --- !OUT NOT 2-18 FUN No. Upward differentiation Downward differentiation Immediate refreshing specification P Mnemonic Instruction Page PIDAT PID CON191 TROL WITHAUTOTUNING --- --- --- 2-257 PLS2 PULSE OUTPUT 887 @PLS2 --- --- 2-325 PRV HIGHSPEEDCOUNTER PV READ 881 @PRV --- --- 2-311 PULS SET PULSES 886 @PULS --- --- 2-323 PWM PULSE WITH VARIABLEDUTY FACTOR 891 @PWM --- --- 2-339 FUN No. Upward differentiation Downward differentiation Immediate refreshing specification 2-91 R --- --- --- 333 OR>L OR DOUBLE GREATER THAN 321 --- --- --- 2-88 OR>S OR SIGNED GREATER THAN 322 --- --- --- 2-88 OR>SL OR DOUBLE SIGNED GREATER THAN 323 --- --- --- 2-88 ORW LOGICAL OR 035 @ORW --- --- 2-212 --- --- CP1E CPU Unit Instructions Reference Manual(W483) 2-241 Instruction Page RET SUBROUTINE RETURN 093 --- --- --- 2-295 ROL ROTATE LEFT 027 @ROL --- --- 2-135 ROR ROTATE RIGHT 028 @ROR --- --- 2-137 RSET RESET --- @RSET %RSET !RSET 2-29 RSTA MULTIPLE BIT RESET 531 @RSTA --- --- 2-31 RSTB SINGLE BIT RESET 533 @RSTB --- !RSTB 2-33 RXD RECEIVE 235 @RXD --- --- 2-374 2-91 OR FLOATING GREATER THAN --- Mnemonic A-7 App FUN No. Alphabetical List of Instructions by Mnemonic Instruction Mnemonic Appendices S Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Mnemonic SUBROUTINE ENTRY 092 --- --- --- 2-295 SBS SUBROUTINE CALL 091 @SBS --- --- 2-290 SCL SCALING 194 @SCL --- --- 2-276 SCL2 SCALING 2 486 @SCL2 --- --- 2-280 SCL3 SCALING 3 487 @SCL3 --- --- 2-284 SDEC 7-SEGMENT DECODER 078 @SDEC --- --- 2-354 SET SET --- @SET %SET !SET 2-29 SETA MULTIPLE BIT SET 530 @SETA --- --- 2-31 SETB SINGLE BIT SET 532 @SETB --- !SETB 2-33 SFT SHIFT REGISTER 010 --- --- --- 2-127 SFTR REVERSIBLE SHIFT REGISTER 084 @SFTR --- --- 2-129 Upward differentiation Downward differentiation Immediate refreshing specification ONE DIGIT 074 SHIFT LEFT @SLD --- --- 2-139 SNXT STEP START 009 --- --- --- 2-342 SPED SPEED OUTPUT 885 @SPED --- --- 2-319 SRD ONE DIGIT SHIFT RIGHT 075 @SRD --- --- 2-139 STC SET CARRY 040 @STC --- --- 2-398 STEP STEP DEFINE 008 --- --- --- 2-342 SWAP SWAP BYTES 637 @SWAP --- --- 2-253 Page TMHHX ONE-MS TIMER 552 --- --- --- 2-72 TPO TIME-PROPORTIONALOUTPUT 685 --- --- --- 2-269 TR TR Bits --- --- --- --- 2-20 TTIM ACCUMULATIVE TIMER 087 --- --- --- 2-74 TTIMX ACCUMULATIVE TIMER 555 --- --- --- 2-74 TXD TRANSMIT 236 @TXD --- --- 2-369 Instruction FUN No. Upward differentiation Downward differentiatio n Immediate refreshing specification 521 --- --- --- FUN No. Upward differentiation Downward differentiation Immediate refreshing specification U Mnemonic UP SLD CONDITION ON Page 2-17 W Mnemonic Instruction Page WDT EXTEND MAXIMUMCYCLE TIME 094 @WDT --- --- 2-399 WSFT WORD SHIFT 016 @WSFT --- --- 2-131 FUN No. Upward differentiation Downward differentiation Immediate refreshing specification X T Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Mnemonic Instruction Page TCMP TABLE COMPARE 085 @TCMP --- --- 2-101 TIM HUNDREDMS TIMER --- --- --- --- 2-66 TIMH TEN-MS TIMER 015 --- --- --- 2-69 TIMHX TEN-MS TIMER 551 --- --- --- 2-69 TIML LONG TIMER 542 --- --- --- 2-77 TIMLX LONG TIMER 553 --- --- --- 2-77 TIMX HUNDREDMS TIMER 550 --- --- --- 2-66 TMHH ONE-MS TIMER 540 --- --- --- 2-72 A-8 FUN No. Page SBN Mnemonic Instruction Page XCHG DATA 073 EXCHANGE @XCHG --- --- 2-121 XFER BLOCK TRANSFER 070 @XFER --- --- 2-117 XFRB MULTIPLE 062 BIT TRANSFER @XFRB --- --- 2-115 XORL DOUBLE EXCLUSIVE OR 612 @XORL --- --- 2-214 XORW EXCLUSIVE OR 036 @XORW --- --- 2-214 CP1E CPU Unit Instructions Reference Manual(W483) Appendices Z Mnemonic Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification Mnemonic 088 --- --- --- 2-105 ZCPL DOUBLE AREA RANGECOMPARE 116 --- --- --- 2-105 Upward differentiation Downward differentiation Immediate refreshing specification 7-SEGMENT DISPLAY OUTPU 214 --- --- --- + SIGNED BINARY ADDWITHOUT CARRY 400 @+ --- --- 2-158 ++ INCREMENT BINARY 590 @++ --- --- 2-147 ++B INCREMENT BCD 594 @++B --- --- 2-153 ++BL DOUBLE INCREMENT BCD 595 @++BL --- --- 2-153 ++L DOUBLE INCREMENTBINARY 591 @++L --- --- 2-147 +B BCD ADD WITHOUT CARRY 404 @+B --- --- 2-162 +BC BCD ADD WITH CARRY 406 @+BC --- --- 2-164 +BCL DOUBLE BCD ADD WITHCARRY 407 @+BCL --- --- 2-164 +BL DOUBLE BCD ADD WITHOUTCARRY 405 @+BL --- --- 2-162 +C SIGNED BINARY ADD WITHCARRY 402 @+C --- --- 2-160 +CL DOUBLE SIGNED BINARYADD WITH CARRY 403 @+CL --- --- 2-160 FLOATINGPOINT ADD 454 @+F --- --- CP1E CPU Unit Instructions Reference Manual(W483) Immediate refreshing specification Page DOUBLE SIGNED BINARYADD WITHOUT CARRY 401 @+L --- --- 2-158 - SIGNED BINARY SUBTRACTWIT HOUT CARRY 410 @- --- --- 2-166 -- DECREMENT BINARY 592 @-- --- --- 2-150 --B DECREMENT BCD 596 @--B --- --- 2-156 --BL DOUBLE DECREMENT BCD 597 @--BL --- --- 2-156 --L DECREMENT BINARY 593 @--L --- --- 2-150 -B BCD SUBTRACT WITHOUTCARRY 414 @-B --- --- 2-172 -BC BCD SUBTRACT WITHCARRY 416 @-BC --- --- 2-175 -BCL DOUBLE BCD SUBTRACTWIT H CARRY 417 @-BCL --- --- 2-175 -BL DOUBLE BCD SUBTRACTWIT HOUT CARRY 415 @-BL --- --- 2-172 -C SIGNED BINARY SUBTRACTWIT H CARRY 412 @-C --- --- 2-170 -CL DOUBLE SIGNED BINARYSUBTRACT WITH CARRY 413 @-CL --- --- 2-170 -F FLOATINGPOINT SUBTRACT 455 @-F --- --- 2-237 -L DOUBLE SIGNED BINARYSUBTRACT WITHOUTCARRY 411 @-L --- --- 2-166 * SIGNED BINARY MULTIPLY 420 @* --- --- 2-177 *B BCD MULTI- 424 PLY @*B --- --- 2-179 Page 2-365 2-237 A-9 App FUN No. +F Downward differentiation +L Symbol 7SEG Upward differentiation Alphabetical List of Instructions by Mnemonic AREA RANGE COMPARE Instruction FUN No. Page ZCP Mnemonic Instruction Appendices Instruction FUN No. Upward differentiation Downward differentiation Immediate refreshing specification ASCII Code Table Page Four leftmost bits *BL DOUBLE 425 BCD MULTIPLY @*BL --- --- 2-179 *F FLOATINGPOINT MULTIPLY 456 @*F --- --- 2-237 *L DOUBLE SIGNED BINARYMULTIPLY 421 @*L --- --- 2-177 / SIGNED BINARY DIVIDE 430 @/ --- --- 2-181 /B BCD DIVIDE 434 @/B --- --- 2-183 /BL DOUBLE BCD DIVIDE 435 @/BL --- --- 2-183 /F FLOATINGPOINT DIVIDE 457 @/F --- --- 2-237 /L DOUBLE SIGNED BINARYDIVIDE 431 @/L --- --- 2-181 A-10 Four rightmost bits Mnemonic CP1E CPU Unit Instructions Reference Manual(W483) Revision History A manual revision code appears as a suffix to the catalog number on the front cover of the manual. Cat. No. W483-E1-03 Revision code Revision code 01 02 03 Date March 2009 June 2009 January 2010 Revised content Original production Errors were corrected. Information added on E10/14, N14/60 and NA20 CPU Units. Revision-1 Revision-2 OMRON Corporation Industrial Automation Company Authorized Distributor: Tokyo, JAPAN Contact: www.ia.omron.com Regional Headquarters OMRON EUROPE B.V. Wegalaan 67-69-2132 JD Hoofddorp The Netherlands Tel: (31)2356-81-300/Fax: (31)2356-81-388 OMRON ELECTRONICS LLC One Commerce Drive Schaumburg, IL 60173-5302 U.S.A. Tel: (1) 847-843-7900/Fax: (1) 847-843-7787 OMRON ASIA PACIFIC PTE. LTD. No. 438A Alexandra Road # 05-05/08 (Lobby 2), Alexandra Technopark, Singapore 119967 Tel: (65) 6835-3011/Fax: (65) 6835-2711 OMRON (CHINA) CO., LTD. Room 2211, Bank of China Tower, 200 Yin Cheng Zhong Road, PuDong New Area, Shanghai, 200120, China Tel: (86) 21-5037-2222/Fax: (86) 21-5037-2200 © OMRON Corporation 2009 All Rights Reserved. In the interest of product improvement, specifications are subject to change without notice. Cat. No. W483-E1-03 0110

Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Page Count                      : 467
XMP Toolkit                     : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-20:48:00
Producer                        : Acrobat Distiller 6.0 (Windows)
Keywords                        : OMRON, SYSMAC, CP1E, CP1, PLC, Instruction Reference Manual
Creator Tool                    : FrameMaker 7.1
Modify Date                     : 2010:02:15 11:16:27+03:00
Create Date                     : 2010:01:11 14:57:45+08:00
Metadata Date                   : 2010:02:15 11:16:27+03:00
Document ID                     : uuid:407c77a9-2db1-453c-9673-2a0f5c56ff06
Instance ID                     : uuid:b7a0863a-46a4-417b-ae54-1c4e91e2b405
Format                          : application/pdf
Title                           : SYSMAC CP Series CP1E-E__D_-_ CP1E-N__D_-_ CP1E-NA__D_-_ CP1E CPU Unit
Creator                         : OMRON
Description                     : OMS
Subject                         : OMRON, SYSMAC, CP1E, CP1, PLC, Instruction Reference Manual
Author                          : OMRON
Warning                         : [Minor] Ignored duplicate Info dictionary
EXIF Metadata provided by EXIF.tools

Navigation menu