nbhkdz.com冰点文库

CX-Programmer

时间:2013-01-15


W447-CN5-02

: W447-CN5-02 CX-Programmer 6.1

CX-Programmer
6.1 WS02-CXPC1-E-V61 CS1-H, CJ1-H, CJ1M, CP1H CPU NSJ, FQM1

W447-CN5-02
200606S01

CX-Programmer
6.1 版 WS02-CXPC1-E-V61 CS1-H, CJ1-H, CJ1M, CP1H CPU 单元 NSJ, FQM1 操作手册 功能块
于 2006 年 06 月修订

iv

注意:
欧姆龙产品是为合格的操作人员按照正常步骤使用,并只为本手册中所叙述的目的而制造的。 下列约定是用来指出本手册中的注意事项,并对其进行分类。始终注意它们所规定的情况。不注意这些 事项可能导致对人体的伤害或危及财产。

! 危险
!
!

表示一个紧迫的危险情况,如不避免可能导致死亡或严重伤害。 表示一个潜在的危险情况,如不避免可能导致死亡或严重伤害。 表示一个潜在的危险情况,如不避免可能导致轻度或中度伤害,或财产损失。

警告 注意

欧姆龙产品附注
所有欧姆龙产品在本手册中都用大写字母表示,当 “单元”表示欧姆龙产品时,它也以大写字母表示, 不管它是否以产品的正式名称表示。 缩写 “Ch”出现在某些显示中和某些欧姆龙产品上,往往表示 “字” ,在这个意义上在文件中缩写为 “Wd” 。 缩写 “PLC”表示可编程序控制器,但是 “PLC”在某些编程设备的显示中也表示可编程序控制器。

直观标题
列在本手册左侧的下列标题是帮助读者确定各种不同类型的资料。 注 1,2,3... 表示对有效而方便地运用产品特别重要的资料。 1. 表示一种或另一种的列举说明,如步骤,检查表等。

? OMRON, 2003
版权所有,事先未经欧姆龙公司书面许可,本手册中的任何部分不可用任何形式,或用任何方法,机械的、电子的、 照相、录制或其他方式进行复制、存入检索系统或传送。 关于使用这里所包含的资料不负专利责任。然而,因为欧姆龙公司不断努力改进其高质量的产品,所以本手册中所 含有的资料可随时改变而不另行通知。在编写本手册时,注意了一切可能的注意事项,对于仍然可能出现的错误或 遗漏欧姆龙公司将不承担责任,对于使用本手册中所包含的资料导致的损害也将不承担任何责任。

v

vi

目录
注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2 3 4 所面对的读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一般注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 安全注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 应用注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

xv
xvi xvi xvi xvii

第1章 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-1 1-2 1-3 1-4 1-5 1-6 功能块介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 将功能块定义转换为库文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 版本升级信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
2 8 14 18 18 19

第2章 技术规格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 功能块规格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 实例规格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块应用指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 规定多字中第一个字或最后一个字的操作数指令注意事项 . . . . . . . . . . . . . . . . . . . . . . 指令支持和操作数限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CPU 单元的功能块规格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块程序步骤数和实例执行时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23
25 35 43 47 55 57 111 116

第3章 创建功能块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3-1 3-2 程序流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 122

附录
A B C 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 结构化文本 (ST 语言) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 外部变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 157 183

vii

目录

viii

关于本手册:
本手册描述功能块及 6.1 版本的 CX-Programmer 与 CP1H CPU 单元和 3.0 版本以上的 CS1-H、 CJ1-H、 CJ1M CPU 单元一同使用时的相关功能,并包含下一页所述的部分。 6.1 版本的 CX-Programmer 是允许个人计算机被当作功能块编程设备,并可用于支持功能块的 SYSMAC CS 系列和 CJ 系列 CPU 单元的软件。6.1 版本的 CX-Programmer 功能块功能已作了改进本手册仅描述与 功能块相关的 6.1 版本的 CX-Programmer。对于与功能块无关的操作,请参阅 CX-Programmer 操作手册 (附带,样本编号 W437) 。本手册亦提供 CS1-H、 CJ1-H、 CJ1M 和 CP1H CPU 单元中仅与功能块相关 的信息。其它信息请参阅 CS/CJ/CP 系列手册。 请在尝试安装或操作 6.1 版本 CX-Programmer 或 CS1-H、 CJ1-H、 CJ1M 或 CP1H CPU 单元之前仔细阅读 本手册及相关手册并确保理解其中提供的信息。必须阅读以下章节中提供的注意事项。

ix

与 6.1 版 CX-Programmer 有关的手册
名称 SYSMAC WS02-CXPC1-E-V60 6.1 版 CX-Programmer 功能块操作手册 (CS1G-CPU □□ H, CS1H-CPU □□ H, CJ1G-CPU □□ H, CJ1H-CPU □□ H, CJ1M-CPU □□ , CP1H-X □□□□ - □ , CP1H-XA □□□□ - □ , CP1H-Y □□□□ 样本编号 内容 W447 叙述只有 6.1 版 CX-Programmer 和 CP 系列 CPU 单元或基于 (本手 功能块的 3.0 版以上的 CS/CJ 系列 CPU 单元才具备的功能性。 册)

□ CPU 单元)

与 CS1-H, CJ1-H, CJ1M CPU 单元有关的手册
名称 SYSMAC CS 系列 CS1G/H-CPU □□ -EV1, CS1G/H-CPU □□ H 可编程控制器 操作手册 样本编号 内容 W339 提供了对 CS 系列 PLC 的设计、安装、维护和其它基本操作 的概述并作了说明。 包含以下信息: 概述及特性 系统配置 安装及接线 I/O 存储器分配 故障排除 将本手册随 W394 一同使用。 SYSMAC CJ 系列 CJ1G-CPU □□ , CJ1G/H-CPU □□ H, CJ1G-CPU □□ P, CJ1M-CPU □□ 可编程控制器 操作手册 W393 提供了对 CS 系列 PLC 的设计、安装、维护和其它基本操作 的概述并作了说明。 包含以下信息: 概述及特性 系统配置 安装及接线 I/O 存储器分配 故障排除 将本手册随 W394 一同使用。 SYSMAC CS/CJ 系列 CS1G/H-CPU □□ -EV1, CS1G/H-CPU □□ H, CJ1G-CPU □□ , CJ1G/H-CPU □□ H, CJ1G-CPU □□ P, CJ1M-CPU □□ 可编程控制器 编程手册 W394 叙述了要使用 CS/CJ 系列 PLC 的功能而须进行的编程和其它 方法。 包含以下信息: 编程 任务 文件存储器 其它功能 将本手册随 W339 或 W393 一同使用。 W340 叙述了 CS/CJ 系列 PLC 所支持的梯形图编程指令。 编程时,将本手册随操作手册 (CS1:W339 或 CJ1:W393) 和编程手册 (W394)一同使用。

SYSMAC CS/CJ 系列 CS1G/H-CPU □□ -EV1, CS1G/H-CPU □□ H, CJ1G-CPU □□ , CJ1G/H-CPU □□ H, CJ1G-CPU □□ P, CJ1M-CPU □□ 可编程控制器 指令参考手册

x

内容概述
注意事项提供使用 6.1 版 CX-Programmer 时的一般注意事项。 第 1 章介绍了 CX-Programmer 功能块的功能性,并说明了非功能块版本的 CX-Programmer 中所不包含 的特性。 第 2 章提供了使用功能块时的参考规格,包括功能块、实例和所兼容的 PLC 的规格,还有使用注意事项 和指南。 第 3 章叙述了在 CX-Programmer 上创建功能块的步骤。 附录提供了关于数据类型、结构文本规格和外部变量的信息。

! 警告

若不阅读和理解本手册中所提供的信息可能导致人身伤害或死亡、 产品受损或产品失灵。 请 在尝试任何操作之前完整阅读所有章节并确保理解各章节及其相关章节中提供的信息。

xi

xii

阅读并理解本手册
请在使用产品前阅读并理解本手册。如有任何问题或意见,请联系您的欧姆龙代表。

保证内容和责任限定
保证内容
欧姆龙的唯一保证是产品自售出起一年 (或其它指定时间)内在材料和工艺上没有缺点。 欧姆龙对产品的无侵权、可售性或特殊用途的适用性均无任何明示或暗示性担保。任何购买者或使用者须承 认单独的购买者或使用者决定了产品将适当地符合他们有意使用的需求。欧姆龙拒绝其它所有保证,无论明 确的或暗示的。

责任限定
欧姆龙将不为产品以任何方式造成的特殊、间接的或因此产生的损坏、利益损失或商业损失负责,无论此主 张是基于契约、保证、疏忽或严格赔偿责任。 欧姆龙对已宣称责任的产品的任何超越单价的行为概不负责。 欧姆龙对产品的授权,修理或其它主张概不负责,除非欧姆龙分析确认产品完全操作、储藏、安装和维护且 未遭受污染、滥用、误用或不当更改或修理。

xii

应用注意事项
使用的适宜性
欧姆龙将不对所有应用于客户应用中的产品结合对各个标准、代码或规章的符合性负责。 在客户的需求中,欧姆龙将提供可用的第三方证明文件来确定产品使用的额定值和局限性。该信息本身对于 完全确定产品与其它产品、机器、系统或其它应用或使用的适宜性并不充分。 以下为一些必须特别注意的应用示例。这并不是详尽无遗地罗列了所有可能的产品用途的列表,也并不意味 着所列用途对产品适用: ? 户外使用、遭受潜在化学污染或电干扰处使用、或未在本手册中提及的条件或用途。 ? 核能控制系统、燃烧系统、铁路系统、航空系统、医疗器材、娱乐机械、车辆、安全设备和服从分离工业 或政府规章的安装。 ? 可能对生命或财产造成风险的系统、机器和设备。 请了解并遵守所有产品可用性的禁止条款。 切勿将本产品用于可能造成严重生命或财产风险且不能保证整个系统设计于从事风险的场合,欧姆龙产品已 为了用在整个设备或系统里而适当地额定并已安装。

可编程产品
欧姆龙将不对可编程设备中用户的编程或其任何结果负责。

xiii

不承诺事项
规格的变更
产品规格和附件随时可能基于改进和其它原因而更改。 当已公布的额定值或特性改变,或作出重大结构改变时更改型号编号是我们惯例。但是,产品某些规格可能 作出更改而不予通知。如有疑问,可指派特殊型号编号以为您的请求固定或建立关键规格。请在任何时候联 系您的欧姆龙代表以确认所够产品的实际规格。

尺寸和重量
尺寸和重量仅为名义上的,并不能用作制造用途,即使已说明了公差。

性能数据
本手册所给出的性能数据是用作给用户作为确定适用性的向导,并不予以担保。其将可能表现出欧姆龙测试 条件下的结果,用户必须将其与实际应用需求相联系。实际性能服从欧姆龙的保证以及责任限定。

错误和疏忽
本手册中的信息已小心核对并被认为正确;但是对记录、印刷或校对错误或疏忽并不指定责任。

xiv

xv

注意事项
本章给出使用 6.0 版 CX-Programmer 和可编程逻辑控制器的一般注意事项。 本章中所包含的资料对 6.0 版 CX-Programmer 和可编程控制器的安全和可靠应用是非常重要的。 在着手装配或操 作 6.0 版 CX-Programmer 和可编程控制器前务必阅读本章节并理解其内容。 1 2 3 4 面向的读者. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一般注意事项. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 安全注意事项. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 应用注意事项. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi xvi xvi xvii

xv

面向的读者

1

1

面向的读者
本手册是为下列人员编写的,他必须具有电气系统知识 (电气工程师或同等水 平者) 。 ? 从事 FA 系统安装的人员。 ? 从事 FA 系统设计的人员。 ? 从事 FA 系统及设备管理的人员。

2

一般注意事项
用户必须按照操作手册中给出的性能规格来运用产品。 在将本产品用于本手册中未述及的条件下,或将产品应用于核控制系统、铁路 系统、航空系统、车辆、内燃机系统、医疗装置、娱乐机械、安全装置或若使 用不当时可能对生命和财产造成严重影响的其它系统、机械和装置之前,请务 必咨询欧姆龙的特约经销商。 请确保本产品的额定值和性能特性满足系统、机械和装置的要求,并务必给系 统、机械和装置提供双重的安全机制。 本手册编有供单元的编程和操作作用的资料。在着手使用前务必阅读本手册, 并将手册备在手边以供操作时参阅。

! 警告

PLC 和所有 PLC 单元用于规定用途和规定条件下是很重要的, 特别在能直接或 间接影响人的生命的应用中。在将 PLC 系统应用于上述情况前,请务必咨询欧 姆龙的特约经销商。

3

安全注意事项
! 警告
将 I/O 存储器区状态从 6.0 版 CX-Programmer 传送到实际 CPU 单元之前充分确认 安全性。否则连接到输出单元上的设备可能发生故障,不论 CPU 单元处于什么 操作模式下。涉及以下功能时须多加小心。 ? 用 PLC 存储器窗口从 CX-Programmer 传送到 CPU 单元中的真实 I/O (CIO 区) 。 ? 用存储器卡窗口从文件存储器传送到 CPU 单元中的真实 I/O (CIO 区) 。 ! 注意 指定操作数中多个字的首地址或末地址时必须用 AT 设定 (或外部变量) 来指定 变量,或者变量必须与要由指令来处理的数据长度相同。 1. 若指定了数据长度不同的非数组变量或没有 AT 设定, CX-Programmer 将在 编译时输出一个错误。 2. 数组变量规格

xvi

应用注意事项

4
? 要由指令操作数来处理的长度为固定时: 数 组 元 素 的 数 量 必 须 与 要 由 指 令 处 理 的 元 素 数 量 相 同。否 则, CXProgrammer 将在编译时输出一个错误。 ? 要由指令操作数来处理的长度不固定时: 数组元素的数量必须大于或等于其它操作数中指定的长度。 ? 若其它用于指定一个长度的操作数是一个常量, 版的 CX-Programmer 6.0 将在编译时输出一个错误。 ? 若另一个用于指定一个长度的操作数为变量, 6.0 版的 CX-Programmer 在编译时不会输出错误,即使数组变量的长度与由另一个操作数 (变 量)所指定的长度不同也一样。但是,将会显示一条警告消息。特别 地,若数组元素的数量小于由另一操作数所指定的长度 (例如,指令 操作数长度为 16,实际变量表中注册的元素数为 10) ,则指令将对超 出元素数的那部分执行读 / 写处理。例如,将对实际变量表中注册的元 素数之后的 6 个字执行读 / 写处理。若这些字还被用在其它指令(包括 内部变量分配)中,将发生意外动作,可能引起严重事故。 若操作数中指定的变量长度小于变量定义中的长度,必须在开始 PLC 操作之前检查系统,避免其受逆反影响。 ! 注意 将程序传送到另一结点或更改 I/O 存储器区内容前应先在目的结点处确认安全 性。否则可能导致人身伤害。 仅在确认周期时间的延长不会造成不良影响之后再进行在线编辑。否则输入信 号可能无法读取。 在梯形部分窗口监控导通状态和当前值状态,或在观察窗口监控当前值之前应 先充分确认安全性。 若不慎按下了快捷键执行了强制设置 / 强制复位或设置 / 复 位操作, 连接到输出单元的设备可能发生故障, 无论CPU处于什么操作模式下。

! 注意

! 注意

4

应用注意事项
使用 CX-Programmer 时应遵守以下注意事项。 ? 用户程序无法上传到 CX-Programmer 中。 ? 启动 CX-Programmer 之前应遵守以下注意事项。 ? 退出所有与CX-Programmer不直接相关的应用程序。 尤其是要退出诸如 屏幕保护程序、病毒检查程序、E-mail 或其它通信软件、调度程序以及 其它定期启动或自动启动的应用程序等软件。 ? 禁用任何网络上的其它计算机上的共享硬盘、打印机或其它设备。

xvii

应用注意事项

4
? 对于某些笔记本计算机, RS-232C 端口被默认地分配到调制解调器或红 外线路上。根据用于您计算机的文档中的指示来启用 RS-232C 端口作 为正常串行端口。 ? 对于某些笔记本计算机, 省电的默认设定不支持RS-232C端口的额定电 压。可能同时有用于省电的 Windows 设定和用于指定计算机软件和 BIOS 的设定。根据用于您计算机的文档中的指示来禁用所有省电设 定。 ? 不要在CX-Programmer与PLC在线时关闭PLC的电源或断开连接电缆。 否则 计算机可能发生故障。 ? 尝试以下任何操作前应先确认不会对系统造成不良影响。否则可能引起意 外动作。 ? 更改 PLC 的运行模式。 ? 对存储器中的任意位予以强制设置 / 强制复位。 ? 更改存储器中的任何字或任何所设值的当前值。 ? 在单元上实际运行用户程序之前应先对其进行检查以便正确执行。否则可 能引起意外动作。 ? 执行了在线编辑后, CS1-H、 CJ1-H、 CJ1M 和 CP1H CPU 单元中的用户程序 和参数区数据会备份在内置闪存中。正在进行备份操作时 CPU 单元前的 BKUP 显示灯将亮。 BKUP 显示灯亮时不要关闭 CPU 单元的电源。若电源 关闭,则数据将不被备份。要在 CX-Programmer 上显示写入闪存的状态, 选择 “显示”对话框在 PLC 属性中显示 PLC 存储器备份状态,然后从查 看菜单中选择 Windows - PLC 存储器备份状态。 ? 包括功能块 (梯形编程语言或结构化文本 (ST) 语言)在内的程序可以用和 不包括功能块的标准程序相同的方法来上传或下载。但是,包括功能块在 内的任务无法在任务单元中下载 (上传可以) 。 ? 若包含用 6.0 版或以上的 CX-Programmer 创建的功能块的用户程序被下载到 不支持功能块的 CPU 单元 (2.0 版或以下的 CS/CJ 系列 CPU 单元)中,所 有实例都将被视为非法指令,并且无法编辑或执行用户程序。 ,CIO 区 ? 若输入变量数据不是布尔格式, 且参数中只输入了数值(例如 20) 地址中的实际值 (例如 0020)将被略过。因此,输入数值前必须加入 &、 #、或 +、 - 前缀。 ? 可在输入参数中设置地址,但地址本身无法被当作输入变量而略过 (即使 地址被设为输入参数,被功能块略过的数值将为输入变量中的数据长度与 之相同的那个) 。因此,由操作数来指定多个字中的第一个或最后一个时, 输入变量无法被用作功能块中的指令操作数。 应使用带有 AT 设定的内部变 量。在内部数组变量中交替地指定第一个或最后一个元素。

xviii

应用注意事项

4
? 执行算法之前 (不与算法中的指令执行同时)数值被成批地经过输入参数 到达输入变量。因此,要在执行功能块算法中的指令时使数值经过参数到 达输入变量,应使用内部变量或外部变量代替输入变量。将数值从输出变 量写入参数的时序中也有相同情况。 ? 遇到下列情况时总是使用带 AT 设定的内部变量。 ? 分配到基本I/O单元、 特殊I/O单元和CPU总线单元的地址无法注册为全 局符号,并且这些变量无法被指定为外部变量 (例如,为全局变量所 设的数据可能不稳定) 。 ? 除了那些预注册到外部变量中的辅助区位以外的辅助区位被注册为全 局符号且这些变量未被指定为外部变量时应使用内部变量。 ? 为网络中另一结点指定 PLC 地址 (例如, 远程结点处用于 SEND(090) 的 首目的字和远程结点处用于 RECV(098) 的首源字) 时应使用内部变量。 ? 多个字中的第一个或最后一个被指令操作数所指定并且该操作数无法 被指定为内部数组变量 (例如,无法指定数组元素)时应使用内部变 量。

xix

应用注意事项

4

xx

第1章 介绍
本章主要介绍了 CX-Programmer 功能块的功能。此外,对一些未在 CX-Programmer 非功能块描述中所提及的特 性作了说明。 1-1 功能块介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1-1 1-1-2 1-1-3 1-1-4 1-2 1-2-1 1-2-2 1-2-3 1-3 1-3-1 1-3-2 1-3-3 1-3-4 1-3-5 1-4 1-5 概述和特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块规格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 用 CX- Programmer 6.0 版创建的文件 . . . . . . . . . . . . . . . . . . . . CX-Programmer 5.0 版 (及以后版本)的功能块菜单 . . . . . . 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块优点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 变量用法和属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 变量属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 变量属性和变量用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 变量地址内部分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 5 5 8 8 9 10 14 14 15 15 16 17 18 18 18 19 19

功能块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

变量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

功能块定义转换成功库文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 使用程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5-1 1-5-2 创建功能块 / 执行实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块反复使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1-6

版本升级信息. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

功能块介绍

第 1-1 节

1-1
1-1-1

功能块介绍
概述和特点
CX-Programmer 5.0 版 (和以后的版本)是一个可以使用标准 IEC 61131-3 功能 块的编程工具。CP1H CPU 单元、NSJ- 系列 NSJ 控制器和 FQM1 柔性运动控制 器以及 CS/CJ- 系列 3.0 版或以后的版本均支持 CX-Programmer 5.0 版功能块功 能。该功能块具有以下特性: ? 通过功能块可以将用户自定义的过程转换成程序段格式。 ? 可以采用梯级编程语言或结构化文本 (ST)语言 (见注解)来写功能块运 算法则。 ?当采用梯级编程时,采用复制粘贴的方法可重新使用非 CX-Programmer 4.0 版或更早版本所创建的梯形图程序。 ? 那些采用梯形图编程而难以输入的数学运算步骤如采用 ST 语言进行编 程,则编程十分容易。 注 ST 语言对 IEC61131-3 中所描述的工业控制 (主要是编程逻辑控制 器)而言是一个高级语言。CX-Programmer 支持的 ST 语言符合 IEC 61131-3 标准。

? 由于变量未显示于文本中,因此,容易创建功能块。这些变量注册于变量 表中。当变量输入于梯级或 ST 程序中时,变量会自动注册。变量注册于变 量表后,注册的变量也可输入于梯级程序中。 ? 单个功能块可以转换成库功能作为单个文件。这样,便于重复使用功能块 进行标准处理。 ? 对单个功能块程序进行检查以便确认作为库功能时功能块的可靠性。 ? 与不含功能块的程序一样,含功能块的程序 (梯级编程语言或结构化文本 (ST)语言)也可上载或下载。但含功能块的任务就不可下载于任务单元 中 (可以上载) 。 ? 支持一维数组变量。因此,在许多应用中数据处理较为方便。 注 IEC 61131 标准是由国际电工委员会(IEC)制订的。其作为国际编 程逻辑控制器 (PLC)的标准。标准分成 7 个部分。有关 PLC 编程 的相关规范请见第 3 部分—文本语言 (IEC 61131-3) 。

? 也可从另一功能块 (梯级编程语言或结构化文本 (ST)语言)调用功能块 (梯级编程语言或结构化文本 (ST)语言) 。功能块可嵌套成 8 级。梯级 / ST 语言功能块可自由组合。

2

功能块介绍

第 1-1 节

1-1-2

功能块规格
未列在下表中的规格,请参阅 CX-Programmer 6.1 版 操作手册 (W437) 。
项目 规格 WS02-CXPC1-E-V5 □ CD-ROM CS/CJ- 系列 CS1-H、 CJ1-H 和 CJ1M CPU 单元 --3.0 版或以后的版本 单元类型 CPU 类型 ? CS1G-H CS1G-CPU42H/43H/44H/45H ? CS1H-H CS1H-CPU63H/64H/65H/66H/67H ? CJ1G-H CJ1G-CPU42H/43H/44H/45H ? CJ1H-H CJ1H-CPU65H/66H/67H ? CJ1M CJ1M-CPU11/12/13/21/22/23 以下 CP- 系列的 CPU 单元可以兼容。 ? CP1H CP1H-X40*/XA40* 注 如果含功能块 (通过 CX-Programmer5.0 版或以后版本创建的)的用户程 序下载至不支持功能块 (CS/CJ- 系列 CPU 单元—2.0 版或更早版本)的 CPU 单元中,则所有的范例均作为非法命令处理。其不能编辑或执行用 户程序。

型号 安装盘 兼容 CPU 单元

 ?NSJ G5D (用于 NSJ5-TQ0 □ -G5D、 NSJ5-SQ0 □ -G5D、 NSJ8-TV0 □ G5D、 NSJ10-TV0 □ -G5D 和 NSJ12-TS0 □ -G5D)  ?FQM1-CMFQM1-CM002  ?FQM1-MMAFQM1-MMA22  ?FQM1-MMPFQM1-MMP22 CS/CJ/CP 系列功能约束 ? 块程序指令 (BPRG 和 BEND) 、子程序指令 (SBS、 GSBS、 RET、 MCRO 和 SBN) 、跳转指令 (JMP、 CJP 和 CJPN) 、步指令 (STEP 和 SNXT) 、立 即刷新指令 (!) I/O 刷新 (IORF)和 1-MS 定时器 (TMHH) 、 欲知详情,请参阅 2-3 功能块约束 . 兼容计算机 computers 计算机 CPU OS 存储器 硬盘空间 监视器 CD-ROM 驱动 COM 端口 IBM PC/AT 或兼容 133 MHz 奔腾或更快; Windows 98、 98SE 或 NT 4.0 (有 Service Pack 6 或更 高) Microsoft Windows 95、98、98SE、Me、2000、XP 或 NT 4.0(有 Service Pack 6 或更高) 最小 64 兆字节 --Windows 98、 98SE 或 NT 4.0 (有 Service Pack 6 或更高) 请参阅 CX-Programmer Ver.5.0 版操作手册 (W437) 可用磁盘空间—最小 100 兆字节 最小 SVGA (800 × 600 像素) 注 字体大小—用 “小字体” 。 最少一个 CD-ROM 驱动 最少一个 RS-232C 端口

3

功能块介绍
项目 CX定义并创 Programmer4. 建功能块 0 版或更早版 本不支持的功 能. 规格 功能块定义 数量 CS1-H/CJ1-H CPU 单元:

第 1-1 节

? 后缀 -CPU44H/45H/64H/65H/66H/67H:最大 1,024—每个 CPU 单元 ? 后缀 -CPU42H/43H/63H:最大 128—每个 CPU 单元 CJ1M CPU 单元: ?CJ1M-CPU11/12/13/21/22/23:最大 128—每个 CPU 单元 CP1H CPU 单元 ?所有型号:最大 128- 每个 CPU 单元 NSJ 控制器: ?所有型号:最大 1,024- 每个控制器 FQM1 柔性运动控制器: ?FQM1-CM002/MMA22/MMP22:最大 128—每个控制器

功能块名称 变量

最大 64 字节 变量名 变量类型 功能块 I/O 变量数 最大 30,000 字节 输入、输出、内部和外部 最大 64 个 (不包括 EN 和 ENO)

语言 创建实例 实例数

变量所用的地址分配 自动分配 (用户可以自己设定分配范围) 实际地址规格 支持 数组规格 支持 (仅指一维数组) 可采用梯级编程语言或结构化文本 (ST,见注释)创建功能块。 CS1-H/CJ1-H CPU 单元: ? 后缀 -CPU44H/45H/64H/65H/66H/67H:最大 2,048—每个 CPU 单元 ? 后缀 -CPU42H/43H/63H:最大 256—每个 CPU 单元 CJ1M CPU 单元: ? CJ1M-CPU11/12/13/21/22/23:最大 256—每个 CPU 单元 CP1H CPU 单元 ? 所有型号:最大 256- 每个 CPU 单元 NSJ 控制器: ?所有型号:最大 2,048- 每个控制器 FQM1 柔性运动控制器: ?FQM1-CM002/MMA22/MMP22:最大 256—每个控制器

实例名 存储功能 块作为文 件 项目文件 程序文件 功能块库文 件

最大 30000 字符 项目文件 (.cxp/cxt)包含了功能块定义和实例。 文件存储器程序文件 (*.obj)包含了功能块定义和实例。 可以将每个功能块定义存储为单个文件 (.cxf)以便其他项目中使用。



结构化文本 (ST 语言)符合 IEC 61131-3 标准但 CX-Programmer5.0 版只支持 赋值语句、选择语句(CASE 和 IF 语句) 、迭代语句(FOR、WHILE、REPEAT 和 EXIT 语句) RETURN 语句、算术运算符、逻辑算符、比较函数、数值函 、 数和注释。 欲知详情,请参阅附录 B 结构化文本 (ST 语言)规格。

4

功能块介绍

第 1-1 节

1-1-3

用 CX- Programmer 6.0 版创建的文件
项目文件 (*.cxp)和文件存储器程序文件 (*.obj) 使用 CX-Programmer 创建 的项目中包含了功能块定义和有实例的项目。这些项目均保存于同一标准项目 文件 (*.cxp)和文件存储器程序文件 (*.obj) 。 项目内容示于下图。创建功能块定义创建时其目录级可与相关 PLC 目录中程序 目录级一样。
.cxp PLC1 I/O PLC PLC

工程文件 (*.cxp) 和文件存储 器程序文件 (*.obj)

1 2 END

1 2

PLC2

功能块库文件 (*.cxf) 注 含功能块 (*.cxt)的 项目文 本文件

采用 CX-Programmer6.0 版创建的项目功能块定义可以保存为一个可以将定义上 载于其他程序中且可反复使用的文件 (1 个定义 = 1 文件) 。 当功能块嵌套时,所有嵌套 (目的地)功能块定义均包含在此功能块库文件中 (.cxf) 。 与 CX-Programmer6.0 版创建的项目文件 (*.cxp)相同的数据可以保存为 CXT 文本文件 (*.cxt) 。

1-1-4

CX-Programmer 5.0 版 (及以后版本)的功能块菜单
下表列出了 CX- Programmer5.0 版及以后版本中的功能块菜单。所有菜单的详 细内容请参阅拿 CX- Programmer. 5.0 版操作手册 (W437) 。

主菜单
主菜单 文件 子菜单 从文件中载入 功能块 功能块 功能块保存于 文件中 更新功能块 子菜单 至下层 快捷 --------功能 读取保存的功能块库文件 (*.cxf) 将创建的功能块定义保存于文件中 [ 功能块库文件 (*.cxf) ]。 如在创建实例后修改功能块定义 I/O 变量,则实例左母线显示红色 表示出现错误。通过输入新的信息,命令更新实例并清除错误。 跳转到所选实例的功能块定义。

编辑

5

功能块介绍
主菜单 观察 子菜单 监视 FB 梯级实例 监视 FB 实例 ----快捷 功能

第 1-1 节

当在线监视程序时,监视实例中的梯级程序 I/O 位及状态 (I/O 位监 视器) (只有 CX- Programmer6.0 版和以后版本支持) 。 当在线监视程序时,监视实例中梯级程序的 ST 变量状态、 I/O 位和 字状态 (I/O 位监视器) (只有 CX- Programmer6.0 版和以后版本 。 支持) 所选实例的功能块定义内容显示在右侧。 (只有 CX- Programmer6.0 版和以后版本支持) 返回至调用实例 (梯级程序或 ST) (只有 CX- Programmer6.0 版 。 和以后版本支持) 显示 FB 实例浏览器。 (当嵌套时,显示器将显示详细的内容,例 如,嵌套水平的实例与分配于实例中的变量地址之间的关系) 在当前的光标位置处,在程序 (段)中创建实例。 当光标位于输入变量的左面或输出变量的右面时,设置变量输入或 输出参数。 设置分配于所选实例变量的地址范围 (功能块实例区域) 。 检查分配于所选实例变量的地址状态。 检查分配于所选实例的每个变量地址。 优化分配于变量变的地址分配情况。

至下层 至上层 窗口 插入 FB 实例浏览器

------F P ---------

功能块调用 功能块参数

PLC

功能块存 功能块存储分 储器 配 功能块存储器 统计 功能块实例地 址 优化功能存储 器

6

功能块介绍
主菜单 工具 模拟 子菜单 断点 I 设置 / 清 除断点 断点 I/ 清除所 有断点 模式 I 运行 (监视器模式) 模式 I 停止 (程序模式) 模式 I 暂停 ----------快捷 设置或清除断点。 清除所有断点 功能

第 1-1 节

进行连续扫描。 (梯级执行机构的运行模式设为 MONITOR 模式) 。 模拟运行模式设为 PROGRAM 模式。 暂停模拟器运行。 模拟单元程序只执行一步。 当出现功能块吊调用命令时,该命令开始执行内部程序步骤。 当功能块的内部程序步骤正在执行时,该命令返回至下一高级 (调 用源)和暂停执行。 连续执行程序步骤—执行一定的时间。 执行一个周期,暂停执行。 采用 Step Run 或 Continuous Step Run 命令自动屏幕滚动并一直显示 暂停点。 显示已设置的断点列表。 (操作跳转至指定点) 。

--步骤运行 步骤运行 I 步骤 --输入 步骤运行 I 步骤 --跳出 步骤运行 I 连续 --步骤运行 步骤运行 I 扫描 --运行 --始终显示当前 执行点 --断点列表

主弹出式菜单
功能块定义弹出式菜单
插入功能块 弹出式菜单 梯级 结构化文本 来自文件 功能 采用梯级编程语言演算法创建功能块定义。 用 ST 语言演算法创建功能块定义。 从功能块库文件中 (*.cxf)读取功能块定义。

插入的功能块弹出式菜单
弹出式菜单 打开 插入变量 编辑 功能 显示所选功能块定义内容示于窗口右侧。 将所选功能块定义保存于文件中。 编辑所选功能块定义。

功能块变量表弹出式菜单
弹出式菜单 编辑 插入变量 插入变量 剪切 复制 编辑变量。 变量增加到最后一行。 变量插在当前光标位置上面。 变量插在当前光标位置下面。 剪切变量。 复制变量。 功能

上 下

7

功能块
弹出式菜单 粘贴 搜索 替换 删除 重命名 功能 粘替变量。 搜索变量、变量名、变量说明或全部 (正文串) 可以搜索的内容。 替换变量。 删除变量。 只更改变量名。

第 1-2 节

实例弹出式菜单
弹出式菜单 编辑 更新调用 监视 FB 梯级实例 监视 FB 实例 注册于观察窗 功能块定义 功能 更改变量名。 如在创建实例后修改功能块定义 I/O 变量,则实例左母线显示红色表示出现错误。通过 输入新的信息,命令更新实例并清除错误。 当在线监视程序时,监视实例中的梯级程序 I/O 位及状态 (I/O 位监视器) (只有 CX。 Programmer6.0 版和以后版本支持) 当在线监视程序时,监视实例中梯级程序的 ST 变量状态、 I/O 位和字状态 (I/O 位监视 器) (只有 CX- Programmer6.0 版和以后版本支持) 。 显示 FB 变量对话框,将所选实例变量注册于观察窗中。 所选实例的功能块定义内容显示在右侧。

快捷键
F 键:显示程序中以前的功 能块定义 P 键:输入参数 移动光标至此位置—即,将复制的功能块实例创建于梯级段窗中。点击 F 键。 该操作与选择插入 –功能块调用相同。 光标定位于输入变量的左侧或输出变量的右侧。点击 P 键。该操作与选择插入 –功能块调用相同。

1-2
1-2-1

功能块
概述
功能块是一个包含标准处理功能的基本程序单元。该标准处理功能事先已定义 好。一旦功能块已定义好,用户即可将功能块嵌入程序中,设置 I/O 。这样, 即可使用功能。 由于是标准处理功能,因此,功能块不包含实际地址,是变量。用户在变量中 设置地址或常数。 这些地址或常数称作参数。 变量自身所使用的地址则由 CX- Programmer 自动分 配于每个程序。 采用 CX- Programmer 将单个功能块保存为单个文件而且单个功能块还可用于其 他 PLC 程序中。因此,标准处理功能可做成库。

8

功能块
2 A

第 1-2 节

A

1 A

A

PLC

1-2-2

功能块优点
功能块便于复杂的编程设备反复使用。一旦在功能块中创建了标准编程并将其 保存为文件,便可将功能块嵌入程序中并设置功能块 I/O 参数即可反复使用。 当创建 / 调试程序时,反复使用现有功能块的能力讲节省大量的时间并且减少 编码错误。此外,使得程序更易于理解。

结构化编程
便于读取的 “黑匣子”设计 多程序只使用一块功能块 减少编码错误 数据保护 通过变量编程提高了反复利 用率 创建库

用功能块创建的结构化程序具有更好的设计质量而所需的开发时间减少。 I/O 运算域作为程序中的变量名显示。因此,当输入或读取程序时,程序象“黑 匣子” 。在理解内部演算法时不会浪费太多的时间。 将标准程序中的参数 (例如,定时器 SVs、控制常数、速度设置和行程)用作 输入变量。这样一来,通过一块功能块就很方便地创建许多不同的程序。 由于反复使用的功能块已经过调试,因此,可以减少编码错误。 功能块中的变量不能直接从外面读取。因此,可以保护数据。 (数据不能随意 修改) 。 功能块的 I/O 作为变量输入。因此,再使用时无需修改功能块中的数据地址。

独立可反复使用的程序 (例如,每一步骤的过程、机器、设备或控制系统程序 均可保存为功能块定义并转换成库功能。如采用与实际地址无关联的变量名创 建功能块,则只要读取功能块定义并将功能块嵌入程序即可很方便地开发新程 序。

9

功能块 支持嵌套和多语种

第 1-2 节
采用结构化文本 (ST)语言输入数学表达式。通过 CX- Programmer6.0 版或以 后版本将功能块嵌入程序中。功能块嵌套功能可对嵌入于梯级语言功能块的 ST- 语言功能块进行特殊处理。

ST

1-2-3

功能块结构
功能块由功能块定义 (事先创建)和嵌入程序中的功能块实例组成。

功能块定义

功能块定义为包含在功能块中的程序。每个功能块定义包含算法和变量定义。 算法和变量定义示于下图。
: CLOCK PULSE
: CLOCK PULSE

1.
tim_b TIMX tim_a OFF_TIME tim_a TIMX tim_b ON_TIME ENO

2.
tim_a tim_b ON_TIME OFF_TIME TIMER TIMER INT INT

1. 算法 标准化编程采用变量名编写而非实际的 I/O 存储地址。在 CX- Programmer 中, 采用梯级编程或结构化文本写算法 2. 变量定义 变量表列出了每个变量用法(输入、输出或内部使用)和属性(数据类型等) 。 欲知详情,请参阅 1-3 变量。 功能块定义数 一个 CPU 单元所创建的功能块定义最大数为 128 或 1,024。 具体数取决于 CPU 单元型号。 要将实际功能块定义用于程序中,则应创建一份功能块图并将其插入程序中。 嵌入程序中的每个功能块定义称作 “实例”或 “功能块实例” 。每个实例均有 一个标识符—称作 “实例名” 。 要生成实例,则可使用单个功能块定义处理相同功能的不同 I/O 数据。

实例

10

功能块

第 1-2 节

FB1 1. FB1 FB1 FB1_1 a b c 2.
a b c

a

b

c

FB1_2

FB1

FB1_2 I/O a b c



实例通过名称来管理。一个以上的具有相同名称的实例也可嵌入程序中。如果 有两个或两个以上的实例具有相同名称,则这些实例使用相同的内部变量。 不 同名称的实例其内部变量也不同。 例如,将定时器用作一个内部变量的多功能块。在这种情况下,所有实例名称 均不相同。如果一个以上的实例使用相同的名称,则相同的定时器用于多个位 置从而反复使用定时器。但如果内部变量不用或只暂时使用以及仅在下次触发 执行一个实例,则相同的实例名可以用来保存存储器。
A TIMER_FB
TIMER_FB

: WORK_NUM

A TIMER_FB

B TIMER_FB

实例数 参数

一个功能块定义可以创建多个实例。根据 CPU 单元的型号,一个 CPU 单元可 以创建 256 或 2,048 实例。 许可的实例数与功能块数量和实例插入的任务无关。 每当创建一个实例,就需设置 I/O 存储地址或 I/O 变量 (用来传递输入数据 值至实例以及从实例中获取输出数据值)常数。这些地址和常数称作参数。

11

功能块
A

第 1-2 节

0.00 3.00

a c

b

2.00

在这里,不是输入源地址但在输入地址常数。其形式和规格大小由通至功能块 的变量数据类型来决定。同样,不是输出目的地地址但是输出地址常数。其形 式和规格大小由来自功能块的变量数据类型来决定。 即使是输入源地址 (例如,输入参数)或输出目的地地址 (例如,输出参数) 是字地址,则数据的形式和规格大小由来自规定字地址的变量数据类型来决 定。
A

D100 D200

m

k

D300

n

m n k

WORD DWORD LWORD

-D100--D200/D201D300 D303



(1) 以下区域中只有一个地址用作参数:CIO 区域、辅助区域、DM 区域、EM 区域 (存储体从 0 到 C)保持区域和工作区域。 以下内容不能使用:指数和数据寄存器(直接和间接规格)和 DM 区域和 EM 区域的间接地址 (二进制模式和 BCD 模式) 。 (2) 用户程序中的局部符号和全局符号也可规定为参数。但要这样做,则局部 符号和全局符号的数据大小必须与功能块变量的数据大小一致。 (3) 当执行实例时,在运算处理之前将输入值从参数传至输入变量。在运算处 理结束后,输出值从输出变量传至参数中。如必需在运算执行周期内读取 或写入数值,则不得将数值传至参数中或从参数上传数值。对内部变量赋 值,使用 AT 设置 (规定的地址) 。

12

功能块
! 注意 ! 注意

第 1-2 节
如果输入参数中已规定了地址,则地址值传至输入变量。但不能传递实际地址 数据。 在运算执行周期内, 参数不能用来读取或写入数值。 使用带 AT 设置的内部变量 (规定的地址) 。或将全局符号作为外部变量基准。 ■参考信息 将类似参数的单元 (例如固定值)用作输入变量以及根据每个实例修改传至输 入变量的数值从而只需通过单个功能块即可很方便地创建各种程序。 例如:采用 1 个功能块定义创建 3 个实例。
0 CASCADE_01
I/O
&10 P_On EN &20 CASCADE_01 CONTROL ENO 1.0

ON_TIME OFF_TIME

CONTROL

CASCADE_02

CASCADE_02
I/O

P_On EN &15 &10

CONTROL ENO

1.1

ON_TIME OFF_TIME

3

FB I/O 1 CASCADE_03
I/O
&8 P_On EN &7 CASCADE_03 CONTROL ENO 1.2

ON_TIME OFF_TIME

如果不使用内部变量以及处理不受影响或内部变量用于其他地方时,在程序多 个地方可以使用相同的实例名。
0CASCADE
P_On &100 &130 CONTROL EN ENO PARA_1 PARA_2 1.0

CONTROL

CASCADE
I/O

P_On &50 &150

CASCADE CONTROL EN ENO PARA_1 PARA_2

1.1

1 CASCADE
P_On &100 &200 CONTROL EN ENO PARA_1 PARA_2 1.2

使用相同存储区域时,需要特别注意。例如,如果含定时指令的相同实例用于 一个以上程序时,则会使用相同的定时器号从而导致线圈重复。如两个指令同 时执行,则会导致定时器不能正常工作。

13

变量
实例注册 每个实例名作为一个文件名注册于全局符号表中。
A

第 1-3 节

a

b c

FB [

1]

N/A[

]

FB

1-3
1-3-1

变量
介绍
在功能块中,地址不作为实际的 I/O 存储地址输入 (见注解) 。它们作为变量 名输入。每当创建实例时,CX- Programmer 自动将变量所用的实际地址分配在 指定的 I/O 存储区域内。 此外, 用户无需知道功能块实际使用的 I/O 存储地址正 如无需知道计算机实际存储器分配。在这种情况下,功能块与子程序不同。例 如,功能块使用变量。地址象 “黑匣子” 。 例如:
Program A
a b c

A

a

b

Insert in program.

0.00 3.00

a c

b

2.00

c MOV

Specify inputs and outputs at the same time.

a

b

c

Status of 0.00 (1 or 0) is passed to a. 0.00 1 a 1

Status of b (1 or 0) is passed to 2.00. b 1 2.00 1

: :
AT a c BOOL BOOL Initial Value Retained

Status of 3.00 (1 or 0) is passed to c. 3.00 0 c 0

: :
AT b BOOL Initial
Retained

a W120 a=W10000

b

c

W100 c=W10002

b=W10001



常数不能注册为变量。直接将常数输入至指令操作数。

14

变量

第 1-3 节
? 梯级编程语言:在 # 后面输入十六进制数值;在 & 后面输入十进制数。 ? 结构化文本 (ST 语言) :在 16# 后面输入十六进制数值;十进制数照原样 不动。 例外:直接或间接地将变址寄存器 IR0 到 IR15 指定地址输入指令操作数中;直 接将数据寄存器 DR0 到 DR15 输入指令操作数中。

1-3-2
变量用法

变量用法和属性
可以支持以下变量类型 (用法) : 内部: 输入: 输出: 外部: 在实例中只能使用内部变量。这些内部变量不能直接用来传输数据 至 I/O 参数或从 I/O 参数中上传数据。 输入变量可以从实例外的输入参数中输入数据。默认输入变量为传 输输入条件数据的 EN (Enable)变量。 输出变量可以输出数据至实例外的输出参数。默认输出变量为传输 实例执行状态的 ENO (Enable Out)变量。 外部变量是事先由 CX-Programmer 寄存的系统定义变量 (例如, 条件标志和一些辅助区域位)或用户定义的全局符号(用于每个实 例数中) 。

有关变量详细内容,请参阅 2-1-2 功能块单元中变量定义的变量类型 (用法) 一节。 下表所示的是可以使用的变量数和为每个变量用法默认创建的变量类型。

1-3-3
变量名

变量属性
变量具有以下属性: 变量名可用来识别功能块中的变量。 如果其他功能块也使用了相同的名称,这 也没有什么问题。 注 变量名可达 30,000 字符长但不得以数字开始。此外,在一排中,名称不能包含 两个下划线字符。字符串不能与变址寄存器相同。例如, IR0 到 IR15。有关其 他的限制约束请参阅 2-1-2 功能块单元中变量定义的变量定义。

数据类型

在下面数据类型中,选择其中一个作为变量: BOOL、 INT、 UINT、 DINT、 UDINT、 LINT、 ULINT、 WORD、 DWORD、 LWORD, REAL、 LREAL、 TIMER、 COUNTER 有关数据类型的详细情况请参阅 2-1-2 功能块单元中的变量定义。

AT 设置 (分配实际地址)

将变量设于特殊的 I/O 存储地址中而非系统自动分配地址。在这此属性中,用 户可输入所需的 I/O 存储地址以规定特殊地址。 该属性仅为内部变量而设。即使设置了具体的地址,变量名还是必须用于算法 中。 有关 AT 设置的详细内容请参阅 2-1-2 功能块单元中变量定义。有关 AT 设置使 用的详细内容请参阅 2-4-3 内部变量的 AT 设置。

15

变量
数组设置

第 1-3 节
变量可作为具有相同属性的单个数据数组来处理。要将变量转换为数组,则需 规 定 数 组 以 及 组 成 数 组 的 最 多 单 元 数。该 属 性 仅 为 内 部 变 量 而 设。 CXProgrammer5.0 版或以后版本支持一维数组。 ? 设置程序 点击 Advanced 按键,选择 Array Variable 选项,输入最多单元数。 ? 当数组变量输入于功能块定义中的算法时,在变量号后面的方括号内输入 数组变址号。 有关数组设置的详细内容,请参阅 2-1-2 功能块单元中变量定义。

初始值

在首次执行实例之前,这是设置于变量中的初始值。然后,执行实例时修改数 值。 例如,布尔 (BOOL)变量 (位)设为 1 (TRUE)或 0 (FALSE)。 WORD 变量设在 0 到 65,535 (0000 到 FFFF 十六进制)值之间。如果未设置初始值, 则变量设为 0。例如,布尔变量为 0(FALSE) 。WORD 变量为 0000 十六进制。

保持

如果 PLC 再次接通开始运行时需要保持变量数据不变,则选择保持选项。 ? 设置程序 选择保持选项。

1-3-4

变量属性和变量用法
下表所示的是必须设置的、可以设置的以及不能设置的属性 (基于变量用法基 础上) :
属性 名称 数据类型 AT (指定地址) 初始值 保持 内部变量 必须设置 必须设置 可以设置 可以设置 . 可以设置 变量用法 输入 必须设置 必须设置 不能设置 可以设置 (见注释) 可以设置 (见注释) 外部变量 必须设置 必须设置 不能设置 可以设置 可以设置



输入设为初始值但实际输入参数值优先。

16

变量

第 1-3 节

1-3-5

变量地址内部分配
当采用功能块定义创建实例时, CX-Programmer 内部分配变量地址。除了通过 AT 设置属性而分配了实际地址的变量之外, 所有注册于功能块定义的变量均分 配地址。
FB A
15 0

0.00

a

b t

2.00 5.00
15

CIO, H, W, D, or E

c

0

H, D, or E

AT a BOOL

T
AT b t BOOL TIMER
YES

C
2000.00

c

AT BOOL 2000.00

设置变量内部分配区域 例区 域中。

用户可以在系统内部分配的地址处设置功能块实例。系统自动将变量分配于用 户所设置的合适实例区域中。 设置程序 在 PLC 菜单中选择 Function Block Memory - Function Block Memory Allocation。 在功能块存储器分配对话框中设置这些区域。 功能块实例区域 CS/CJ- 系列 CPU 单元 3.0 版或以后版本和 NSJ 控制器
FB 实例区域 Non Retain Retain Timers Counters 起始地址 H512 H1408 T3072 C3072 默认值 终端地址 H1407 H1535 T4095 C4095 适用存储区域 大小 896 128 1024 1024 CIO, WR, HR, DM, EM HR, DM, EM TIM CNT

FQM1 柔性运动控制器
FB 实例区域 Non Retain Retain Timers Counters 起始地址 5000 None T206 C206 默认值 终端地址 5999 T255 C255 适用存储区域 大小 1000 50 50 CIO, WR, DM TIM CNT

功能块保持区域字 (H512 到 H1535)

功能块保持区域字分配在 H512 到 H1535 之间。这些字与程序标准保持区域中 的字 (H000 到 H511)是不一样的而且这些字只能用于功能块实例区域 (内部 分配的变量区域) 。这些字不能作为指令操作数。如果在创建功能块时输入,则 显示红色。虽然创建功能块时可以输入字,但在检查程序时会发现字错误。如 果该区域仍保留于功能块存储器分配对话框中,则将电源接通 / 切断或在开始 操作时清除区域而不保留数值。

17

功能块定义转换成功库文件

第 1-4 节

1-4

功能块定义转换成功库文件
用 CX-Programmer 创建的功能块定义可以保存为单个文件。该文件以知作为带 文 件 名 扩 展 *.cxf 的 功 能 块 定 义 文 件。这 些 文 件 可 以 在 其 他 项 目 中 使 用 (PLCs) 。

Function block definition Example: CLOCK_PULSE 1. Algorithm
tim_b
TIMX tim_a OFF_TIME

Function block definition Example: CLOCK_PULSE 1. Algorithm
tim_b
TIMX tim_a OFF_TIME

tim_a tim_a
TIMX tim_b ON_TIME TIMX tim_b ON_TIME

ENO
2. Variable Definitions Usage Name
Internal Internal Input Input
tim_a tim_b ON_TIME OFF_TIME

ENO
2. Variable Definitions Usage Name
Internal Internal Input Input
tim_a tim_b ON_TIME OFF_TIME

Type
TIMER TIMER INT INT

Type
TIMER TIMER INT INT

Function block definition file (.cxf)

1-5

使用程序
一旦创建了功能块定义以及算法实例,执行时可以调用实例。此外,创建的功 能块定义保存为文件。这样,就可用于其他项目中使用 (PLCs) 。

1-5-1

创建功能块 / 执行实例
以下程序大致介绍了创建执行功能块所需的步骤。 1,2,3... 1. 首先,用梯级程序或 ST 语言创建包含算法和变量定义的功能块。或者,嵌 入事先准备好的功能块库文件。 注 (a) 创建完整的算法 (包括变量名) 。 (b) 当用梯级编程语言输入算法时,通过读取 CX-Programmer5.0 版或 更高版本中的项目文件并复制粘贴可用部分从而可以再利用5.0版 以前 CX-Programmer 所创建的项目文件。 2. 3. 4. 5. 6. 7. 创建程序时,嵌入全部完整的功能块定义文件。该步骤创建功能块实例。 输入每个实例的实例名。 设置变量输入源地址和 / 或常数,输出目的地地址和 / 或常数作为参数。每 个实例数据建立。 选择已创建的实例,从 PLC 菜单中选择 Function Block Memory – Function Block Memory Allocation,设置每种变量的内部数据区域。 程序传输至 CPU 单元中。 开始执行 CPU 单元中的程序。如果输入状态处于 ON 时,调用执行实例。

18

版本升级信息

第 1-6 节

3. A 1. A 5. a、b、c

0.00

a

b c

2.00 3.00

2. a、b、c 4.

1-5-2

功能块反复使用
采用以下程序将功能块定义保存为文件并用于另一 PLC 程序中。 1,2,3... 1. 2. 3.
1. A a、b、c 1.00 2. a、b、c

选择想保存的功能块,将其保存为功能块定义文件 (*.cxf) 。 打开另一 PLC 项目,打开 / 读取已保存的功能块定义文件 (*.cxf) 。 创建新程序时,将功能块定义嵌入程序中。
A

a

b c

5.00 6.00

A

*.cxf



在 CX-Programmer 5.0 版中,可将每个功能块定义作为程序来编辑检查。 我们 推荐编辑程序并在保存或再使用文件之前对每个功能块定义文件进行程序检 查。

1-6

版本升级信息
本节大致介绍了 CX-Programmer 功能提高并作为 5.0 版升级到 6.0 版以及 6.0 版 升级到 6.1 版的组成部分。

6.0 版升级到 6.1 版信息
适用的 PLC 型号 支持 NSJ- 系列 NSJ 控制器 6.0 版升级到 6.1 版适用于以下 PLC 型号:
? CP- 系列 CP1H (CP1H-XA、 CP1H-X 和 CP1H-Y)

PLC 型号 ( “设备类型” )可以设为 “NSJ” CPU 类型可以设为 G5D。 。

19

版本升级信息
支持 FQM1 单元 3.0 版 实例 ST/ 梯级程序模拟功能
以前版本 (6.0 版) CX- 模拟器可用来执行梯级程序步骤 (Step Run) ,连续执行步骤 (Continuous Step Run) , 执行单个循环 (Scan Run)及设置 I/O 断点条 件。 最新版本 (6.1 版)

第 1-6 节
目前支持新型的 FQM1 柔性运动控制器 (例如, FQM1-CM002 配位仪模块和 FQM1-MMA22/MMP22 运动控制模块) 。

执行 Step Run、 Continuous Step Run、 Scan Run 和 Set/Clear Break Point 功能作为 CX-Programmer 功能。所有这些功能与梯级程序和梯级 /ST 程 序一起用于功能块中。 注 注 必须安装 1.6 版本的 CX 模拟器 (另售)以使用这些功能。 不可设置 I/O 断开条件。

改进的功能块功能 监视功能块中的 ST 程序
以前版本 (6.0 版) 最新版本 (6.1 版) 在线监控程序时,不能同时监视功能块实例中的 监控程序的同时监视功能块实例中的 ST 程序状态。复核功能块实例或 ST 程序操作情况。 (只能检查功能块定义程序内 右击实例,在弹出式菜单中选择 Monitor FB Instance 就可监视 ST 程序 容以及监视功能块实例梯形图的 I/O 状态) 。 状态。此时,修改 PV 和强制设置的 / 复位的位。 注 不支持在线编辑。

功能块密码保护
以前版本 (6.0 版) 设置功能块属性以防显示功能块定义程序。 最新版本 (6.1 版) 可以设置以下两种类型的密码保护。

?密码保护限制读写。
?密码保护只限制写入。

20

版本升级信息 5.0 版升级到 6.0 版信息
嵌套功能块
以前版本 (5.0 版) 不能从另一功能块中调用功能块 (不支持嵌 套) 。 最新版本 (6.0 版)

第 1-6 节

可以从另一功能块中调用功能块 (嵌套) 。可支持多达 8 个嵌套级。调 用功能块语言和被调用功能块的语言可以是梯级语言或 ST 语言。功能 块之间的嵌套级关系可以以目录树格式显示。当功能块嵌套时,调用功 能块和被调用 (嵌套)功能块定义只有一个功能块库文件 (.cxf 扩展 名)可以保存。

I/O 位监视器支持功能块梯级程序
以前版本 (5.0 版) 最新版本 (6.0 版) 在线监控程序时,不能同时监视功能块实例梯级 在线监控程序的同时监视功能块实例梯级程序的 I/O 状态。复 程序的 I/O 状态。 核功能块实例或右击实例,在弹出式菜单中选择 Monitor FB Instance 就 可监视 ST 程序状态。此时,修改 PV 和强制设置的 / 复位的位以及近视 (只能检查功能块定义中的程序) 位差异 (ON/OFF 转换) 。 注 不支持在线编辑。不能更改定时器 / 计数器的 SV。

注册监视观察窗中的功能块实例变量
以前版本 (5.0 版) 必须显示观察窗,双击观察窗并从下拉列表中选 择所需的变量来注册功能块实例变量。 最新版本 (6.0 版) 功能块实例中的多个变量可以一起注册于观察窗中。 FB 变量注册对话 框与以下方法一起显示。变量可以一起注册于对话框中。

? 右击功能块实例,在弹出式菜单中的观察窗内选择 Register。 ? 选择程序所需的功能块定义或变量, 复制/粘贴或拖/下拉实例 至观察窗中。 ? 光标移至观察窗中空行,在弹出式菜单中的观察窗内选择 Register。 其他功能块提高内容 ? 功能块中的梯级程序支持相互参照弹出功能。 ? 从编辑器中的弹出式菜单开始 ST 语言帮助程序。 ? 只需双击功能块实例即可打开功能块定义。 ? 功能块实例参数输入确认后,光标自动下移。

21

版本升级信息

第 1-6 节

22

第2章 技术规格
本章提供功能块使用时参考规格。其中包括功能块规格、实例规格、兼容 PLC 规格以及使用注意事项和指南。 2-1 功能块规格. . . . . . . . . . . . . . . . . . . . . . . . . . 2-1-1 2-1-2 2-2 2-2-1 2-2-2 2-2-3 2-3 2-4 功能块规格 . . . . . . . . . . . . . . . . . . . . . . 功能块单元 . . . . . . . . . . . . . . . . . . . . . . 实例组成部分 . . . . . . . . . . . . . . . . . . . . . 参数规格 . . . . . . . . . . . . . . . . . . . . . . . 操作规范 . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 35 35 39 41 43 47 47 48 49 50 51 52 55 57 59 61 62 63 66 68 70 73 74 78 81 82 84 87 90 92 93 94

实例规格. . . . . . . . . . . . . . . . . . . . . . . . . . .

功能块限制. . . . . . . . . . . . . . . . . . . . . . . . . . 功能块应用指南. . . . . . . . . . . . . . . . . . . . . . . . 2-4-1 2-4-2 2-4-3 2-4-4 2-4-5 2-4-6 确定变量数据类型 . . . . . . . . . . . . . . . . . . . 确定变量类型 (输入、输出、外部和内部) . . . . . . . . 内部变量 AT 设置 . . . . . . . . . . . . . . . . . . . 内部变量数组设置 . . . . . . . . . . . . . . . . . . . 规定分配于特殊 I/O 单元的地址 . . . . . . . . . . . . . 使用变址寄存器 . . . . . . . . . . . . . . . . . . . .

2-5 2-6

规定多字中第一个字或最后一个字的操作数指令注意事项. . . . . . 指令支持和操作数限制. . . . . . . . . . . . . . . . . . . . . 2-6-1 2-6-2 2-6-3 2-6-4 2-6-5 2-6-6 2-6-7 2-6-8 2-6-9 控制输入指令 . . . . . . . . . . . . . . . . . . . . . 控制输出指令 . . . . . . . . . . . . . . . . . . . . . 顺序控制指令 . . . . . . . . . . . . . . . . . . . . . 定时器和计数器指令 . . . . . . . . . . . . . . . . . . 比较指令 . . . . . . . . . . . . . . . . . . . . . . . 数据传送指令 . . . . . . . . . . . . . . . . . . . . . 数据转换指令 . . . . . . . . . . . . . . . . . . . . . 递增 / 递减指令 . . . . . . . . . . . . . . . . . . . . 符号数学指令 . . . . . . . . . . . . . . . . . . . . .

2-6-10 转换指令 . . . . . . . . . . . . . . . . . . . . . . . 2-6-11 逻辑指令 . . . . . . . . . . . . . . . . . . . . . . . 2-6-12 特殊数学指令 . . . . . . . . . . . . . . . . . . . . . 2-6-13 浮点数学指令 . . . . . . . . . . . . . . . . . . . . . 2-6-14 双倍精度浮点指令 . . . . . . . . . . . . . . . . . . . 2-6-15 表数据处理指令 . . . . . . . . . . . . . . . . . . . . 2-6-16 数据控制指令 . . . . . . . . . . . . . . . . . . . . . 2-6-17 子程序指令 . . . . . . . . . . . . . . . . . . . . . . 2-6-18 中断控制指令 . . . . . . . . . . . . . . . . . . . . .

23

2-6-19 高速计数器和脉冲输出指令 (仅 CJ1M-CPU21/22/23) . . . . . 2-6-20 步进指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-21 基本 I/O 单元指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-22 串行通信指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-23 网络指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-24 文件存储指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-25 显示指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-26 时钟指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-27 调试指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-28 故障诊断指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-29 其他指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-30 块编程指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-31 文本串处理指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-32 任务控制指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-33 型号转换指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6-34 功能块特殊指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-7 CPU 单元功能块规格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-7-1 2-7-2 2-8 2-8-1 2-8-2 规格. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 定时器指令操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块程序步骤数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 功能块实例执行时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94 96 96 99 100 101 102 102 104 104 105 106 107 109 110 111 111 111 115 116 116 116

功能块程序步骤数和实例执行时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

功能块规格

第 2-1 节

2-1
2-1-1

功能块规格
功能块规格
项目 功能块定义数 描述 CS1-H/CJ1-H CPU 单元:  ?后缀 -CPU44H/45H/64H/65H/66H/67H:最大 1,024—每 个 CPU 单元  ?后缀 -CPU42H/43H/63H:最大 128—每个 CPU 单元 CJ1M CPU 单元:  ?CJ1M-CPU11/12/13/21/22/23:最大 128—每个 CPU 单 元 CP1H CPU 单元  ?所有型号:最大 128—每个 CPU 单元 NSJ 控制器:  ?所有型号:最大 1,024- 每个控制器 FQM1 柔性运动控 制器:  ?FQM1-CM002/MMA22/MMP22:最大 128—每个控 制器 CS1-H/CJ1-H CPU 单元:  ?后缀 -CPU44H/45H/64H/65H/66H/67H:最大 2,048—每 个 CPU 单元  ?后缀 -CPU42H/43H/63H:最大 256—每个 CPU 单元 CJ1M CPU 单元:  ?CJ1M-CPU11/12/13/21/22/23:最大 256—每个 CPU 单 元 CP1H CPU 单元  ?所有型号:最大 256—每个 CPU 单元 NSJ 控制器:  ?所有型号:最大 2,048- 每个控制器 FQM1 柔性运动控 制器:  ?FQM1-CM002/MMA22/MMP22:最大 256—每个控制 器  ?CX-Programmer 5.0 版:不支持嵌套。  ?CX-Programmer 6.0 版和以后版本:支持可达 8 级的嵌 套 (从程序中调用的实例计为一嵌套级。 ) 最多 64 个变量 -- 每个功能块定义。

实例数

实例嵌套级数

I/O 变量数

2-1-2

功能块单元
定义功能块时用户必须输入的项目示于下表。
项目 功能块定义名称 语言 变量定义 描述 功能块定义名称 用于功能块定义的编程语言。选择梯级编程或结构化文本。 执行功能块时所要求的变量设置,如操作数和返回值等。 ? 变量类型 (用法) ? 变量名 ? 变量数据类型 ? 变量初始值 以梯级或结构化文本输入编程逻辑。 ? 用变量输入编程逻辑。 ? 无需注册变量即可直接输入常数。 功能块有注释。

算法

注释

25

功能块规格 功能块定义名称

第 2-1 节
每个功能块定义有一个名称。名称长度可达 64 个字符。无禁止字符。默认功能 块名称为 FunctionBlock@。其中 @ 是数字 (按次序分配) 。

CLOCK PULSE EN ENO (BOOL) (BOOL) ON_TIME (INT) OFF_TIME (INT)

语言


选择梯级编程语言或结构化语言 (ST 语言) 。 (1) 有关 ST 语言的详细内容请参阅附录 B 结构化文本 (ST 语言)规范。 (2) 嵌套时,采用 ST 语言和梯级语言的功能块可以自由组合 (仅指 6.0 版和 更高版本) 。

变量定义
变量名

定义用于功能块定义的操作数和变量。 ? 变量名可达 30,000 字符长。 ? 变量名中不能有空格或以下的任何字符: ! “ # $ % & ‘ ( )= - ~ ^ \ | ‘ @ { [ + ; * : } ] < , > . ? / ? 变量名不能以数字开头 (0~9) 。 ? 变量名一行不能有 2 个下划线字符。 ?

以下字符不能用来表示 I/O 存储器中的地址。
数字值 (字地址)后面所带的 A、 W、 H (或 HR) D (或 DM) 、 、 E (或 EM) T (或 TIM) C (或 CNT) 、 、 。

输出变量
CLOCK PULSE EN ENO (BOOL) (BOOL) ON_TIME (INT) OFF_TIME (INT)

tim_a tim_b ON_TIME OFF_TIME

TIMER TIMER
INT INT

tim_b TIMX tim_a OFF_TIME tim_a TIMX tim_b OFF_TIME ENO

26

功能块规格 变量类型 (用法)
项目 定义 输入 操作数到实例 输出 实例返回值 变量类型 内部 仅用于实例的变量

第 2-1 节

下一执行的数值状态 显示 许可数 AT 设置 数组设置 保持设置 默认创建的变量

数值不传递至下一执行 中。 示于实例左侧。 每个功能块最多 64 位 数 (不包括 EN) 无 无 无 EN (Enable) :接收输 入条件

数值传递至下一执行 中。 示于实例右侧。 每个功能块最多 64 位 数 (不包括 EN) 无 无 支持 ENO (Enable Output) :输出功能块 执行状态

数值传递至下一执行 中。 不显示 无限制 支持 支持 支持 无

外部 事先通过 CXProgrammer 注册为变 量的全局符号或用户自 定义全局符号 数值不传递至下一执行 中。 不显示 无限制 无 无 无 注册于 CX-Programmer 作为变量的预定义符 号。例如,条件标志和 一些辅助区域位。



有关外部变量的详细情况请参阅附录 C 外部变量。 ■输入变量 输入变量将外部操作数传递至实例中。输入变量示于实例左侧。 输入源值 (在调用实例之前包含在指定参数中的数据)传递至输入变量中。
P_On D0 EN ENO PV CV FB 1.0

D100

D0

PV

举例说明
0.0 D100 IN16 D200 IN32 OUT32 ADD_INT_DINT EN ENO 10.0

(
P_On

)
SIGN IN16 tmp

D1000 +L IN32 tmp OUT32

IN16 IN32

INT DINT

D100 D200

D201

tmp EN IN16 IN32 ENO OUT32

DINT BOOL INT DINT BOOL DINT

27

功能块规格
注 1.

第 2-1 节
相同的名称不能同时分配于输入变量和输出变量。如果输入变量和输出变 量为相同变量,则用不同名称注册变量并通过指令(例如 MOV)将输入变 量值传送至功能块中的输出变量。 执行实例时,在处理运算之前,输入值从参数传至输入变量。因此,在运 算中,不能从参数中读取数值作为输入变量。如果在运算执行周期内必须 读取数值,则不得从参数中传输数值。赋值给内部变量。使用 AT 设置(规 定的地址) 。或者,将全局符号作为外部变量。

2.

初始值 设输入变量初始值但要启动输入参数值(输入变量 EN 的输入参数值处于 ON, 执行实例) 。 注 使用 CX-Programmer 时,不能省略输入参数设定值。

EN (Enable) 变量 创建输入变量时,默认输入变量为 EN 变量。 当输入变量 EN 参数处于 ON 时,执行实例。 ■输出变量 输出变量将实例返回值传输至外部应用。 输出变量示于实例右侧。 执行实例后,输出变量值传至指定的参数中。
P_On EN D0 PV FB ENO CV 1.0

D100

CV D100

举例说明
0.0 D100 IN16 D200 IN32 OUT32 ADD_INT_DINT EN ENO 10.0

(
EN

)
SIGN IN16 tmp

D1000 +L IN32 tmp OUT32

OUT32

DINT D1000

D1001

tmp EN IN16 IN32 ENO OUT32

DINT BOOL INT DINT BOOL DINT

如内部变量一样,保持输出变量值直到下次执行实例(例如,EN 处于 OFF 时, 保持输出变量值) 。

28

功能块规格
举例说明: 在下例中,输出变量值 CV 一直保持直到下次执行实例。
A
CTD CD LD PV CV D150 Q

第 2-1 节



1.

相同的名称不能同时分配于输入变量和输出变量。 如果输入变量和输出变量为相同变量,则用不同名称注册变量并通过指令 (例如 MOV)将输入变量值传送至功能块中的输出变量。

2.

执行实例时,在处理运算之后,输入变量传至对应的参数中。因此,在运 算中,不能将输出变量中的数值写入参数中。如果在运算执行周期内必须 写入数值,则不得将数值写入参数中。赋值给内部变量。使用 AT 设置(规 定的地址) 。

初始值 设置未保持的输出变量初始值。例如,不选 Retain Option。如果选择 Retain Option,就不能设置输出变量初始值。 如果 IOM 保持位 (A50012)处于 ON,初始值不能写入输出变量中。
辅助区域控制位 IOM 保持位 (A50012) ON 初始值 不设置初始值。

ENO (Enable Output)变量 ENO 变量创建为默认输出变量。当调用实例时,ENO 输出变量打开处于 ON 状 态。用户可以修改该值。ENO 输出变量可以用作标记来检查实例执行是否正常 完成。

■内部变量 在实例内使用内部变量。对每个实例而言,这些变量为内部变量。不能从实例 外将这些变量作为参考标准而且这些变量不显示于实例中。 内部变量一直保持直到下次执行实例 (例如, EN 处于 OFF 状态时,内部变量 值保持不变) 。因此,即使以相同 I/O 参数执行相同功能块定义实例,其结果也 不一定一样。 举例说明: 内 部 变 量 tim_a in instance Pulse_2sON_1sOFF 与 内 部 变 量 tim_a in instance Pulse_4sON_1sOFF 不一样。因此,实例不能作为参考而且不影响相互的 tim_a 值。

29

功能块规格
Pulse_2sON_1sOFF P_On &20 ON_TIME &10 OFF_TIME

第 2-1 节

CLOCK PULSE EN ENO

1.0

tim_a tim_b ON_TIME OFF_TIME

TIMER TIMER INT INT

Pulse_4sON_1sOFF P_On &40 ON_TIME &10 OFF_TIME CLOCK PULSE EN ENO 1.1

0.0 D100

ADD_INT_DINT EN ENO IN16 OUT32

10.0

(
EN

)
SIGN IN16 tmp

D1000 +L IN32 tmp OUT32

D200

IN32

tmp

tmp EN IN16 IN32 ENO OUT32

DINT BOOL INT DINT BOOL DINT

通过断电和开始操作保持数据 内部变量保持最后调用实例的值。此外,当断电或开始操作 (PROGRAM 模式 切换至 RUN 或 MONITOR 模式)时,可以选择 Retain Option 以便内部变量也 保持其值不变。 当选择 Retain Option 时,一旦断电或开始操作时变量值即被保持不变—除非 CPU 单元无备用电池。如果 CPU 单元电池质量不佳,则变量值不稳定。
变量 变量设在 Retain 条件 开始操作 通电 状态 保持 保持

如果未选 Retain Option,则当断电或开始操作时变量值不能被保持。 如下表所 示,即使变量未设为保持,但在开始操作时使 IOM 保持位(A50012)处于 ON 状态也可保持变量值。在断电期间,设置 PLC Setup 保持变量值。
变量 条件 OFF IOM 保持位 (A50012)设置 ON 启动时选择的 IOM 保持位 (PLC Setup)状态 未设在 Retain 的变量 开始操作 通电 未保持 未保持 保持 保持 启动时未选的 IOM 保持位 (PLC Setup)状态 保持 未保持

30

功能块规格
注 IOM 保持位 (A50012)支持与以前型号兼容。

第 2-1 节

但要使变量值保持在功能块中不变,则使用 Retain Option 而非 IOM 保持位。 初始值 设置未保持的内部变量初始值。例如,不选 Retain Option。如果选择 Retain Option,就不能设置内部变量初始值。 不保持的内部变量初始化为 0。 如果 IOM 保持位 (A50012)处于 ON,初始值不能写入输出变量中。
辅助区域控制位 IOM 保持位 (A50012) ON OFF 初始值 不设置初始值。 设置初始值。

■外部变量 外部变量是事先由 CX-Programmer 注册的系统定义变量或全局符号表中用户自 定义变量的外部参考变量。 ? 有关系统定义变量的详细情况,请参阅附录 C 外部变量。 ? 如要将用户自定义变量作为全局符号表中参考变量,则必须采用与外部变 量相同的变量名和数据类型将变量注册于全局符号表中。 变量属性 变量名 变量名用来识别功能块中的变量。变量名长度可达 30,000 个字符。相同的变量 名可以用于其他功能块中。 注 即使变量带 AT 设置 (规定的地址) ,也必须输入变量名。 数据类型 可以使用以下类型的任何一个:
数据类型 BOOL INT UNIT DINT UDINT LINT ULINT WORD DWORD LWORD REAL LREAL TIMER COUNTER 内容 位数据 整数 无符号整数 双整数 无符号双整数 长 (4 个字)整数 无符号长 (4 个字) 16 位数据 32 位数据 64 位数据 实数 长实数 定时器 (见注 1) 计数器 (见注 2) 1位 16 位 16 位 32 位 32 位 64 位 64 位 16 位 32 位 64 位 32 位 64 位 标记:1 位 PV:16 位 标记:1 位 PV:16 位 大小 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 不支持 不支持 输入 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 不支持 不支持 输出 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 可以 内部

31

功能块规格


第 2-1 节
(1) TIMER 数据类型用来将定时器号变量(0 到 4095)输入 TIMER 指令操作 数(TIM 和 TIMH 等) 。当该变量用于另一指令中时,对定时器完成标记 (1 位)或定时器当前值(16 位)进行规定(取决于指令操作数) 。TIMER 数据类型不能用于结构化文本功能块。 (2) COUNTER 数据类型用来将计数器号变量(0 到 4095) 输入 COUNTER 指 令操作数 (CNT 和 CNTR 等) 。当该变量用于另一指令中时,对计数器 完成标记 (1 位)或计数器当前值 (16 位)进行规定 (取决于指令操作 数) COUNTER 数据类型不能用于结构化文本功能块。 。 AT 设置 (实际地址分配) 在内部变量中,将变量设为特殊 I/O 存储地址而不是系统自动分配地址。 在此属性中,用户可输入所需的 I/O 存储地址以规定特殊地址。 即使设置了具体的地址,变量名还是必须用于算法中。 注 (1) AT 属性仅为内部变量而设。 (2) AT 设置只能与 CIO (核心 I/O 区域) A (辅助区域) D (数据存储 、 、 区) 、E(扩展存储区)和 H(保持中继区域)以及 W (内部中继区域) 。 不能在以下存储区中设置 AT 属性: ? 变址寄存器和数据寄存器区域 (直接 / 间接规定) ? 间接规定 DM/EM (:二进制模式; *:BCD 模式) (3) AT 设置可用于以下分配: ? 基本 I/O 单元、 CPU 总线单元或特殊 I/O 单元的地址; ? 事先未注册为外部变量的辅助区域位; ? 网络中其他节点的 PLC 地址; ? 规定多字中的起始字 (或结束字)的指令操作数。 举例说明: 如果 READ DATA FILE 指令 (FREAD)正用于功能块定义而且必须检查文件 存储操作标记 (A34313) ,则使用内部变量并指定 AT 设置中的标记地址。 注册内部变量,选择 AT 设置选项,指定 A34313 为内部变量地址。通过该内部 变量检查文件存储器操作标记状态。

A34313 NOW_CARD_ACCESS.

当使用 AT 设置时,功能块失去其灵活性。因此,只有在必要时才使用该功能。

32

功能块规格
数组设置 在内部变量中,其中一个变量定义为数组。 注 CX-Programmer 只支持一维数组。

第 2-1 节

在数组设置中,只需注册一个变量即可使用大量的具有相同属性的变量。 ? 数组由 1 到 32,000 个数组元素组成。 ? 仅对内部变量进行设置数组。 ? 只要是内部变量,任何数据类型均可用于数组变量。 ? 当将数组变量名输入于功能块定义算法中时,在变量号后面的方括号内输 入数组变址号。可以采用以下三种方法来规定变址。 (在这种情况下数组变 量为 a[]。 ) ? 直接用数字 (用于梯级或 ST 语言编程) 举例说明:a[2] ? 用变量 (用于梯级或 ST 语言编程) 举例说明:a[n] ;其中 n 是变量。 注 INT、 DINT、 LINT、 UINT、 UDINT 或 ULINT 可用作变量数据类型 : ? 有方程式 (仅用于 ST 语言编程) 举例说明:a[b+c],其中, b 和 c 为变量。 注 方程式只包含算术运算符 (+、 .、 * 和 /) 。 一个数组是由一组相同类型的数据项组成。每个数组元素具有相同的变量名和 唯一的变址。 (变址表示数组中元素的位置) 。 一维数组是一个只有一个变址号的数组。 举例说明:当一个名为 SCL 的内部变量设为一个有 10 个元素的数组变量时, 以下 10 个变量可以使用: SCL[0]、SCL[1]、SCL[2]、SCL[3]、SCL[4]、SCL[5]、SCL[6]、SCL[7]、SCL[8] 和 SCL[9]。
SCL
0 1 2 3 4 5 6 7 8 9

WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD

SCL[3]

SCL

0

9



如果有 AT 属性的内部变量不能设为操作数以及不能设置外部变量的话,在这 种情况下,此时如果要在指令操作数中规定多字的第一或最后一个字以能再使 用功能块,则使用内部数组变量。准备一个含所需大小的元素数的数组变量。 在每个数组元素中设置了数据后,规定操作数数组变量的第一个或最后一个元 素。

33

功能块规格
举例说明:

第 2-1 节

SCL SCL W ORD[10] EN S ENO D 100

SCL- BODY SCL LD P_ On MOV #0000 SC SCL[0] MOV &0SCL[1] SC MOV #0300 SC SCL[2] MOV &4000 SC SCL[3] SCL S SC SCL[0] D
0 1 2 3 #0000 &0 #0300 &4000



详细情况,请参阅 2-5 规定多字中第一个字或最后一个字的操作数指令注意事 项。 初始值 当首次执行实例时,设置输入变量、内部变量和输出变量的初始值。详细情况 请分别参阅前面所述的输入变量、内部变量和输出变量中的初有关初始值内 容。

通过断电和开始操作保持数据 通过断电和开始操作保持数据。 当选择 Retain Option 时, 变量分配于存储区内。 当断电和 PLC 操作开始时保持该存储区。

算法
操作数输入限制 注

用注册变量输入逻辑编程。 在功能块中,地址不能直接输入指令操作数中。直接输入的地址将作为变量名 处理。 特例:直接或间接地将变址寄存器 IR0 到 IR15 指定地址输入指令操作数中;直 接将数据寄存器 DR0 到 DR15 输入指令操作数中。 常数直接输入指令操作数。 ? 梯级编程语言。 # 后面输入十六进制数值;在 & 后面输入十进制数。 在

34

实例规格

第 2-2 节
? 结构化文本(ST 语言) :在 16# 后面输入十六进制数值;十进制数照原 样不动。

注释

可以输入多达 30,000 长字符的注释。

2-2
2-2-1

实例规格
实例组成部分
下表列出了注册实例时用户必须设置的项目。
项目 实例名 语言变量定义 功能块实例区 注释 说明 实例名 编程和变量与功能块定义一样 变量所用的地址范围 输入每个实例的注释

实例名

这是实例名。 ? 实例名可达 30,000 个字符长。 ? 实例名不能包含空格或以下字符中的任何一个: ! “ # $ % & ‘ ( )= - ~ ^ \ | ‘ @ { [ + ; * : ] } < , > . ? / ? 实例名不能以数字 (0 到 9)开始。 无其他限制。 实例名示于实例上面。

Pulse_2sON_2sOFF CLOCK PULSE EN ENO ON_TIME &10 OFF_TIME

&20

功能块实例区域

系统需要存储器来存储实例内部变量和 I/O 变量从而可以使用功能块。这些区 域作为功能块实例区域,用户必须定义第一个地址和大小。第一个地址和区域 大小规定为 1 个字单位。 当 CX-Programmer 编辑功能时,如果有任何用户程序存取这些区域中的字会输 出错误。

35

实例规格
CS/CJ- 系列 CPU 单元 3.0 版或以后版本和 NSJ 控制器
FB 实例区域 非保持 保持 定时器 计数器 起始地址 H512 H1408 T3072 C3072 默认值 终端地址 H1407 H1535 T4095 C4095

第 2-2 节

适用存储器区域 大小 896 128 1024 1024 CIO, WR, HR, DM, EM HR, DM, EM TIM CNT

FQM1 柔性运动控制器
FB 实例区域 非保持 保持 定时器 计数器 起始地址 5000 无 T206 C206 默认值 终端地址 5999 T255 C255 适用存储器区域 大小 1000 50 50 CIO, WR, DM TIM CNT

功能块实例区域类型

在功能块实例区域中进行以下设置: CS/CJ- 系列 CPU 单元 3.0 版或以后版本 非保持区域
项目 分配的变量 应用区域 内容 在断电和操作开始时保持属性的变量设为非保持变量。 (见注 1) H (功能块特殊保持区域) I/O (CIO 区域) H (保持区 、 、 域) W (内部中继区域) D (数据存储器区域) 、 、 (见注 2) E (扩展数据存储器区域) 、 (见注 2 和 3) 。 设为字 H512 到 H1407

设置单位 分配字 (默认)



(1) 当数据类型设为 TIMER 或 COUNTER 时除外。 (2) 即使DM或EM区域规定为非保持区域或保持区域, 但仍可以存取位数据。 (3) 如果 EM 区域规定为非保持区域或保持区域的话,则相同的存储体名不能 规定为用户程序中当前存储体。 保持区域
项目 分配的变量 应用区域 内容 在断电和操作开始时保持属性的变量设为非保持变量。 (见注 1) H (功能块特殊保持区域) I/O (CIO 区域) H (保持区 、 、 域) W (内部中继区域) D (数据存储器区域) 、 、 (见注 2) E (扩展数据存储器区域) 、 (见注 2 和 3) 。 设为字 H1408 到 H1535

设置单位 分配字 (默认)



(1) 当数据类型设为 TIMER 或 COUNTER 时除外。 (2) 即使DM或EM区域规定为非保持区域或保持区域, 但仍可以存取位数据。

36

实例规格

第 2-2 节
(3) 如果 EM 区域规定为非保持区域或保持区域的话,则相同的存储体名不能 规定为用户程序中当前存储体。 定时器区域
项目 分配的变量 应用区域 分配字 (默认) 内容 TIMER 设为数据类型的变量 T (定时器区域)定时器标记 (1 位)或定时器 PV (16 位) T3072 到 T4095 定时器标记 (1 位)或定时器 PV (16 位)

Counter Area
项目 分配的变量 应用区域 分配字 (默认) 内容 COUNTER 设为数据类型的变量 C (计数器区域)定时器标记 (1 位)或定时器 PV (16 位) C3072 到 C4095 定时器标记 (1 位)或定时器 PV (16 位)

功能块保持区域 (H512 到 H1535) 设为保持和非保持字的功能块保持区域字默认分配为 H512 到 H1535。 这些字与 用于程序的标准保持区域 (H000 到 H511)不同而且这些字只能用于功能块实 例区域 (内部分配变量区域) 。 ? 在内部变量 AT 设置中不能指定这些字。 ? 这些字不能规定为指令操作数。 ? 如果未创建功能块时输入这些字,则这些字显示为红色。 ? 当创建功能块时虽然可以输入这些字,但在检查程序时会出现错误。 ? 如果该区域指定为非保持区域, 则当开始操作时接通电源 / 断电或清除区域 而此时数值不被保留。 注 为防止实例区域地址与程序地址重叠, 非保持区域和保持区域的地址设在 H512 到 H1535 之间 (功能块保持区域字) 。 FQM1 柔性运动控制器
FB 实例区域 非保持 保持 定时器 计数器 起始地址 5000 无 T206 C206 默认值 终端地址 5999 T255 C255 适用存储器区域 大小 1000 50 50 CIO, WR, DM TIM CNT

非保持区域
项目 分配的变量 应用区域 设置单位 分配字 (默认) 内容 在断电和操作开始时保持属性的变量设为非保持变量。 (见注 1) I/O (CIO 区域) W (内部中继区域)和 D (数据存储器区 、 域) (见注 2) 设为字 CIO5000 到 CIO5999



(1) 当数据类型设为 TIMER 或 COUNTER 时除外。

37

实例规格

第 2-2 节
(2) 即使DM或EM区域规定为非保持区域或保持区域, 但仍可以存取位数据。 保持区域 无 定时器区域
项目 分配的变量 应用区域 分配字 (默认) 内容 TIMER 设为数据类型的变量 T (定时器区域)定时器标记 (1 位)或定时器 PV (16 位) T206 到 T255 定时器标记 (1 位)或定时器 PV (16 位)

计数器区域
项目 分配的变量 应用区域 分配字 (默认) 内容 COUNTER 设为数据类型的变量 C (计数器区域)定时器标记 (1 位)或定时器 PV (16 位) C206 到 C255 定时器标记 (1 位)或定时器 PV (16 位)

从用户程序中存取功能块实 例区域

如果用户程序中含有指令可以存取功能块实例区域。则如果尝试以下操作时错 误会示于 CX-Programmer 的 Output Window 的 Complie Tab 中。 ? 试图在线编辑时写入 (不能写入) ? 执行程序检查 (在程序菜单中选择Compile 或在PLC菜单中选择Compile All PLC Programs) 举例说明:如果 W0 到 W511 指定为功能块实例区域的非保持区域而 W0.00 用 于梯级程序中,则在编辑时会发生错误并显示为“ERROR: [omitted]...- Address -W0.00 is reserved for Function Block use]。

P_Off EN

FB ENO

1. 0

Instance data area Start Non Retain Retain Timers Counters

address

Size 512

W0

W0.00

3.0

Compile error



当增加或删除变量时,功能块实例区域中变量分配将自动再分配。单个实例按 顺序获得地址。但如果不能按顺序获得地址,则所有变量分配到的地址均不相 同。因此,会创建不用区域。如果出现这种情况,则执行优化操作从而有效使 用分配区域并删除不用区域。 可以输入多达 30,000 长字符的注释。

注释 创建多个实例 调用相同实例

可从多个地方调用一个实例。在这种情况下,实例变量共享。

38

实例规格

第 2-2 节

制作多个实例

可从单个功能块定义中创建多个实例。在这种情况下,每个实例的内部变量值 均不相同。 举例说明:计算产品 A 和产品 B 准备一块称作下计数器的功能块定义(CTD)安装产品 A 和产品 B 的计算、数 器。有两种程序。一种程序是自动操作;另一种是手动操作。用户可以自己切 换合适的操作模式。 在这种情况下,从单个功能块中创建多个实例。 必须从多个地方调用相同实例。
1( A
CTD CD LD PV CV D100 Q CD LD PV CV D150

)

2( B

)

CTD Q

B
CTD CD LD PV CV D200 Q

1 A
I/O

A
,

FB

FB Body B
FB

B
I/O ,

Body

2 A
FB

Body

2-2-2 参数规格
由用户在输入参数和输出参数中设置的数据如下:
项目 输入参数 应用区域 数值 (见注 1) 、地址和程序符号 (全局符号和局部符号) (见注 2) 注 注 输出参数 从参数中传至输入变量中的数据为输入变量数据实际 值。 (即使在参数中设置了地址,但地址本身不传输) 。 必须设置输入参数。如果有一个输入程序未设置,则会 出现致命错误。输入参数不传输至实际的 PLC 中。

地址和程序符号 (全局符号和局部符号) (见注 2)

39

实例规格

输入变量数 据类型 BOOL 位数据 INT 整数 DINT LINT UINT UDINT ULINT REAL 双整数 长 (8 字节) 无符号整数 无符号双整数 无符号长 (8 字节) 实数 内容

第 2-2 节
(1) 数值输入于参数的方法示于下表。
大小 1位 16 位 32 位 64 位 16 位 32 位 64 位 32 位 正值:& 或 + 后面跟实数 (有十进制小数); 负值:- 后面跟整数 (有十进 制小数); 正值:& 或 + 后面跟整数; 参数值输入方法 P_Off, P_On 正值:& 或 + 后面跟整数; 负值:- 后面跟整数; 设置范围 0 (FALSE), 1 (TRUE) -32,768 to 32,767 -2,147,483,648 to 2,147,483,647 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 &0 to 65,535 &0 to 4,294,967,295 &0 to 18,446,744,073,709,551,615 -3.402823 × 10 ~ -1.175494 × -38 -38 10 , 0, 1.175494 × 10  ~ 38 3.402823 × 10 -1.79769313486232 × 10 ~ -308 -2.22507385850720 × 10 , 0, -308 2.22507385850720 × 10 , 308 1.79769313486232 × 10 #0000 ~ FFFF 或 &0 ~ 65,535
308 38

LREAL

长实数

64 位

WORD

16- 位数据

16 位

DWORD

32- 位数据

32 位

LWORD

64- 位数据

64 位

# 后面跟十六进制数 (最多 4 位数); & 或 + 后面跟实数 (有十进制小数); # 后面跟十六进制数 (最多 8 位数); & 或 + 后面跟实数 (有十进制小数); # 后面跟十六进制数 (最多 16 位数); & 或 + 后面跟实数 (有十进制小数);

#00000000 ~ FFFFFFFF 或 &0 ~ 4,294,967,295 #0000000000000000 ~ FFFFFFFFFFFFFFFF 或 &0 ~ 18,446,744,073,709,551,615

(2) 功能块输入变量和输出变量大小必须与程序符号(全局和局部符号)匹配 一致。详见下表。
大小 1位 16 位 32 位 64 位 1 位以上 BOOL INT, UINT, WORD DINT, UDINT, REAL, DWORD LINT, ULINT, LREAL, LWORD 非波尔 功能块变量数据类型 程序符号 (全局和局部符号)数据 类型 BOOL INT, UINT, UINT BCD, WORD DINT, UDINT, UDINT BCD, REAL, DWORD LINT, ULINT, ULINT BCD, LREAL, LWORD CHANNEL, NUMBER ( 见注释 )



只有程序符号 NUMBER 可以设置于输入参数中。 输入值必须在功能块变量数据类型大小范围内。

40

实例规格

第 2-2 节

2-2-3
调用实例

操作规范
用户可以从任何地方调用实例。当输入 EN 处于 ON 时,执行实例。
0.0 EN D0 A B ENO D10 1.0

EN ? ? EN EN 1.0 OFF ON 1.0 ON

0.0 D10 D10

执行实例时的操作

当功能块 EN 输入变量的输入处于 ON 时, 系统调用功能块。 当调用功能块时, 系统生成实例变量并复制注册功能块中的算法。然后,执行实例。
Pulse_2sON_1sOFF P_On &20 ON_TIME &10 OFF_TIME ENO CLOCK PULSE EN ENO 1.0 tim_b TIMX tim_a OFF_TIME

(

)

1.

FB
tim_a TIMX tim_b ON_TIME

2. FB (Pulse_2sON_1sOFF)
----&20 &10

200-100ms_PULSE_tim_a 200-100ms_PULSE_tim_b 200-100ms_PULSE_ON_TIME 200-100ms_PULSE_OFF_TIME

3. (Image)
Pulse_2sON_1sOFF tim_b Pulse_2sON_1sOFF tim_a Pulse_2sON_1sOFF tim_a Pulse_2sON_1sOFF tim_b Pulse_2sON_1sOFF ENO Pulse_2sON_1sOFF ON_TIME Pulse_2sON_1sOFF OFF_TIME

执行次序如下: 1. 2. 3. 从参数中的数据读入输入变量中。 进行运算。 将输出变量中的数据写入参数中。

1.

2.

3.

数据不能与算法中的参数交换。 此外,如果进行运算不修改输出变量,则输出参数仍保留其原值。

41

实例规格
不执行实例时的操作

第 2-2 节
当功能块 EN 输入变量的输入处于 OFF 时,不调用功能块。因此,实例内部变 量不发生变化 (数值保持不变) 。同样,当 EN 处于 OFF 时,输出变量不发生 变化 (数值保持不变) 。
FB Body

P_Off EN

FB ENO

1.0 P_On ENO
Internal variable a

1.0

OFF

a

P_Off

P_On

1.0

1.0

a

OFF

! 注意

当实例的EN熟人变量处于OFF时不执行实例。 因此, 当EN处于OFF时, 不初始 化微分和定时器指令。如果微分和定时器指令正在使用,则使用 Always ON 标 记 (P_On)用于 EN 输入条件以及包含在功能块定义内的指令输入条件。 通过 CX-Programmer 6.0 版或以后版本可以从另一功能块中调用功能块。 例如, 支持嵌套。功能块可以嵌套 8 级 (包括从程序中调用的功能块) 。 调用功能块和被调用功能块可以是 ST 语言和梯级语言或两者组合。

嵌套

FB0:
INSTANCE_FB0 FB0 INSTANCE_FB1

FB1:
INSTANCE_FB2

FB7:
INSTANCE_FB8 7th FB8 8th

FB8:

1st

FB1

2nd

FB2

FB0 (ST)
;
INSTANCE_FB1 (A:=FB1__OUT1,B=:>FB1_IN1)

FB1 (ST)

FB7 (ST)

FB8 (ST)

INSTANCE_FB2 (...,..)

INSTANCE_FB8 (...,..)

INSTANCE_FB1,

INSTANCE_FB2,

功能块嵌套级还可以目录树格式显示。同时还具有 FB 实例浏览器功能。

嵌套的功能块功能块定义包含在含调用功能块定义的功能块库文件(.cxf)中。

42

功能块限制

第 2-3 节

2-3

功能块限制
对用于梯级程序中的指令有一些限制。 以下指令不能用于功能块定义中。如果使用其中任何一个指令,则会发生错 误。 ? 块编程指令 (包括 BPRG 和 BEND 的所有指令) ? 子程序指令 (SBS、 GSBS、 RET、 MCRO、 SBN、 GSBN 和 GRET) ? 跳转指令 (JMP、 CJP、 CJPN 和 JME) ? 梯级指令 (STEP 和 SNXT) ? 立即刷新指令 (!) ? I/O REFRESH 指令 (IORF) ? TMHH 和 TMHHX 指令 ? CV 地址转换指令 (FRMCV 和 TOCV) ? 堆栈记录位置指令 (PUSH、 FIFO、 LIFO、 SETR 和 GETR) ? FAILURE POINT DETECTION 指令 (FPD) ? 定时器 / 计数器 PV 移至寄存器指令 (MOVRW)

梯级编程限制
功能块定义中禁止的指令

AT 设置限制 (未支持数据 区域)

以下区域中的地址不能用于 AT 设置。 ? 变址寄存器 (既不支持间接编址也不支持直接编址)和数据寄存器 注 直接输入地址而不是 AT 设置。 (既不支持二进制模式也不支持 BCD 模式间接编址) ? 间接编 DM 或 EM 地址

指令操作数中的 I/O 存储器 直接编址

? 地址而非变量可以直接输入于变址寄存器 (间接和直接编址)和数据寄 存器。 以下数值可以输入于指令操作数中: 直接编址:IR0 到 IR15 ;间接编址:,IR0 到 ,IR15; 常数偏移(举例说明) : +5,IR0 ; DR 偏移:DR0、IR0 ;自动递增量:,IR0++ ;自动递减量:--,IR0 ? 指令操作数的直接编址不支持 I/O 存储器中的其他任何区域。

I/O 变量限制 (未支持数据 区域)

以下数据区域中的地址不能用作输入和输出变量参数。 ? 变址寄存器 (既不支持间接编址也不支持直接编址)和数据寄存器 ? 间接编DM或EM地址 (既不支持二进制模式也不支持BCD模式间接编址)

联锁限制

当从联锁的程序段中调用功能块时,不执行功能块定义内容。联锁的功能块作 为联锁子程序。

P_Off IL FB_BODY FB

ILC

43

功能块限制
功能块定义中微分指令

第 2-3 节
当 EN 输入变量处于 OFF 时,不执行实例。因此,当使用功能块定义中的微分 指令时要遵守以下注意事项: (微分指令包括 DIFU、DIFD 和任何带 @ 或 % 前 缀的指令) ? 只要实例 EN 输入变量处于 OFF, 执行条件就保持在其原有状态 (EN 输入变 量处于 ON 时的最后状态) 。微分指令不运行。 ? 当实例 EN 输入变量将要处于 ON 时, 当前的执行条件状态不与最后循环状 态进行比较。当 EN 输入变量已处于 ON 时,当前的执行条件状态与最后循 环状态进行比较。因此,微分指令运行不正常。 (如果 EN 输入变量仍处于 ON 的话,则当下一前沿或后沿出现时微分指令正常运行) 。 举例说明:
0.0 FB1 EN IN1 ENO OUT1 LD EN OR IN1 SET OUT1

Body

0.00 0.00

OFF OFF

ON

如果微分指令正在使用,则使用 Always ON 标记(P_On)用于 EN 输入条件以 及包含在功能块定义内的指令输入条件。
P_ On FB1 EN 0.00 a IN 1
EN ON

ENO O UT1

LD a OR I N1 SET OUT1

? 当指定以下指令的第一个操作数时,在 “#”后输入十进制数值: MILH(517), MILR(518), MILC(519), DIM(631), MSKS(690), MSKR(692), CLI(691), FAL(006), FALS(007), TKON(820), TKOF(821) 注 不支持 “&” 。

? CNR (545)和 CNRX (547) (RESET TIMER/COUNTER)指令不能用来 同时复位功能块中的多个定时器和计数器。 始终规定第一个操作数 (定时器 / 计数器编号 1)和第二个操作数 (定时 器 / 计数器编号 2)变量为相同的变量。不能将不同变量赋予第一个操作数 和第二个操作数的变量。

功能块定义中的定时器 指令

当 EN 输入变量处于 OFF 时,不执行实例。因此,当使用功能块定义中的微分 指令时要遵守以下注意事项: (微分指令包括 DIFU、DIFD 和任何带 @ 或 % 前 缀的指令) 即使实例 EN 输入变量处于 OFF,定时器指令仍不初始化。因此,定时器已开 始操作后如果 EN 输入变量处于 OFF 的话,则定时器完成标记处于 OFF。

44

功能块限制

第 2-3 节

0.00 EN

Body

FB1 ENO UP LD EN TI M t i m U P

0.00 OFF

OFF UP

如果定时器指令正在使用,则则使用 Always ON 标记(P_On)用于 EN 输入条 件以及包含在功能块定义内的指令输入条件。
P_ On FB1 EN 0.00 a ENO UP LD a TI M t i m U P
Body

0.00

OFF UP

OFF

? 如果含一个定时器的相同实例同时用于多个地方的话,则复制定时器。

ST 编程限制

? 只支持以下的语句和运算符。 ? 赋值语句 ? 选择语句 (CASE 和 IF 语句) ? 迭代语句 (FOR、 WHILE、 REPEAT 和 EXIT 语句) ? RETURN 语句 ? 功能块调用语句 ? 算术运算符 ? 逻辑运算符 ? 比较运算符 ? 数函词 ? 算术函数 ? 注释 ? 不能使用 TIMER 和 COUNTER 数据类型。 欲知详情,请参阅附录 B 结构化文本 (ST 语言)规格。

45

功能块限制 程序结构注意事项
程序结构注意事项 实例左面无分支 实例左侧不允许有分支。只允许在右侧有分支。

第 2-3 节

FB

FB

每级只有一个实例

程序级不能有一个以上的实例。

FB

FB

FB

无功能块连接

功能块输入不能与另一功能块输出连接。在这种情况下,必须注册变量以便将 第一个功能块的输出传输至第二个功能块输入中。
0.0 0.0 FB1 EN XOUT D100 FB2 XIN1 0.0 XIN2 EN D3000 XIN1 D100 XIN2 FB2 EN XOUT FB1 D3000

FB1

FB2

下载于任务单元 编程控制台显示 在线编辑限制

包含功能块的任务不能下载于任务单元中,但可以上载。 当用 CX-Programmer 创建的用户程序下载于 CPU 单元而且已被编程控制台读 取时,所有实例以问号形式显示。 (实例名不显示。 ) 在 CPU 单元中,在用户程序上执行以下在线编辑运算符。 ? 修改或删除功能块定义 (变量表或算法) ? 插入实例或修改实例名 注 可以修改实例 I/O 参数,删除实例。修改实例外的指令。

46

功能块应用指南 与错误有关的限制

第 2-4 节
如果在执行功能块定义时 CPU 单元发生致命错误,在发生错误地方停止执行梯 级程序。
FB Body LD P_On ++ AAA Fatal error occurs here. MOV AAA BBB

0.0 EN D100 AAA

FB ENO BBB

10.0

D200

在这种情况下,不执行 MOV AAA BBB 指令以及输出变量 D200 保持执行功能 块之前的数值。

禁止进入 FB 实例区域

要使用功能块,则系统需要有存储器区来存储实例内部变量和 I/O 变量。 CS/CJ- 系列 CPU 单元 3.0 版或以后版本和 NSJ 控制器
功能块实例范围 非保持 保持 定时器 计数器 启动地址的初始 值 H512 H1408 T3072 C3072 大小的初始 值 896 128 1,024 1,024 允许的数据范围 CIO, WR, HR, DM, EM HR, DM, EM TIM CNT

FQM1 柔性运动控制器
FB 实例区域 非保持 保持 定时器 计数器 起始地址 5000 无 T206 C206 默认值 终端地址 5999 T255 C255 适用存储器区域 大小 1000 50 50 CIO, WR, DM TIM CNT

如果存取 FB 实例区域地址的用户程序有指令,则 CX-Programmer 在以下情况 下输出错误。 ? 用户在程序菜单中选择 Program -Compile 或在 PLC 菜单中选择 Compile All Programs 来检查程序时; ? 当试图通过在线编辑来写程序时 (可以写) 。

2-4
2-4-1

功能块应用指南
本节提供了有 CX-Programmer 的功能块使用指南。

确定变量数据类型
当处理 1 字、 2 字或 4 字数据中的单数时,使用以下数据类型: ? INT 和 UINT ? DINT 和 DINT ? LINT 和 ULINT

整数数据类型 (1 字、 2 字或 4 字数据)

47

功能块应用指南
注 字数据类型 (1 字、 2 字或 4 字数据) 如果所用的数字在范围内,则使用带符号整数。

第 2-4 节

当处理 1 字、 字或 4 字数据中的数据组 2 (非数字数据) 时, 使用以下数据类型 : ? WORD ? DWORD ? LWORD

2-4-2

确定变量类型 (输入、输出、外部和内部)
使用以下输入变量将功能块粘贴于程序中,然后修改传至每个实例功能块的数 值 (不是地址) 。
A

采用输入变量来修 改已传递 的值

&3 &50

Unit No. PARA

以下二种类型的限制可以采用。 ? 地址设于输入参数中但地址不能传至输入变量中 (即使地址设于输入参数 中,输入变量的数据类型大小值传至功能块中) 。因此,当在功能块内将多 字的第一个字或最后一个字在操作数中加以规定时,输入变量不能用于操 作数。 规定使用带 AT 设置的内部变量;规定内部数组变量的第一个元素或 最后一个元素或使用外部变量 (具体内容请参阅 2-4-4 内部变量数组设 置) 。
A DATA_1 2
D00100 DATA_1

XFER (BLOCK TRANSFER) 10 DATA_1 DATA_2 D00100

W500

DATA_2

DATA_2 2 W500 W501

XFER &10 DATA_1 DATA_2

? 在进行运算之前,数值从输入参数中以批量方式传输至输入变量中 (不与 执行算法中指令同时进行) 。因此,当执行功能块算法中指令时,使用内部 变量或外部变量而非输入变量将数值从参数传递至输入变量中。

48

功能块应用指南
从输出变量中传递 数值或监 视输出变量

第 2-4 节
使用输出变量来粘贴至程序中,然后,从功能块中传输每个实例值 (程序)或 监视数值。
A

OK_Flag

W0.00 W0.01

NG_ Flag

采用以下限制。 ? 进行运算后,数值从输出变量传输至少输出参数中。 外部变量:程序中的条件标 记、时钟脉冲、辅助区域位 用于程序中的条件标记 (例如, Always ON 标记和 Equals 标记)、时钟脉冲 (例如, 1.0 秒时钟脉冲位) 、预先注册的辅助区域位 (例全局符号如,首次循 环标记)和全局符号全部是由系统定义的外部变量。 未规定位输入、输出或外部的变量均为内部变量。内部变量包括内部分配地址 的变量、要求有 AT 设置地址的变量(例如,I/O 分配地址、特殊分配于特殊 I/ O 单元的地址)或需要数组设置的变量。有关需要 AT 设置或数组设置条件的 详细资料,请参阅 2-4-3 内部变量 AT 设置 和 2-4-4 内部变量数组设置。

内部变量:内部分配的变量 和需要 AT 设置的变量

2-4-3

内部变量 AT 设置
在以下条件下始终规定内部变量的 AT 设置。 ? 当采用分配于基本I/O单元、 特殊I/O单元或CPU总线单元的地址时, 这些地 址注册于不能规定为外部变量的全局符号中 (例如,为全局符号所设置的 数据不稳定) 。 注 特殊 I/O 单元分配地址的变址寄存器规定方法需要 AT 设置 (为分 配区域第一个地址而规定的) (详情请参阅 2-4-5 规定分配于特殊 。 I/O 单元的地址。 )

? 当使用未预先注册为外部变量的辅助区域位时,这些位注册为未规定为外 部变量的全局符号。 ? 当第一个目的地字在远程节点处设为 SEND (090)时以及第一个源字在本 地节点处设为 RECV (098) 。 ? 当指令操作数规定了多字的第一个字或最后一个字以及内部数组变量不能 规定为操作数时 (例如,不能规定数组元素数量) 。

49

功能块应用指南

第 2-4 节

2-4-4

内部变量数组设置
当在指令操作数中规定一组字的第一个字或最后一个字 (见注释)时, 在 AT 规格或内部分配后根据地址进行指令操作。 (因此,变量数据 类型和变量元素 数量与指令操作无关) 。始终规定有 AT 设置的变量 或有一组元素(与指令处 理的数据量相匹配)的数组变量。 一些例子为 XFER(070) (BLOCK TRANSFER) 指令的第一个源字或第一个目的 地字; SEND(090) 第一个源字或适用指令的控制数据。 详情请参阅 2-5 规定多字中第一个字或最后一个字的操作数指令注意事项。采 用以下方法来规定数组变量。 1,2,3... 1. 配置有所需元素数的内部数组变量。 注 2. 3. 确保指令处理的数据量与元素数一样。有关每个指令处理的数据量 的详细内容请参阅 2-6 指令支持和操作数限制。

采用数组变量来规定多字操 作数中的第一个字或最后一 个字



采用功能块定义中的 MOV 指令来将数据设置于每个数组元素中。 规定操作数的数组变量第一个 (或最后一个)元素。因此,第一个 (或最 后一个)地址规格在字范围内。

下例可证。 处理多字中的单串数据 在本例中,数组包含 FREAD 指令的目录和文件名 (操作数 S2) 。 ? 变量表 内部变量;数据类型 = WORD ;有 10 个元素的数组设置;变量名 = 文件 名 [0] 到文件名 [9] ? 梯级编程
MOV #5C31 file_name[0] MOV #3233 file_name[1] MOV #0000 file_name[2]) FREAD (omitted) (omitted) file_name[0] (omitted)

处理多字中的控制数据 在本例中,数组包含 FREAD 指令的字数和第一个源字 (操作数 S1) 。 ? 变量表 内 部 变 量 ; 数 据 类 型 = DINT ; 有 3 个 元 素 的 数 组 设 置 ; 变 量 名 = read_num[0] to read_num[9] ? 梯级编程
MOVL &100 read_num[0] (No._of_words) MOVL &0 read_num[1] (1st_source_word) FREAD (omitted) read_num[0] (omitted) (omitted)

50

功能块应用指南
处理多字中的读取数据块

第 2-4 节

必须事先确定读取数据的许可量。必须配置数组。这样,可以处理最大数据量。 在本例中,数组接收 FREAD 指令的读取数据 (操作数 D) 。 ? 变量表 内部变量;数据类型 = WORD ;有 100 个元素的数组设置;变量名 = read_data[0] to read_data[99] ? 梯级编程
FREAD (omitted) (omitted) (omitted) read_data[0]

除法 -- 采用整数数组变量 (仅指梯级编程) 注

两元素数组可以用来存储梯级程序结果。指令结果为 D (商数)和 D+1 (余 数) 。该方法可以用来获得梯级编程除法运算中获得余数。 当采用 ST 语言时,无需使用数组来接收除法运算结果。此外,不能在 ST 语言 中直接计算余数。必须按如下方法计算余数 余数 = 被除数 . (除数×商数)

2-4-5

规定分配于特殊 I/O 单元的地址
使用变址寄存器 IR0 到 IR15 (间接规定的常数偏移)来规定分配于特殊 I/O 单 元的地址。该地址是基于单元号值 (作为功能块定义内的输入参数)基础而设 定的。具体见下例。 注 有关功能块中的变址寄存器使用详细内容请参阅 2-4-6 使用变址寄存器。 举例说明: 例 1:在功能块内指定 CIO 区域 (同 DM 区域) 特殊 I/O 单元 变量:单元号用作输入变量。规定第一个分配地址为内部变量 (AT 设在 CIO 2000) 。 程序:采用以下程序: 1,2,3... 1. 2. 单元号 (输入变量)乘以 &10,创建单元号偏移值 (内部变量和 DINT 数 据类型) 。 使用 MOVR (560) (MOVE TO REGISTER)指令将第一个分配地址的 I/ O 存储器实地址 (内部变量, AT =CIO 2000)存储于变址寄存器中 (例 如, IR0) 。 在变址寄存器(例如,IR0)中,在 I/O 存储器实地址上加上单元号偏移值。

3.

例 2:指定 CIO 区域中的指定位 (例如, CIO 字 n+a 和位 b) 程序:采用下面其中一个方法: ? 字地址:采用间接指令(例如,+a 和 IR0)来规定变址寄存器常数偏移值。 ? 位地址:规定可以指定字内位地址的指令 (例如,当写入时 SETB 指令的 第二个操作数中的 &b 以及读取时的 TST 指令) 。

51

功能块应用指南
例子:特殊 I/O 单元
1 CIO n n=CIO2000+ x10 INT DINT WORD &3 Unit No.

第 2-4 节

400

AT

=2000

&10
&10 Unit No. Offset

MOVR Relay IR0

IR0

I/O

+L IR0 Offset IR0

IR0

2)

CIO n+a b

CIO

SETB +1,IR0 &2

CIO n+1,

02

2-4-6

使用变址寄存器
变址寄存器 IR0 到 IR15 用作规定 I/O 存储器地址的指示器。这些变址寄存器可 以在功能块中使用从而可以直接通过 IR0 到 IR15 来指定地址而不是变量名 (变 址寄存器直接规格:IR0 到 IR15 ;变址寄存器间接规格:,IR0 到 ,IR15) 注 在使用 MOVR (560)指令将实际的 I/O 存储器地址存储于变址寄存器后,可 采用通用指令来间接指定变址寄存器。这样,就可动态地规定所有 I/O 存储器 区域。
I/O

MOVR(560)
IR@

+5, IR0 +5
Instruction

IR0

I/O

+5,IR0 a

IR0+5
IR0

52

功能块应用指南


第 2-4 节
(1) 当在功能块中使用变址寄存器 IR0 到 IR15 时 , 使用另一功能块中相同的变 址寄存器或功能块外程序中的变址寄存器将在两个实例之间形成竞争 . 程 序不能正确执行。因此,当功能块开始运行(或变址寄存器使用之前)时 以及功能块结束运行(或变址寄存器使用之后)时,始终保存变址寄存器 值 (IR0 到 IR15) 。进行程序处理以使变址寄存器返回至其保存值。

1.

IR
Value A A IR0

A
A

2.

IR
B IR0

3. IR
A IR0

A
A

(2) 在变址寄存器使用之前, 始终设置数值。 但如果未设置数值情况下使用变 址寄存器,则运算不稳定。

应用实例

下例仅涉及在功能块中使用变址寄存器 IR0 到 IR15。
详细内容 当变址寄存器用于此功能块时,当启动功能 块 (或变址寄存器使用之前)以使数值在功 能块结束运行后 (或变址寄存器使用之后) 返回至其原变址寄存器值时进行处理以保存 变址寄存器值。例子:将变址寄存器 IR0 保 存于 SaveIR[0] (内部变量、数据类型 DINT 和 1 个数组元素)以保存变址寄存器 IR0 内容。

范例 在使用变址寄存器之前保存变址寄存器值。
IR0

53

功能块应用指南

第 2-4 节

范例 详细内容 使用变址寄存器 例子:分配于 CPU 总线单元分配区域的 1) 数值设于变址寄存器之中。 (存储第一个 CIP 区域字 n 的 I/O 存储器实地 CIO1500+ 单元号 x25 的第一个字 I/O 存储 器实地址存储于 IR0 中。 CPU 总线单元分配 址) 区域是给基于功能块传输而来的 CPU 总线 装置单元号 (&0~&15)基础上。
计算单元号偏移地址    带符号二进制乘法   被乘数字

程序: 假设单元号 &0~&15 (从功能块外侧)已输 入于 UnitNo (输入变量、 INT 数据类型) 。 1. UnitNo 乘以 &25,存储于 Offset (内部 变量、 DINT 数据类型) 。 2. 存储 SCPU_Relay (内部变量、 INT 数据 类型)I/O 存储器实地址 (内部变量、 WORD 数据类型、 (如需,则可在变址寄 存器 IR0 中规定数组为 400 个元素 (见 注释); AT 设置 =1500) 注 规定诸如 SCPU_relay [2] 的 SCPU_relay 数组。例如,规定地址 CIO 1500 + (UnitNo × &25) + 2。这也 适用于下例 2。

乘数字

结果字

移至寄存器 源字/位

目的地(变址寄存器)

无进位的双符号二进制加 第一个被加数字

第一个加数字 第一个结果字

2) 指定变址寄存器常数偏移值 (规定 CIO n+0 到 n+24 之间的位)

3. 通过变量 Offset (变量 UnitNo × &25) 来递增变址寄存器 IR0 中的 I/O 存储器实 地址。 通过上述步骤 1 的处理后, CIO 1500+ (UnitNo × &25)的 I/O 存储器实地址存储 于变址寄存器 IR0 中。因此,使用 IR0 的常 数偏移值来规定字地址。例如,指定 +2,IR0 将指定 CIO 1500 + (UnitNo × &25) + 2。 注 采用带 SCPU_relay 的数组设置来规定 SCPU_relay [2] 进而指定 CIO 1500 + (UnitNo × &25) + 2。

检查当地数据链路

采用可以规定字内位地址的指令来规定位地 址 (例如, TST(350/351)/SETB(532) 指令第 二个操作数) 。 例子:当 NetCheck_OK ( 内部变量、 BOOL 数据类型 ) 处于 ON 以及偏离 IR0+6 处的字 的位 15 (CIO 1500 +UnitNo × &25 +6)处 于 ON 时,变量 NodeSelf_OK 处于 ON。 在功能块结束运行 (或变址寄存器已使用 后)后,变址寄存器返回至原值例子:已保 存的变量 SaveIR[0] 值存储于变址寄存器 IR0。功能启动 (或在变址寄存器使用之 前)时数值返回至内容。

变址寄存器返回至原值
数据从临时备用缓冲器返回至IR0 长移动 第一个源字

第一个目的地字

54

规定多字中第一个字或最后一个字的操作数指令注意事项

第 2-5 节

2-5

规定多字中第一个字或最后一个字的操作数指令注意事项
当使用梯级编程来创建指令操作数可以指定第一个字或最后一个字的功能块 时,在规定操作数时应注意如下事项。 当操作数指定多字的第一个字或最后一个字时,根据 AT 设置的内部分配地址 (或外部变量设置)来操作指令。因此,变量数据类型和数组元素数量与指令 操作运行无关。规定有 AT 设置的变量或有一组元素 (与指令处理的数据量相 匹配)的数组变量。 是采用 AT 设置 (或外部变量设置)来指定指令操作数中第一个字或最后一个 字还是采用一组元素的数组设置来指定指令操作数中第一个字或最后一个字, 具体情况请参阅 2-6 指令支持和操作数限制。 注 1,2,3... 要在指令操作数中指定多字的第一个字或最后一个字,则始终规定有 AT 设置 的变量(或外部变量)或与指令处理的数据量相同的变量。以下注意事项适用。 1. 2. 如果非数组变量规定时无 AT 设置以及数据量不匹配,则在编辑时 CXProgrammer 输出错误。 当指定数组变量时,以下注意事项适用。

指令操作数中处理的容量大小是固定的 确保数组中的元素数量与指令处理的容量大小相同。否则,在编辑时 CXProgrammer 输出错误。 指令操作数中处理的容量大小是不固定的 确保数组中的元素数量等于或大于另一操作数规定的容量大小。 其他操作数规定大小:常数 编辑时 CX-Programmer 输出错误。 其他操作数规定大小:变量 编辑时 (显示警告信息)即使数组中的元素数量与另一操作数 (变量)中规定 的容量大小不匹配, CX-Programmer 也不输出错误。 特别是数组中的元素数量小于另一操作数规定的容量大小时, (例如,指令处 理量为 16 但实际注册于变量表中的元素数量为 10 时) ,在超出元素数量的区 域中指令执行读 / 写处理。 (在本例中,在元素数量注册于实际变量表中后,执 行下一 6 个字的读 / 写处理。 )如果另一指令正在使用相同的区域 (包括内部 变量分配) ,则会发生意外操作从而会导致严重事故。

55

规定多字中第一个字或最后一个字的操作数指令注意事项

第 2-5 节

不得使用容量大小与指令处理的数据量不匹配的变量。指令在规定一组字第一 个地址 (或最后一个地址)的操作数中。始终使用容量与指令所要求的数据量 相同的非数组变量数据类型或元素数量与指令所要求的数据量相同的数组变 量。否则,会出现以下错误。 数据量不匹配以及无 AT 设 置的非数组变量 如果规定多字第一个地址 (或最后一个地址)的操作数采用容量大小与指令所 要 求 的 数 据 量 不 匹 配 以 及 未 使 用 AT 设 置 的 非 数 组 变 量 数 据 类 型,则 CXProgrammer 不输出编辑错误。 例子:BLOCK TRANSFER(070) 指令:XFER W S D (W:字数; S:第一个源字; D:第一个目的地字) 当 &10 指定于 W 中时, 数据类型 WORD 的变量 a 指定于 S 中而数据类型 WORD 的变量 b 指定于 D 中:XFER &10 a b。 XFER (070)指令将自动分配地址于变量 a 中的 10 字数据传输至自动分配地 址于变量 b 的 10 字中。因此, CX-Programmer 输出编辑错误。
( : XFER a b &10 WORD a ) b

: H700

Variable a (1 word) 10

: H7@@
a

Variable b (1 word)

CXProgrammer

数组变量

结果取决于以下条件。 指令处理的容量大小是固定的 如果指令处理的容量大小是固定的操作数而且该大小与数组元素数量不匹配, 则 CX-Programmer 输出编辑错误。 例子:LINE TO COLUMN(064) 指令; COLM S D N (S:位数; D:第一个目的地字; N:源字) 例如, COLM a b[0] c 当有 10 个数组元素的 WORD 数据类型数组用于 16 个数组元素时, 如果其规定 于 D 中,则在编辑时 CX-Programmer 输出错误。 指令处理的容量大小是不固定的 当指令处理的操作数容量大小是不固定的 (当容量大小由指令中的另一操作 数指定时) ,确保数组元素数量等于或大于其他操作数中规定的容量大小 (例 如,指令处理的容量大小) 。 其他操作数规定大小:常数 编辑时 CX-Programmer 输出错误。 例子 : BLOCK TRANSFER: XFER W S D (W:字数; S:第一个源字; D:第一个目的地字)

56

指令支持和操作数限制

第 2-6 节
当 &20 规定于 W 中时,数据类型 WORD 和 10 个元素的数组变量 a 规定于 S 中而数据类型 WORD 和 10 个元素的数组变量 b 规定于 D 中。 XFER &20 a[0] b[0] 即使数组变量 a[0] 和 b[0] 均为 10 字,XFER(070)指令将执行传输 20 字(规 定于 W 中)的处理。因此,在已分配的数组元素数量后面 XFER (070)指令 对 I/O 存储器区域进行读 / 写处理。详见下图。 因此,如果 a[10 elements] 内部分配字 (例如, H700 ~ H709)和 b[10 elements] 内部分配字(例如,H800 ~ H809) ,XFER(070)将字 H700~ H719 中的数据 传输至字 H800 ~ H819。 在此运算中,如果分配另一内部分配变量 (例如, c)为 H810 到 H819 中的分 配字,则字被重写从而造成意外运算。要传输 20 字,确保元素数量规定为 20 个元素 (数组变量 a 和 b) 。

XFER 10 20

&20

a[0] b[0] WORD 20

a

b a b

H700 10 a 10 20 : H710 20 : H719 : H819 a 10 10

: H810 a b H810 H819 CX-Programmer

其他操作数规定大小:变量 编辑时即使数组中的元素数量与另一操作数 (变量)中规定的容量大小不匹 配, CX-Programmer 也不输出错误。 根据操作数所规定的容量大小执行指令。这与数组变量中的元素数量无关。 特别是数组中的元素数量小于另一操作数 (变量)规定的容量大小 (例如,指 令处理的容量大小)时,其他变量将受到影响并会发生意外操作。

2-6

指令支持和操作数限制
本附录表中给出了哪个指令用于梯级编程语言创建的功能块和适用于这些功能 块和操作数的限制 (包括变量是否需要数组变量和 AT 设置或外部变量规格和 哪个数据类型可以使用) 。

指令支持

不支持 CX-Programmer、CP- 系列 CPU 单元和 CS/CJ- 系列 CPU 单元(3.0 版) 功能块定义的指令请参阅符号栏中不支持功能块 的内容。

57

指令支持和操作数限制
操作数限制

第 2-6 节
? 需要数组变量 AT 设置或规格的操作数(规定多字第一个字或最后一个字) 示于所需的 AT 设置或数组一栏中。 是:必须规定操作数的 AT 设置 (或外部规格)或数组变量以规定多字第 一个字或最后一个字。 ? 括号内的数值为指令用于读、写或其他处理的固定值。该容量大小显示 数据类型大小或规定于字单元中的数组变量所需容量大小。至于数组 变 量,该 容 量 大 小 必 须 与 元 素 数 量 相 同。否 则, 在 编 辑 时 CXProgrammer 输出错误。 ? 如果 “不固定”示于括号中,则可以修改指令用于读、写或其他处理 的容量大小。确保提供数组元素数量所需的最大容量。编辑时即使数组 中的元素数量与另一操作数 (变量)中规定的容量大小不匹配, CXProgrammer 也不输出错误。根据操作数所规定的容量大小执行指令。 这与数组变量中的元素数量无关。 ---: 不需要数组变量 AT 设置的操作数。 注 当在指令操作数中规定多字第一个字或最后一个字时,输入参数不 能用来传输数据至变量中或从变量中上传数据。必须配置 AT 设置 或有所需元素数量的数组变量。将数组数据设置于功能块定义中 后,必须规定操作数数组变量的第一个元素或最后一个元素。

? 必须在网络远程节点处指定 I/O 存储器地址 AT 设置的任何操作数示于 所需的 AT 设置或数组栏中有 AT 设置的在远程节点处规定地址。 下表列出了所有 CS/CJ- 系列 CPU 单元、 NSJ- 系列 NSJ 控制器和 FQM1 柔 性运 动控制器 (3.0 版或以后版本)支持的指令。 ? 一些只有 FQM1 柔性运动控制器(3.0 版或以后版本)支持的指令。这些指 令以 “FQM1 only” (在助记符下)来表示。 ? 只有 CS/CJ- 系列 CPU 单元 (例如, 不能被 FQM1 柔性运动控制器 (3.0 版或 以后版本) NSJ- 系列 NSJ 控制器支持的指令。详情请参阅 FQM1 指令参 和 考手册 (目录号:O013)确认支持的指令。

58

指令支持和操作数限制

第 2-6 节

2-6-1
指令

控制输入指令
助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置 或数组变量 (所 需的字数据量示 于括号中) ---

LOAD

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

母线

B: 位

BOOL

块起始点

LOAD NOT

母线

B: 位

BOOL

---

块起始点

AND

B: 位

BOOL

---

AND NOT

---

BOOL

---

OR

母线

---

BOOL

---

OR NOT

OR NOT !OR NOT @OR NOT %OR NOT !@OR NOT !%OR NOT

母线

---

BOOL

---

AND LOAD OR LOAD

AND LD OR LD

逻辑板

逻辑板

-----

-----

-----

逻辑板

逻辑板

59

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置 或数组变量 (所 需的字数据量示 于括号中) -----------

NOT CONDITION ON CONDITION OFF BIT TEST

NOT UP DOWN LD TST

520 521 522 350

NOT UP DOWN TST S N

------S: 源字 N: 位数

------WORD UINT

BIT TEST

LD TSTN

351
TSTN S N

S: 源字 N: 位数

WORD UINT

-----

BIT TEST

AND TST

350
AND TST S N

S: 源字 N: 位数

WORD UINT

-----

BIT TEST

AND TSTN

351
AND TSTN S N

S: 源字 N: 位数

WORD UINT

-----

BIT TEST

OR TST

350
TST S N

S: 源字 N: 位数

WORD UINT

-----

BIT TEST

OR TSTN

351
TSTN S N

S: 源字 N: 位数

WORD UINT

-----

60

指令支持和操作数限制

第 2-6 节

2-6-2
指令

控制输出指令
助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) ---

OUTPUT

OUT !OUT

---

BOOL

OUTPUT NOT

OUT NOT !OUT NOT

---

BOOL

---

KEEP

KEEP !KEEP

011

S (Set) R (Reset)

--KEEP B DIFU B

BOOL

---

DIFFERENTIAT DIFU E UP !DIFU DIFFERENTIAT DIFD E DOWN !DIFD SET SET @SET %SET !SET !@SET !%SET RSET @RSET %RSET !RSET !@RSET !%RSET SETA @SETA

013

---

BOOL

---

014

DIFD B SET B

---

BOOL

---

B: 位

BOOL

---

RESET

RSET B

B: 位

BOOL

---

MULTIPLE BIT SET

530

SETA D N1 N2

D: 起始字 N1: 起始位 N2: 位数

UINT UINT UINT

有 (不固定) -----

MULTIPLE BIT RESET

RSTA @RSTA

531

RSTA D N1 N2

D: 起始字 N1: 起始位 N2: 位数

UINT UINT UINT

有 (不固定) -----

SINGLE BIT SET

SETB @SETB !SETB

532

SETB D N

D: 字地址 N: 位数

UINT UINT

-----

61

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) -----

SINGLE BIT RESET

RSTB @RSTB !RSTB OUTB @OUTB !OUTB

533

RSTB D N

D: 字地址 N: 位数

UINT UINT

SINGLE BIT OUTPUT

534

OUTB D N

D: 字地址 N: 位数

UINT UINT

-----

2-6-3
指令

顺序控制指令
助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) -------------

END

END

001 000 002 003 517 ---

END

----IL ILC MILH N D

--------#+ 仅十进制 BOOL

NO OPERATION NOP INTERLOCK INTERLOCK CLEAR IL ILC

----N: 联锁 D: 联锁状态位

MILH MULTIINTERLOCK DIFFERENTIATI ON HOLD MILR MULTIINTERLOCK DIFFERENTIATI ON RELEASE MULTIINTERLOCK CLEAR JUMP JUMP END CONDITIONAL JUMP CONDITIONAL JUMP MULTIPLE JUMP MULTIPLE JUMP END MILC

518

MILR N D

N: 联锁 D: 联锁状态位

#+ 仅十进制 BOOL

-----

519

MILC N

N: 联锁

#+ 仅十进制

---

JMP JME CJP CJPN JMP0 JME0

004 005 510 511 515 516

功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持
JMP0 JME0

N: 跳转数 N: 跳转数 N: 跳转数 N: 跳转数 -----

-------------

-------------

62

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) ---

FOR-NEXT LOOPS BREAK LOOP FOR-NEXT LOOPS

FOR

512

FOR N

N: 环数

UINT

BREAK NEXT

514 513

BREAK NEXT

-----

-----

-----

2-6-4
指令

定时器和计数器指令
助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设 置或数组变量 (所需的字数 据量示于括号 中) -----

TIMER

TIM (BCD)

TIM N S

N: 定时器数 S: 设定值

TIMER WORD

TIMX (BIN)

550

TIMX N S

N: 定时器数 S: 设定值

TIMER UINT

-----

HIGH-SPEED TIMER

TIMH (BCD)

015

TIMH N S

N: 定时器数 S: 设定值

TIMER WORD

-----

TIMHX (BIN)

551

TIMHX N S

N: 定时器数 S: 设定值

TIMER UINT

-----

ONE-MS TIMER

TMHH (BCD) TMHHX (BIN)

540 552

计数输入复位输入 计数输入复位输入

N: 定时器数 S: 设定值 N: 定时器数 S: 设定值

TIMER WORD TIMER UINT

---------

63

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设 置或数组变量 (所需的字数 据量示于括号 中) -----

ACCUMULATIV TTIM E TIMER (BCD)

087

TTIM N S

N: 定时器数 S: 设定值

TIMER WORD

TTIMX (BIN)

555

定时器输入

TTIMX N

N: 定时器数 S: 设定值

TIMER UINT

-----

复位输入

S TIML D1 D2 S

LONG TIMER

TIML (BCD)

542

D1: 完成标记 D2: PV 字 S: SV 字

WORD DWORD DWORD

-------

TIMLX (BIN)

553

TIMLX D1 D2 S

D1: 完成标记 D2: PV 字 S: SV 字

UINT UDINT UDINT

-------

MULTI-OUTPUT MTIM TIMER (BCD)

543

MTIM D1 D2 S

D1: 完成标记 D2: PV 字 S: SV 字

UINT WORD WORD

----Yes (8)

MTIMX (BIN)

554

MTIMX D1 D2 S

D1: 完成标记 D2: PV 字 S: SV 字

UINT UINT WORD

----Yes (8)

COUNTER

CNT (BCD)

计算输出

CNT N

N: 计数器数 S: 设定值

COUNTER WORD

-----

从新安排输出

S CNTX N

CNTX (BIN)

546

计算输出

N: 计数器数 S: 设定值

COUNTER UINT

-----

从新安排输出

S

64

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设 置或数组变量 (所需的字数 据量示于括号 中) -----

REVERSIBLE COUNTER

CNTR (BCD)

012

递增输入 递减输入 复位输入

N: 计数器数 S: 设定值

COUNTER WORD

CNTRX (BIN)

548

递增输入 递减输入 复位输入

CNTRX N S CNR N1 N2

N: 计数器数 S: 设定值

COUNTER UINT

-----

RESET TIMER/ COUNTER

CNR @CNR (BCD)

545

CNRX @CNRX (BIN)

547

CNRX N1 N2

N1: 范围内第一个数 TIMER or COUNTER 字 (见注解) N2: 范围内最后一个 TIMER or COUNTER 数字 (见注解) N1: 范围内第一个数 TIMER or COUNTER 字 (见注解) N2: 范围内最后一个 TIMER or COUNTER 数字 (见注解)

---

---

---

---



当 N1 和 N2 规定的变量均相同时,启动。

65

指令支持和操作数限制

第 2-6 节

2-6-5

比较指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----

比较符号 ( 无符号 )

LD,AND, OR 300 (=) + 305 (<>) =, <>, <, <=, 310 (<) >, >= 315 (<=) 320 (>) 325 (>=)

使用 LD:
符号, 选项

S1: 比较数据 1 S2: 比较数据 2

UINT UINT

S1 S2

使用  AND:
符号, 选项

S1 S2

使用  OR:
符号, 选项

S1 S2

比较符号 ( 双倍字, LD,AND, OR + 无符号 ) =, <>, <, <=, >, >= + L

301 (=) 306 (<>) 311 (<) 316 (<=) 321 (>) 326 (>=) 比较符号 ( 有符号 ) LD,AND, OR 302 (=) + 307 (<>) =, <>, <, <=, 312 (<) >, >= 317 (<=) + S 322 (>) 327 (>=) 比较符号 ( 双倍字, LD,AND, OR 303 (=) + 有符号 ) 308 (<>) =, <>, <, <=, 313 (<) >, >= 318 (<=) + SL 323 (>) 328 (>=) CMP 020 UNSIGNED COMPARE !CMP

---

S1: 比较数据 1 S2: 比较数据 2

UDINT UDINT

-----

---

S1: 比较数据 1 S2: 比较数据 2

INT INT

-----

---

S1: 比较数据 1 S2: 比较数据 2

DINT DINT

-----

CMP S1 S2

S1: 比较数据 1 S2: 比较数据 2

UINT UINT

-----

66

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --------------Yes (16) ---

DOUBLE UNSIGNED COMPARE

CMPL

060

CMPL S1 S2

S1: 比较数据 1 S2: 比较数据 2 S1: 比较数据 1 S2: 比较数据 2 S1: 比较数据 1 S2: 比较数据 2 S: 源字 T: 表中第一个字 R: 结果字

UDINT UDINT INT INT DINT DINT WORD WORD UINT

SIGNED BINARY COMPARE

CPS !CPS

114

CPS S1 S2

DOUBLE SIGNED BINARY COMPARE

CPSL

115

CPSL S1 S2

TABLE COMPARE

TCMP @TCMP

085

TCMP S T R

MULTIPLE COMPARE

MCMP @MCMP

019

MCMP S1 S2 R

S1: 比较数据 1 S2: 比较数据 2 R: 结果字

WORD WORD UINT

Yes (16) Yes (16)

UNSIGNED BLOCK BCMP COMPARE @BCMP

068

BCMP S T R

S: 源字 T: 表中第一个字 R: 结果字

WORD WORD UINT

--Yes (32) ---

EXPANDED BLOCK COMPARE

BCMP2 @BCMP2

502

BCMP2 S T R

S: 源字 T: 表中第一个字 R: 结果字 CD: 比较数据 (1 字) LL: 范围下限 UL: 范围上限

WORD WORD WORD UINT UINT UINT

--Yes ( 不固 定) ---------

AREA RANGE COMPARE

ZCP

088

ZCP CD LL UL

67

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --------Yes (3) Yes (3)

DOUBLE AREA RANGE COMPARE

ZCPL

116

ZCPL CD LL UL

CD: 比较数据 (2 字 ) LL: 范围下限 UL: 范围上限 C: 控制字

UDINT UDINT UDINT WORD

时间比较

LD, AND, OR + =DT, <> DT, <DT, <=DT, >DT, >=DT

341 (=DT) LD (LOAD): 342 Symbol (<>DT) C 343 (<DT) S1 344 (<=DT) S2 345 (>DT) AND: 346 (>=DT)
Symbol C S1 S2

S1: 现在时间的第一 WORD 个字 S2: 比较时间的第一 WORD 个字

OR:
Symbol C S1 S2

2-6-6

数据传送指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) -----

MOVE

MOV @MOV !MOV !@MOV MOVL @MOVL

021

MOV S D

S: 源 D: 目的地

WORD WORD

DOUBLE MOVE

498

MOVL S D

S: 第一个源字

DWORD

-----

D: 第一个目的地 DWORD 字

68

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) -----

MOVE NOT

MVN @MVN

022

MVN S D

S: 源 D: 目的地

WORD WORD

DOUBLE MOVE NOT

MVNL @MVNL

499

MVNL S D

S: 第一个源字

DWORD

-----

D: 第一个目的地 DWORD 字 S: 源字或数据 C: 控制字 D: 目的地字 S: 源字或数据 C: 控制字 D: 目的地字 C: 控制字 S: 第一个源字 WORD UINT WORD WORD UINT UINT UINT WORD

MOVE BIT

MOVB @MOVB

082

MOVB S C D

--------------有 (不固定) 有 (不固定) --有 (不固定) 有 (不固定) --有 (不固定) 有 (不固定) ---------

MOVE DIGIT

MOVD @MOVD

083

MOVD S C D

MULTIPLE BIT TRANSFER 丂

XFRB @XFRB

062

XFRB C S D

D: 第一个目的地 WORD 字 N: 字数 S: 第一个源字 UINT WORD

BLOCK TRANSFER

XFER @XFER

070

XFER N S D

BLOCK SET

BSET @BSET

071

BSET S St E

D: 第一个目的地 WORD 字 WORD S: 源字 St: 起始字 E: 结束字 E1: 第一个交换 字 E2: 第二个交换 字 E1: 第一个交换 字 E2: 第二个交换 字 WORD WORD WORD WORD DWORD DWORD

DATA EXCHANGE

XCHG @XCHG

073

XCHG E1 E2

DOUBLE DATA EXCHANGE

XCGL @XCGL

562

XCGL E1 E2

69

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) --有 (不固定) --有 (不固定) -------------

SINGLE WORD DISTRIBUTE

DIST @DIST

080

DIST S Bs Of

S: 源字 Bs: 目的地基地 址 Of: 偏移 Bs: 目的地基地 址 Of: 偏移 D: 目的地字

WORD WORD UINT WORD WORD WORD

DATA COLLECT

COLL @COLL

081

COLL Bs Of D

MOVE TO REGISTER

MOVR @MOVR

560

MOVR S D

S: 源 (所需的字 BOOL 轨道) WORD D: 目的地 (变 址寄存器) S: 源 (所需的 TC 数) D: 目的地 (变 址寄存器) -----

MOVE TIMER/ COUNTER PV TO REGISTER

MOVRW 561 @MOVRW

功能块中不支持

2-6-7
指令

数据转换指令
助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) 有 (不固定) 有 (不固定) 当需要数组变量 时, D1 和 D2 必须为相同的数 组变量。 --有 (不固定) 有 (不固定) 当需要数组变量 时, D1 和 D2 必须为相同的数 组变量。

SHIFT REGISTER SFT

010

数据输出 转换输出 重新安排输出

SFT St E

St: 起始字 E: 结束字

UINT UINT

REVERSIBLE SFTR SHIFT REGISTER @SFTR

084

SFTR C St E

C: 控制字 St: 起始字 E: 结束字

UINT UINT UINT

70

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) --有 (不固定) 有 (不固定) 当需要数组变量 时, D1 和 D2 必须为相同的数 组变量。 --有 (不固定) 有 (不固定) 当需要数组变量 时, D1 和 D2 必须为相同的数 组变量。 ---

ASYNCHRONOU ASFT S SHIFT @ASFT REGISTER

017

ASFT C St E

C: 控制字 St: 起始字 E: 结束字

UINT UINT UINT

WORD SHIFT

WSFT @WSFT

016

WSFT S St E

S: 控制字 St: 起始字 E: 结束字

WORD UINT UINT

ARITHMETIC SHIFT LEFT DOUBLE SHIFT LEFT ARITHMETIC SHIFT RIGHT DOUBLE SHIFT RIGHT ROTATE LEFT

ASL @ASL ASLL @ASLL ASR @ASR ASRL @ASRL ROL @ROL ROLL @ROLL RLNC @RLNC RLNL @RLNL ROR @ROR

025

ASL Wd

Wd: 字

UINT

570

ASLL Wd

Wd: 字

UDINT

---

026

ASR Wd

Wd: 字

UINT

---

571

ASRL Wd

Wd: 字

UDINT

---

027

ROL Wd

Wd: 字

UINT

---

DOUBLE ROTATE LEFT ROTATE LEFT WITHOUT CARRY DOUBLE ROTATE LEFT WITHOUT CARRY ROTATE RIGHT

572

ROLL Wd

Wd: 字

UDINT

---

574

RLNC Wd

Wd: 字

UINT

---

576

RLNL Wd

Wd: 字

UDINT

---

028

ROR Wd

Wd: 字

UINT

---

71

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置 或数组变量 (所需的字数据 量示于括号中) ---

DOUBLE ROTATE RIGHT ROTATE RIGHT WITHOUT CARRY DOUBLE ROTATE RIGHT WITHOUT CARRY ONE DIGIT SHIFT LEFT

RORL @RORL RRNC @RRNC RRNL @RRNL SLD @SLD

573

RORL Wd

Wd: 字

UDINT

575

RRNC Wd

Wd: 字

UINT

---

577

RRNL Wd

Wd: 字

UDINT

---

074

SLD St E

St: 起始字 E: 结束字

UINT UINT

有 (不固定) 有 (不固定)

ONE DIGIT SHIFT RIGHT

SRD @SRD

075

SRD St E

St: 起始字 E: 结束字

UINT UINT

有 (不固定) 有 (不固定)

SHIFT N-BIT DATA LEFT

NSFL @NSFL

578

NSFL D C N

D: 转换起始字 C: 起始位 N: 转换数据长度 D: 转换起始字 C: 起始位 N: 转换数据长度 D: 转换字 C: 控制字

UINT UINT UINT UINT UINT UINT UINT UINT

有 (不固定) ----有 (不固定) ---------

SHIFT N-BIT DATA RIGHT

NSFR @NSFR

579

NSFR D C N

SHIFT N-BITS LEFT

NASL @NASL

580

NASL D C

DOUBLE SHIFT N-BITS LEFT

NSLL @NSLL

582

NSLL D C

D: 转换字 C: 控制字

UDINT UINT

-----

SHIFT N-BITS RIGHT

NASR @NASR

581

NASR D C

D: 转换字 C: 控制字

UINT UINT

-----

DOUBLE SHIFT N-BITS RIGHT

NSRL @NSRL

583

NSRL D C

D: 转换字 C: 控制字

UDINT UINT

-----

72

指令支持和操作数限制

第 2-6 节

2-6-8

递增 / 递减指令
指令 助记符 功能码 符号 操作数 支持的变量 所需的 AT 数据类型 设置或数组 变量 (所 需的字数据 量示于括号 中) UINT ---

INCREMENT BINARY DOUBLE INCREMENT BINARY DECREMENT BINARY DOUBLE DECREMENT BINARY INCREMENT BCD

++ @++ ++L @++L -@---L @--L ++B @++B ++BL @++BL --B @--B --BL @--BL

590

++ Wd

Wd: 字

591

++L Wd

Wd: 字

UDINT

---

592

-Wd

Wd: 字

UINT

---

593

--L Wd

Wd: 第一个字

UDINT

---

594

++B Wd

Wd: 字

WORD

---

DOUBLE INCREMENT BCD DECREMENT BCD

595

++BL Wd

Wd: 第一个字

DWORD

---

596

--B Wd

Wd: 字

DWORD

---

DOUBLE DECREMENT BCD

597

--BL Wd

Wd: 第一个字

WORD

---

73

指令支持和操作数限制

第 2-6 节

2-6-9

符号数学指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

SIGNED BINARY ADD WITHOUT CARRY

+ @+

400

+ Au Ad R

Au: 被加数字 Ad: 加数字 R: 结果字

INT INT INT

DOUBLE SIGNED BINARY ADD WITHOUT CARRY

+L @+L

401

+L Au Ad R

Au: 第一个被加数字 DINT Ad: 第一个被加数字 DINT R: 第一个结果字 DINT

-------

SIGNED BINARY +C ADD WITH CARRY @+C

402

+C Au Ad R

Au: 被加数字 Ad: 加数字 R: 结果字

INT INT INT

-------

DOUBLE SIGNED BINARY ADD WITH CARRY

+CL @+CL

403

+CL Au Ad R

Au: 第一个被加数字 DINT Ad: 第一个加数字 R: 第一个结果字 DINT DINT

-------

BCD ADD WITHOUT CARRY

+B @+B

404

+B Au Ad R

Au: 被加数字 Ad: 加数字 R: 结果字

WORD WORD WORD

-------

DOUBLE BCD ADD +BL WITHOUT CARRY @+BL

405

+BL Au Ad R

Au: 被加数字 Ad: 加数字 R: 结果字 Au: 被加数字 Ad: 加数字 R: 结果字

DWORD DWORD DWORD WORD WORD WORD

-------------

BCD ADD WITH CARRY

+BC @+BC

406

+BC Au Ad R

74

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------------

DOUBLE BCD ADD +BCL WITH CARRY @+BCL

407

+BCL Au Ad R

Au: 第一个被加数字 DWORD Ad: 第一个加数字 R: 第一个结果字 Mi: 被减数字 Su: 减数字 R: 结果字 DWORD DWORD INT INT INT

SIGNED BINARY SUBTRACT WITHOUT CARRY

@-

410

Mi Su R

DOUBLE SIGNED BINARY SUBTRACT WITHOUT CARRY

-L @-L

411

-L Mi Su R

Mi: 被减数字 Su: 减数字 R: 结果字

DINT DINT DINT

-------

SIGNED BINARY SUBTRACT WITH CARRY

-C @-C

412

-C Mi Su R

Mi: 被减数字 Su: 减数字 R: 结果字

INT INT INT

-------

DOUBLE SIGNED BINARY WITH CARRY

-CL @-CL

413

-CL Mi Su R

Mi: 被减数字 Su: 减数字 R: 结果字

DINT DINT DINT

-------

BCD SUBTRACT WITHOUT CARRY

-B @-B

414

-B Mi Su R

Mi: 被减数字 Su: 减数字 R: 结果字

WORD WORD WORD

-------

DOUBLE BCD SUBTRACT WITHOUT CARRY

-BL @-BL

415

-BL Mi Su R

Mi: 被减数字 Su: 减数字 R: 结果字 Mi: 被减数字 Su: 减数字 R: 结果字

DWORD DWORD DWORD WORD WORD WORD

-------------

BCD SUBTRACT WITH CARRY

-BC @-BC

416

-BC Mi Su R

75

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------------------

DOUBLE BCD SUBTRACT WITH CARRY

-BCL @-BCL

417

-BCL Mi Su R

Mi: 第一个被减数字 DWORD Su: 第一个减数字 R: 结果字 Md: 被乘数字 Mr: 乘数字 R: 结果字 Md: 第一个被乘数 字 Mr: 第一个乘数字 R: 第一个结果字 DWORD DWORD INT INT DINT DINT DINT LINT

SIGNED BINARY MULTIPLY

* @*

420

* Md Mr R

DOUBLE SIGNED BINARY MULTIPLY

*L @*L

421

*L Md Mr R

UNSIGNED BINARY MULTIPLY

*U @*U

422

*U Md Mr R

Md: 被乘数字 Mr: 乘数字 R: 结果字 Md: 第一个被乘数 字 Mr: 第一个乘数字 R: 第一个结果字 Md: 被乘数字 Mr: 乘数字 R: 结果字 Md: 第一个被乘数 字 Mr: 第一个乘数字 R: 第一个结果字

UINT UINT UINT UDINT UDINT ULINT WORD WORD DWORD DWORD DWORD LWORD

-------------------------

DOUBLE UNSIGNED BINARY MULTIPLY

*UL @*UL

423

*UL Md Mr R

BCD MULTIPLY

*B @*B

424

*B Md Mr R

DOUBLE BCD MULTIPLY

*BL @*BL

425

*BL Md Mr R

76

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ----有 (2) 当需要数 组变量时 必须使用 INT。

SIGNED BINARY DIVIDE

/ @/

430

/ Dd Dr R

Dd: 被除数字 Dr: 除数字 R: 结果字

INT INT DWORD

DOUBLE SIGNED BINARY DIVIDE

/L @/L

431

/L Dd Dr R

Dd: 第一个被除数字 DINT Dr: 第一个除数字 R: 第一个结果字 DINT LWORD

----有 (2) 当需要数 组变量时 必须使用 DINT。

UNSIGNED BINARY DIVIDE

/U @/U

432

/U Dd Dr R

Dd: 被除数字 Dr: 除数字 R: 结果字

UINT UINT DWORD

----有 (2) 当需要数 组变量时 必须使用 UINT。

DOUBLE UNSIGNED BINARY DIVIDE

/UL @/UL

433

/UL Dd Dr R

Dd: 第一个被除数字 UDINT Dr: 第一个除数字 R: 第一个结果字 UDINT LWORD

----有 (2) 当需要数 组变量时 必须使用 UDINT。

77

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ----有 (2) 当需要数 组变量时 必须使用 WORD。 ----有 (2) 当需要数 组变量时 必须使用 DWORD。

BCD DIVIDE

/B @/B

434

/B Dd Dr R

Dd: 被除数字 Dr: 除数字 R: 结果字

WORD WORD DWORD

DOUBLE BCD DIVIDE

/BL @/BL

435

/BL Dd Dr R

Dd: 第一个被除数字 DWORD Dr: 第一个除数字 R: 第一个结果字 DWORD LWORD

2-6-10 转换指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ---

BCD-TO-BINARY

BIN @BIN

023

BIN S R

S: 源字

WORD

R: 结果字

UINT

---

DOUBLE BCD-TODOUBLE BINARY

BINL @BINL

058

BINL S R

S: 第一个源字 R: 第一个结果字

DWORD UDINT

-----

BINARY-TO-BCD

BCD @BCD

024

BCD S R

S: 源字

UINT

---

R: 结果字

WORD

---

78

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----

DOUBLE BINARYTO-DOUBLE BCD

BCDL @BCDL

059

BCDL S R

S: 第一个源字 R: 第一个结果字

UDINT DWORD

2 誗 COMPLEMENT NEG @NEG

160

NEG S R

S: 源字 R: 结果字

WORD UINT

-----

DOUBLE 2 誗 COMPLEMENT

NEGL @NEGL

161

NEGL S R

S: 第一个源字 R: 第一个结果字

DWORD UDINT

-----

16-BIT TO 32-BIT SIGNED BINARY

SIGN @SIGN

600

SIGN S R

S: 源字 R: 第一个结果字

WORD DINT

-----

DATA DECODER

MLPX @MLPX

076

MLPX S C R

S: 源字 C: 控制字 R: 第一个结果字

UINT UINT UINT

----有 (不固 定)

DATA ENCODER

DMPX @DMPX

077

DMPX S R C

S: 第一个源字

UINT

有 (不固 定) -----

R: 结果字 C: 控制字

UINT UINT

ASCII CONVERT

ASC @ASC

086

ASC S Di D

S: 源字 Di: 数字标志符 D: 第一个目的地字

UINT UINT UINT

----有 (3)

ASCII TO HEX

HEX @HEX

162

HEX S Di D

S: 源字 Di: 数字标志符 D: 目的地字

UINT UINT UINT

有 (2) --有 (不固 定)

79

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 有 (16) -----

COLUMN TO LINE

LINE @LINE

063

LINE S N D

S: 第一个源字 N: 位数 D: 目的地字

WORD UINT UINT

LINE TO COLUMN

COLM @COLM

064

COLM S D N

S: 源字 D: 第一个目的地字 N: 位数

WORD WORD UINT

--是 (16) ---

SIGNED BCD-TOBINARY

BINS @BINS

470

BINS C S D

C: 控制字 S: 源字 D: 目的地字

UINT WORD INT

-------

DOUBLE SIGNED BCD-TO-BINARY

BISL @BISL

472

BISL C S D

C: 控制字 S: 第一个源字 D: 第一个目的地字

UINT DWORD DINT

-------

SIGNED BINARYTO-BCD

BCDS @BCDS

471

BCDS C S D

C: 控制字 S: 源字 D: 目的地字

UINT INT WORD

-------

DOUBLE SIGNED BINARY-TO-BCD

BDSL @BDSL

473

BDSL C S D

C: 控制字 S: 第一个源字 D: 第一个目的地字

UINT DINT DWORD

-------

80

指令支持和操作数限制

第 2-6 节

2-6-11 逻辑指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

LOGICAL AND

ANDW @ANDW

034

ANDW l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

WORD WORD WORD

DOUBLE LOGICAL AND

ANDL @ANDL

610

ANDL l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

DWORD DWORD DWORD

-------

LOGICAL OR

ORW @ORW

035

ORW l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

WORD WORD WORD

-------

DOUBLE LOGICAL OR

ORWL @ORWL

611

ORWL l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

DWORD DWORD DWORD

-------

EXCLUSIVE OR

XORW @XORW

036

XORW l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

WORD WORD WORD

-------

DOUBLE EXCLUSIVE OR

XORL @XORL

612

XORL l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

DWORD DWORD DWORD

-------

EXCLUSIVE NOR

XNRW @XNRW

037

XNRW l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

WORD WORD WORD

-------

81

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

DOUBLE EXCLUSIVE NOR

XNRL @XNRL

613

XNRL l1 l2 R

I1: 输入 1 I2: 输入 2 R: 结果字

DWORD DWORD DWORD

COMPLEMENT

COM @COM COML @COML

029

COM Wd

Wd: 字

WORD

---

DOUBLE COMPLEMENT

614

COML Wd

Wd: 字

DWORD

---

2-6-12 特殊数学指令
指令 助记符 功能码 符号 l 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中)

BINARY ROOT

ROTB @ROTB

620

ROTB S R

S: 第一个源字 R: 结果字

UDINT UINT

-----

BCD SQUARE ROOT ROOT @ROOT

072

ROOT S R

S: 第一个源字 R: 结果字

DWORD WORD

-----

ARITHMETIC PROCESS

APR @APR

069

APR C S R

C: 控制字 S: 源字 R: 结果字

UINT WORD WORD

Yes (not fixed) -----

FLOATING POINT DIVIDE

FDIV @FDIV

079

FDIV Dd Dr R

Dd: 第一个被除数字 UDINT Dr: 第一个除数字 R: 第一个结果字 UDINT UDINT

-------

82

指令支持和操作数限制
指令 助记符 功能码 符号 l 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中)

BIT COUNTER

BCNT @BCNT

067

BCNT N S R

N: 字数 S: 第一个源字 R: 结果字 M: 模式标志 C: 处理周期 T: 第一个设定值表 字

UINT UINT UINT WORD WORD WORD

--有 (不固 定) ------有 (27)

VIRTUAL AXIS

AXIS (FQM1 only)

981

AXIS M C T

83

指令支持和操作数限制

第 2-6 节

2-6-13 浮点数学指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----

FLOATING TO 16BIT

FIX @FIX

450

FIX S R

S: 第一个源字 R: 结果字

REAL INT

FLOATING TO 32BIT

FIXL @FIXL

451

FIXL S R

S: 第一个源字 R: 结果字

REAL DINT

-----

16-BIT TO FLOATING

FLT @FLT

452

FLT S R

S: 源字 R: 第一个结果字

INT REAL

-----

32-BIT TO FLOATING

FLTL @FLTL

453

FLTL S R

S: 第一个源字 R: 结果字

DINT REAL

-----

FLOATING-POINT ADD

+F @+F

454

+F Au Ad R

Au: 第一个被加数字 REAL Ad: 第一个加数字 R: 第一个结果字 REAL REAL

-------

FLOATING-POINT SUBTRACT

-F @-F

455

-F Mi Su R

Mi: 第一个被减数字 REAL Su: 第一个减数字 R: 第一个结果字 Md: 第一个被乘数 字 Mr: 第一个乘数字 R: 第一个结果字 REAL REAL REAL REAL REAL

-------------------

FLOATING- POINT MULTIPLY

*F @*F

456

*F Md Mr R

FLOATING- POINT DIVIDE

/F @/F

457

/F Dd Dr R

Dd: 第一个被除数字 REAL Dr: 第一个除数字 R: 第一个结果字 REAL REAL

DEGREES TO RADIANS

RAD @RAD

458

RAD S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

84

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----

RADIANS TO DEGREES

DEG @DEG

459

DEG S R

S: 第一个源字 R: 第一个结果字

REAL REAL

SINE

SIN @SIN

460

SIN S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

COSINE

COS @COS

461

COS S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

TANGENT

TAN @TAN

462

TAN S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

ARC SINE

ASIN @ASIN

463

ASIN S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

ARC COSINE

ACOS @ACOS

464

ACOS S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

ARC TANGENT

ATAN @ATAN

465

ATAN S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

SQUARE ROOT

SQRT @SQRT

466

SQRT S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

EXPONENT

EXP @EXP

467

EXP S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

LOGARITHM

LOG @LOG

468

LOG S R

S: 第一个源字 R: 第一个结果字

REAL REAL

-----

85

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

EXPONENTIAL POWER

PWR @PWR

840

PWR B E R

B: 第一个基字 E: 第一个幂数字 R: 第一个结果字

REAL REAL REAL

Floating Symbol Comparison

LD, AND, OR + =F, <>F, <F, <=F, >F, >=F

329 (=F) 330 (<>F) 331 (<F) 332 (<=F) 333 (>F) 334 (>=F)

Using LD:
Symbol, option

S1: 比较数据 1 S2: 比较数据 2

REAL REAL

-----

S1 S2

Using AND:
Symbol, option

S1 S2

Using OR:
Symbol, option

S1 S2

FLOATING- POINT TO ASCII

FSTR @FSTR

448

FSTR S C D

S: 第一个源字 C: 控制字 D: 目的地字

REAL UINT UINT

--有 (3) 有 (不固 定) 有 (不固 定) ---

ASCII TO FLOATING-POINT

FVAL @FVAL

449

FVAL S D

S: 源字 D: 第一个目的地字

UINT REAL

86

指令支持和操作数限制

第 2-6 节

2-6-14 双倍精度浮点指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----

DOUBLE FLOATING TO 16-BIT BINARY

FIXD @FIXD

841

FIXD S D

S: 第一个源字 D: 目的地字

LREAL INT

DOUBLE FLOATING TO 32-BIT BINARY

FIXLD @FIXLD

842

FIXLD S D

S: 第一个源字

LREAL

-----

D: 第一个目的地字 DINT

16-BIT BINARY TO DOUBLE FLOATING

DBL @DBL

843

DBL S D

S: 源字

INT

-----

D: 第一个目的地字 LREAL

32-BIT BINARY TO DOUBLE FLOATING

DBLL @DBLL

844

DBLL S D

S: 第一个源字

DINT

-----

D: 第一个目的地字 DINT

DOUBLE FLOATING- +D POINT ADD @+D

845

+D Au Ad R

Au: 第一个被加数 字 Ad: 第一个加数字 R: 第一个结果字 Mi: 第一个被减数 字 Su: 第一个减数字 R: 第一个结果字 Md: 第一个被乘数 字 Mr: 第一个乘数字 R: 第一个结果字 Dd: 第一个被除数 字 Dr: 第一个除数字 R: 第一个结果字

LREAL LREAL LREAL LREAL LREAL LREAL LREAL LREAL LREAL LREAL

---------------------

DOUBLE FLOATING- -D POINT SUBTRACT @-D

846

-D Mi Su R

DOUBLE FLOATING- *D POINT MULTIPLY @*D

847

*D Md Mr R

DOUBLE FLOATING- /D POINT DIVIDE @/D

848

/D Dd Dr R

LREAL LREAL

-----

DOUBLE DEGREES TO RADIANS

RADD @RADD

849

RADD S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

87

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----

DOUBLE RADIANS TO DEGREES

DEGD @DEGD

850

DEGD S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

DOUBLE SINE

SIND @SIND

851

SIND S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE COSINE

COSD @COSD

852

COSD S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE TANGENT

TAND @TAND

853

TAND S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE ARC SINE

ASIND @ASIND

854

ASIND S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE ARC COSINE

ACOSD @ACOSD

855

ACOSD S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE ARC TANGENT

ATAND @ATAND

856

ATAND S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE SQUARE ROOT

SQRTD @SQRTD

857

SQRTD S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE EXPONENT EXPD @EXPD

858

EXPD S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

DOUBLE LOGARITHM

LOGD @LOGD

859

LOGD S R

S: 第一个源字 R: 第一个结果字

LREAL LREAL

-----

88

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

DOUBLE EXPONENTIAL POWER

PWRD @PWRD

860

PWRD B E R

B: 第一个基字 E: 第一个幂数字 R: 第一个结果字

LREAL LREAL LREAL

DOUBLE SYMBOL COMPARISON

LD, AND, OR + =D, <>D, <D, <=D, >D, >=D

335 (=D) 336 (<>D) 337 (<D) 338 (<=D) 339 (>D) 340 (>=D)

使用 LD:
Symbol, option

S1: 比较数据 1 S2: 比较数据 2

LREAL LREAL

-----

S1 S2

使用 AND:
Symbol, option

S1 S2

使用 OR:
Symbol, option

S1 S2

89

指令支持和操作数限制

第 2-6 节

2-6-15 表数据处理指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中)

SET STACK

SSET @SSET

630

SSET TB N

TB: 第一个栈地址 N: 字数 TB 第一个栈地址 S: 源字 TB: 第一个栈地址 D: 目的地字 TB: 第一个栈地址 D: 目的地字 N: 表号 LR: 每个记录的长 度 NR: 记录数 TB: 第一个表字

UINT UINT ------------#+ 十进制小 数 (仅) UINT UINT UINT ------------UDINT

有 (不固 定) --------------------有 (不固 定) --------------有 (不固 定) ----有 (不固 定)

PUSH ONTO STACK PUSH @PUSH FIRST IN FIRST OUT FIFO @FIFO

632 633 634 631

在功能块中不支持 在功能块中不支持 在功能块中不支持

LAST IN FIRST OUT LIFO @LIFO DIMENSION RECORD TABLE DIM @DIM

DIM N LR NR TB

SET RECORD LOCATION

SETR @SETR

635

在功能块中不支持

N: 表号 R: 记录数 D: 目的地变址寄存 器 N: 表号 IR: 变址寄存器 D: 目的地字

GET RECORD NUMBER

GETR @GETR

636

在功能块中不支持

DATA SEARCH

SRCH @SRCH

181

SRCH C R1 Cd

C: 第一个控制字

R1: 范围内的第一个 UINT 字 WORD Cd: 比较数据 N: 字数 UINT

SWAP BYTES

SWAP @SWAP

637

SWAP N R1

R1: 范围内的第一个 UINT 字

90

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中)

FIND MAXIMUM

MAX @MAX

182

MAX C R1 D

C: 第一个控制字

UDINT

--有 (不固 定) ----有 (不固 定) ----有 (不固 定) ----有 (不固 定) --有 (不固 定) --有 (不固 定) ----有 (不固 定) ----有 (不固 定) -----

R1: 范围内的第一个 UINT 字 UINT D: 目的地字 C: 第一个控制字 UDINT

FIND MINIMUM

MIN @MIN

183

MIN C R1 D

R1: 范围内的第一个 UINT 字 UINT D: 目的地字 C: 第一个控制字 UDINT

SUM

SUM @SUM

184

SUM C R1 D

R1: 范围内的第一个 UINT 字 UDINT D: 目的地字 C: 第一个控制字 UDINT

FRAME CHECK SUM

FCS @FCS

180

FCS C R1 D

R1: 范围内的第一个 UINT 字 UINT D: 目的地字 TB: 第一个栈地址 D: 目的地字 TB: 第一个栈地址 C: 偏离值 D: 目的地字 TB: 第一个栈地址 C: 偏离值 S: 源数据 TB: 第一个栈地址 C: 偏离值 S: 源数据 UINT UINT UINT UINT UINT UINT UINT UINT UINT UINT UINT

STACK SIZE READ

SNUM @SNUM

638

SNUM TB D

STACK DATA READ

SREAD @SREAD

639

SREAD TB C D

STACK DATA OVERWRITE

SWRIT @SWRIT

640

SWRIT TB C S

STACK DATA INSERT

SINS @SINS

641

SINS TB C S

91

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中)

STACK DATA DELETE

SDEL @SDEL

642

SDEL TB C D

TB: 第一个控制字 C: 范围内的第一个 字 D: 目的地字

UINT UINT UINT

有 (不固 定) -----

2-6-16 数据控制指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --有 (39) ---

PID CONTROL

PID

190

PID S C D

S: 输入字 C: 第一个参数字 D: 输出字

UINT WORD UINT

PID CONTROL WITH PIDAT AUTO TUNING

191

PIDAT S C D

S: 输入字 C: 第一个参数字 D: 输出字

UINT WORD UINT

--有 (41) ---

LIMIT CONTROL

LMT @LMT

680

LMT S C D

S: 输入字 C: 第一个参数字 D: 输出字

INT DINT INT

--有 (2) ---

DEAD BAND CONTROL

BAND @BAND

681

BAND S C D

S: 输入字 C: 第一个参数字 D: 输出字

INT UINT UINT

--有 (2) ---

DEAD ZONE CONTROL

ZONE @ZONE

682

ZONE S C D

S: 输入字 C: 第一个参数字 D: 输出字

INT UDINT UINT

--有 (2) ---

92

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --有 (7) ----有 (4) ----有 (3) ---

TIMEPROPORTIONAL OUTPUT

TPO

685

TPO S C R

S: 输入字 C: 第一个参数字 R: 脉冲输出位 S: 输入字 P1: 第一个参数字 R: 结果字 S: 输入字 P1: 第一个参数字 R: 结果字

UINT WORD BOOL UINT LWORD WORD INT WORD WORD

SCALING

SCL @SCL

194

SCL S P1 R

SCALING 2

SCL2 @SCL2

486

SCL2 S P1 R

SCALING 3

SCL3 @SCL3

487

SCL3 S P1 R

S: 输入字 P1: 第一个参数字 R: 结果字

WORD WORD INT

--有 (5) ---

AVERAGE

AVG

195

AVG S N R

S: 输入字 N: 循环数 R: 结果字

UINT UINT UINT

----有 (不固 定)

2-6-17 子程序指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ---

SUBROUTINE CALL

SBS @SBS SBN

091

功能块中不支持

N:子程序号

---

SUBROUTINE ENTRY SUBROUTINE RETURN

092

功能块中不支持

N:子程序号

---

---

RET

093

功能块中不支持

---

---

93

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----------

MACRO

MCRO @MCRO

099

功能块中不支持

N:子程序号 S: 中断数据 D: 第一个输出参数 字 N:子程序号 N:子程序号

-----------

GLOBAL SUBROUTINE CALL GLOBAL SUBROUTINE ENTRY GLOBAL SUBROUTINE RETURN JUMP TO SUBROUTINE

GSBS @GSBS GSBN

750 751

功能块中不支持 功能块中不支持

GRET

752

功能块中不支持

---

---

JSB 982 (FQM1 only)

功能块中不支持

---

---

---

2-6-18 中断控制指令
指令 助记符 功能码 符号 操作数 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --# 十进制小数 (仅) UINT --# 十进制小数 --(仅) UINT --# 十进制小数 --(仅) UINT ------WORD INT INT ----------支持的变量 数据类型

SET INTERRUPT MASK

MSKS @MSKS

690

MSKS N S

N: 中断识别符 S: 中断数据 N: 中断识别符 D: 目的地字 N: 中断识别符 S: 中断数据 ----C1: 控制数据 #1 C2: 控制数据 #2 C3: 控制数据 #3

READ INTERRUPT MASK

MSKR @MSKR

692

MSKR N D

CLEAR INTERRUPT CLI @CLI

691

CLI N S

DISABLE INTERRUPTS ENABLE INTERRUPTS INTERVAL TIMER

DI @DI EI STIM @STIM (FQM1 only)

693 694 980

DI EI STIM C1 C2 C3

94

指令支持和操作数限制

第 2-6 节

2-6-19 高速计数器和脉冲输出指令 (仅 CJ1M-CPU21/22/23)
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

MODE CONTROL

INI @INI

880

INI P C NV

P: 端口区分符 C: 控制数据 NV: 有新 PCV 的第 一个字 P: 端口区分符

WORD UINT DWORD

HIGH-SPEED COUNTER PV READ

PRV @PRV

881

PRV P C D

PRV2 COUNTER FREQUENCY CONVERT (CJ1M CPU Unit Ver. 2.0 or later only) COMPARISON TABLE LOAD CTBL @CTBL

883

PRV2 C1 C2 D

# 十进制小数 --(仅) C: 控制数据 # 十进制小数 --(仅) D: 第一个目的地字 WORD 有 (1 或 2) WORD --C1: 控制数据 C2: 脉冲 / 旋转 D: 第一个目的地字 UINT UDINT -----

882

CTBL P C TB

P: 端口区分符 C: 控制数据

# 十进制小数 --(仅) # 十进制小数 --(仅) LWORD 有 (不固 定) -------

TB: 第一个比较表 字 SPEED OUTPUT SPED @SPED 885 P: 端口区分符 M: 输出模式 F: 第一个脉冲频率 字 P: 端口区分符 T: 脉冲类型 N: 脉冲数

SPED P M F

UINT WORD UDINT

SET PULSES

PULS @PULS

886

PULS P T N

UINT UINT DINT

-------

PULSE OUTPUT

PLS2 @PLS2

887

PLS2 P M S F

P: 端口区分符 M: 输出模式 S: 设置表第一个字 F: 起始频率第一个 字

# + decimal only # + decimal only WORD UDINT

----Yes (6) ---

95

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ----Yes (3) -----------

ACCELERATION CONTROL

ACC @ACC

888

ACC P M S

P: 端口区分符 M: 输出模式 S: 设置表第一个字 P: 端口区分符 C: 频率 P: 负载系数 F: 频率 D: 负载系数

# + decimal only # + decimal only WORD # + decimal only # + decimal only # + decimal only # + decimal only # + decimal only

ORIGIN SEARCH

ORG @ORG

889

ORG P C

PULSE WITH VARIABLE DUTY FACTOR

PWM @PWM

891

PWM P F D

2-6-20 步进指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----

STEP DEFINE STEP START

STEP SNXT

008 009

功能块中不支持 功能块中不支持

B: 位 B: 位

-----

2-6-21 基本 I/O 单元指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --------有 (不固 定)

I/O REFRESH 7-SEGMENT DECODER

IORF @IORF SDEC @SDEC

097 078

功能块中不支持

St: 起始字 E: 结束字 S: 源字 Di: 数字标志符 D: 第一个目的地字

----UINT UINT UINT

SDEC S Di D

96

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----------------

DIGITAL SWITCH INPUT

DSW

210

DSW I O D C1 C2

I: 数据输入字 (D0~D3) O: 输出字 D: 第一个结果字 C1: 数字数量 C2: 系统字 I: 数据输入字 D1: 第一个登录字 D2: 键输入字

UINT UINT WORD UINT WORD UINT UDINT UINT

TEN KEY INPUT

TKY

211

TKY I D1 D2

HEXADECIMAL KEY INPUT

HKY

212

HKY I O D C

I: 数据输入字 O: 输出字 D: 第一个登录字 C: 系统字

UINT UINT WORD WORD

----有 (3) ---

MATRIX INPUT

MTR

213

MTR I O D C

I: 数据输入字 O: 输出字 D: 第一个登录字 C: 系统字 S: 第一个源字 O: 输出字 C: 控制数据 D: 系统字 C: 控制数据 S: 传送源字和字数

UINT UINT ULINT WORD WORD UINT # + decimal only WORD UINT UDINT

----有 (4) --有 (2) --------有 (2) 当需要数 组变量 时,必须 使用 UNIT。 有 (不固 定)

7-SEGMENT DISPLAY OUTPUT

7SEG

214

7SEG S O C D

INTELLIGENT I/O READ

IORD @IORD

222

IORD C S D

D: 传送目的地字和 字数

UINT

97

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --有 (不固 定) 有 (2) 当需要数 组变量 时,必须 使用 UNIT。 ---

INTELLIGENT I/O WRITE

IOWR @IOWR

223

IOWR C S D

C: 控制数据 S: 传送源字和字数 D: 传送目的地字和 字数

UINT WORD UINT

CPU BUS UNIT I/O REFRESH

DLNK @DLNK

226

DLNK N

N: 单元数

UINT

98

指令支持和操作数限制

第 2-6 节

2-6-22 串行通信指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ----有 (不固 定) 有 (不固 定) 有 (不固 定) -----

PROTOCOL MACRO

PMCR @PMCR

260

PMCR C1 C2 S R

C1: 控制字 1 C2: 控制字 2 S: 第一个发送字 R: 第一个接收字 S: 第一个源字 C: 控制字 N: 字节数 0000~0100 十六进 制 (0 到 256 十进 制) D: 第一个目的地字 C: 控制字 N: 字节数 0000~0100 十六进 制 (0 到 256 十进 制) S: 第一个源字 C: 第一个控制字 N: 发送字节数 (4 位数 BCD) D: 第一个目的地字 C: 第一个控制字 N: 发送字节数 (4 位数 BCD) C: 控制字 (端口) S: 第一个源字

UINT UINT UINT UINT UINT UINT UINT

TRANSMIT

TXD @TXD

236

TXD S C N

RECEIVE

RXD @RXD

235

RXD D C N

UINT UINT UINT

有 (不固 定) -----

TRANSMIT VIA TXDU SERIAL @TXDU COMMUNICATIONS UNIT

256

TXDU S C N

UINT UDINT UINT UINT UDINT UINT UINT UINT

有 (不固 定) ----有 (不固 定) ------有 (不固 定)

RECEIVE VIA RXDU SERIAL @RXDU COMMUNICATIONS UNIT

255

RXDU D C N

CHANGE SERIAL PORT SETUP

STUP @STUP

237

STUP C S

99

指令支持和操作数限制

第 2-6 节

2-6-23 网络指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 有 (不固 定) 通过 AT 设置指定 远程节点 处的地址 有 (5) 通过 AT 设置指定 远程节点 处的地址 有 (不固 定) 有 (5) 有 (不固 定) 有 (不固 定) 有 (6) 有 (不固 定) 有 (不固 定) 有 (4) 当需要数 组变量 时,必要 使用 WORD。 EXPLICIT GET ATTRIBUTE EGATR 721
EGATR S D C

NETWORK SEND

SEND @SEND

090

SEND S D C

S: 第一个源字 D: 第一个目的地字

UINT UINT

C: 第一个控制字 NETWORK RECEIVE RECV @RECV 098
RECV S D C

WORD UINT

S: 第一个源字

D: 第一个目的地字 C: 第一个控制字

UINT WORD UINT UINT WORD WORD WORD LWORD

DELIVER COMMAND CMND @CMND

490

CMND S D C

S: 第一个源字 D: 第一个目的地字 C: 第一个控制字 S: 第一个源字 D: 第一个目的地字 C: 第一个控制字

EXPLICIT MESSAGE SEND

EXPLT

720

EXPLT S D C

S: 发送信息的第一 个字

ULINT

有 (4) 当需要数 组变量 时,必要 使用 WORD。

EXPLICIT SET ATTRIBUTE

ESATR

722

ESATR S C

D: 接收信息的第一 个字 C: 第一个控制字信 息 S: 发送信息的第一 个字 C: 第一个控制字

WORD LWORD WORD WORD

有 (不固 定) 有 (4) 有 (不固 定) 有 (3)

100

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 当采用 AT 设置时, 规定目的 地地址。

EXPLICIT WORD READ

ECHRD

723

ECHRD S D C

S: 远程 CPU 单元中 UINT 的第一个源字

D: 当地 CPU 单元中 UINT 的第一个目的地字 C: 第一个控制字 EXPLICIT WORD WRITE ECHWR 724
ECHWR S D C

有 (2)

WORD

有 (5) 有 (不固 定) 当采用 AT 设置时, 规定目的 地地址。

S: 远程 CPU 单元中 UINT 的第一个源字 D: 当地 CPU 单元中 UINT 的第一个目的地字

C: 第一个控制字

WORD

有 (5)

2-6-24 文件存储指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --有 (2) 当需要数 组变量 时,必要 使用 DWORD。 有 (39) 有 (不固 定) --有 (2) 当需要数 组变量 时,必要 使用 DWORD。 有 (39) 有 (不固 定)

READ DATA FILE

FREAD @FREAD

700

FREAD C S1 S2 D

C: 控制字 S1: 第一个源字

UINT LWORD

S2: 文件名 D: 第一个目的地字 WRITE DATA FILE FWRIT @FWRIT 701
FWRIT C D1 D2 S

UINT UINT UINT

C: 控制字

D1: 第一个目的地字 LWORD

D2: 文件名 S: 第一个源字

UINT UINT

101

指令支持和操作数限制

第 2-6 节

2-6-25 显示指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --Yes (16)

DISPLAY MESSAGE

MSG @MSG

046

MSG N M

N: 信息数 M: 第一个信息字

UINT UINT

SEVEN-SEGMENT LED WORD DATA DISPLAY

SCH @SCH

047

SCH S C

S: 信息数据 C: 最左 / 最右 2 位 数区分符 S: 控制数据

WORD UINT

-----

SEVEN-SEGMENT LED CONTROL

SCTRL @SCTRL

048

SCTRL S

UINT

---

2-6-26 时钟指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 有 (3) 有 (2) 当需要数 组变量 时,必要 使用 WORD。 有 (3) 有 (3) 有 (2) 当需要数 组变量 时,必要 使用 WORD。 有 (3)

CALENDAR ADD

CADD @CADD

730

CADD C T R

C: 第一个日历 T: 第一个时间字

WORD DWORD

R: 第一个结果字 CALENDAR SUBTRACT CSUB @CSUB 731
CSUB C T R

WORD WORD DWORD

C: 第一个日历 T: 第一个时间字

R: 第一个结果字

WORD

102

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 有 (2) 当需要数 组变量 时,必要 使用 WORD。

HOURS TO SECONDS

SEC @SEC

065

SEC S D

S: 第一个源字

DWORD

D: 第一个目的地字

DWORD

有 (2) 当需要数 组变量 时,必要 使用 WORD。

SECONDS TO HOURS

HMS @HMS

066

HMS S D

S: 第一个源字

DWORD

有 (2) 当需要数 组变量 时,必要 使用 WORD。

D: 第一个目的地字

DWORD

有 (2) 当需要数 组变量 时,必要 使用 WORD。

CLOCK ADJUSTMENT

DATE @DATE

735

DATE S

S: 第一个源字

LWORD

有 (4) 当需要数 组变量 时,必要 使用 WORD。

103

指令支持和操作数限制

第 2-6 节

2-6-27 调试指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ---

TRACE MEMORY SAMPLING

TRSM

045

TRSM

---

---

2-6-28 故障诊断指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ---

FAILURE ALARM

FAL @FAL

006

FAL N M

N: FAL 数

#+ 仅十进制

M:生成第一个信 息字或错误代码 (#0000~#FFFF) N:FALS 数

WORD

---

SEVERE FAILURE ALARM

FALS

007

FALS N M

#+ 仅十进制

---

M:生成第一个信 息字或错误代码 (#0000~#FFFF) C:控制字

WORD

---

FAILURE POINT DETECTION

FPD

269

功能块中不支持

---

---

T:监视时间

---

---

R:第一个登录字

---

---

104

指令支持和操作数限制

第 2-6 节

2-6-29 其他指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

SET CARRY CLEAR CARRY SELECT EM BANK

STC @STC CLC @CLC EMBC @EMBC

040 041 281

STC CLC EMBC N

----N:EM 组数

----UINT

WDT EXTEND MAXIMUM CYCLE @WDT TIME SAVE Condition FlagS LOAD Condition FlagS CONVERT ADDRESS FROM CV CCS @CCS CCL @CCL FRMCV @FRMCV

094

WDT T

T: 定时器设置

仅指常数

---

282 283 284 功能块中不支持

CCS CCL

----S: 含 CV- 系列存储 器地址的字 D: 目的地变址寄存 器

-------

-------

---

---

CONVERT ADDRESS TO CV

TOCV @TOCV

285

功能块中不支持

S: 含 CS- 系列串行 存储器地址的变址 寄存器 D: 目的地字

---

---

-----

-----

DISABLE PERIPHERAL SERVICING

IOSP @IOSP

287

IOSP

---

ENABLE PERIPHERAL SERVICING

IORS

288

IORS

---

---

---

105

指令支持和操作数限制

第 2-6 节

2-6-30 块编程指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ---------------------

BLOCK PROGRAM BEGIN BLOCK PROGRAM END BLOCK PROGRAM PAUSE BLOCK PROGRAM RESTART CONDITIONAL BLOCK EXIT CONDITIONAL BLOCK EXIT CONDITIONAL BLOCK EXIT (NOT) CONDITIONAL BLOCK BRANCHING CONDITIONAL BLOCK BRANCHING CONDITIONAL BLOCK BRANCHING (NOT) CONDITIONAL BLOCK BRANCHING (ELSE) CONDITIONAL BLOCK BRANCHING END ONE CYCLE AND WAIT ONE CYCLE AND WAIT ONE CYCLE AND WAIT (NOT) TIMER WAIT

BPRG BEND BPPS BPRS CONDITION EXIT EXIT Bit operand EXIT NOT Bit operand CONDITION IF IF Bit operand IF NOT Bit operand ELSE

096 801 811 812 806 806 806 802 802 802

功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持

N: 块程序号 --N: 块程序号 N: 块程序号 --B: 位操作数 B: 位操作数 --B: 位操作数 B: 位操作数

---------------------

803

功能块中不支持

---

---

---

IEND

804

功能块中不支持

---

---

---

CONDITION WAIT WAIT Bit operand WAIT NOT Bit operand TIMW (BCD) TIMWX (BIN)

805 805 805 813 816 814

功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持

--B: 位操作数 B: 位操作数 N: 定时器数 SV: 设定值 N: 定时器数 SV: 设定值 N: 定时器数 SV: 设定值 I: 计数输入

---------------------------

---------------------------

COUNTER WAIT

CNTW (BCD)

CNTWX (BIN)

817

功能块中不支持

N: 定时器数 SV: 设定值 I: 计数输入

106

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -----------------

HIGH-SPEED TIMER WAIT

TMHW (BCD) TMHWX (BIN)

815 818 809 810 810 810

功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持 功能块中不支持

N: 定时器数 SV: 设定值 N: 定时器数 SV: 设定值 ----B: 位操作数 B: 位操作数

-----------------

LOOP LEND LEND LEND NOT

LOOP LEND LEND Bit operand LEND NOT Bit operand

2-6-31 文本串处理指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 有 (不固 定) 有 (不固 定) 有 (不固 定) 有 (不固 定) 有 (不固 定) 有 (不固 定) --有 (不固 定) 有 (不固 定) --有 (不固 定)

MOV STRING

MOV$ @MOV$

664

MOV$ S D

S: 第一个源字 D: 第一个目的地字 S1: 文本串 1 S2: 文本串 2 D: 第一个目的地字

UINT UINT INT INT INT

CONCATENATE STRING

+$ @+$

656

+$ S1 S2 D

GET STRING LEFT

LEFT$ @LEFT$

652

LEFT$ S1 S2 D

S1: 文本串第一个字 UINT S2: 字符数 D: 第一个目的地字 UINT UINT

GET STRING RIGHT RGHT$ @RGHT$

653

RGHT$ S1 S2 D

S1: 文本串第一个字 UINT

S2: 字符数 D: 第一个目的地字

UINT UINT

107

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 有 (不固 定) ----有 (不固 定) 有 (不固 定) 有 (不固 定) --有 (不固 定) --有 (不固 定) 有 (不固 定) ----有 (不固 定) 有 (不固 定) ----有 (不固 定) 有 (不固 定) 有 (不固 定) 有 (不固 定)

GET STRING MIDDLE

MID$ @MID$

654

MID$ S1 S2 S3 D

S1: 文本串第一个字 UINT S2: 字符数 S3: 起始位置 D: 第一个目的地字 UINT UINT UINT

FIND IN STRING

FIND$ @FIND$

660

FIND$ S1 S2 D

S1: 源文本串第一个 UINT 字 S2: 发现文本串第一 UINT 个字 D: 第一个目的地字 UINT S: 文本串第一个字 D: 第一个目的地字 UINT UINT

STRING LENGTH

LEN$ @LEN$

650

LEN$ S D

REPLACE IN STRING

RPLC$ @RPLC$

661

RPLC$ S1 S2 S3 S4 D

S1: 源文本串第一个 UINT 字 S2: 替换文本串第一 UINT 个字 UINT S3: 字符数 S4: 起始位置 D: 第一个目的地字 UINT UINT

DELETE STRING

DEL$ @DEL$

658

DEL$ S1 S2 S3 D

S1: 第一个目的地字 UINT S2: 字符数 S3: 起始位置 D: 第一个目的地字 Ex1: 第一个交换字 1 Ex2: 第一个交换字 2 S: 文本串第一个字 UINT UINT UINT UINT

EXCHANGE STRING XCHG$ @XCHG$

665

XCHG$ Ex1 Ex2

UINT

CLEAR STRING

CLR$ @CLR$

666

CLR$ S

UINT

108

指令支持和操作数限制
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-6 节
所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) 有 (不固 定) 有 (不固 定) --有 (不固 定) 有 (不固 定) 有 (不固 定)

INSERT INTO STRING

INS$ @INS$

657

INS$ S1 S2 S3 D

S1: 文本串第一个字 UINT S2: 字符数 S3 起始位置 D: 第一个目的地字 UINT UINT UINT UINT UINT

String Comparison

LD,AND, OR 670 (=$) + 671 (<>$) =$,<>$,<$,<= 672 (<$) $,>$,>=$ 673 (<=$) 674 (>$) 675 (>=$)

符号 S1 S2

S1: 文本串 1 S2: 文本串 2

2-6-32 任务控制指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) ---

TASK ON

TKON @TKON

820

TKON N

N: 任务数

#+ 十进制数 (仅)

TASK OFF

TKOF @TKOF

821

TKOF N

N: 任务数

#+ 十进制数 (仅)

---

109

指令支持和操作数限制

第 2-6 节

2-6-33 型号转换指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型 所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) --有 (不固 定) 有 (不固 定) --有 (不固 定) --有 (不固 定) -------------

BLOCK TRANSFER

XFERC @XFERC

565

XFERC W S D

W: 字数 (在 BCD 中) S: 第一个源字

WORD WORD

D: 第一个目的地字 SINGLE WORD DISTRIBUTE DISTC @DISTC 566
DISTC S1 D S2

WORD WORD WORD WORD WORD WORD WORD WORD

S1: 源字 D: 目的地基地址 S2: 偏移 (在 BCD 中) S1: 源基地址 S2: 偏移 (在 BCD 中) D: 目的地基地址 S: 源字或数据

DATA COLLECT

COLLC @COLLC

567

COLLC S1 S2 D

MOVE BIT

MOVBC @MOVBC

568

MOVBC S C D

C: 控制字 (在 BCD WORD 中) WORD D: 目的地字 W: 字数 (在 BCD 中) S: 第一个源字 WORD

BIT COUNTER

BCNTC @BCNTC

621

BCNTC W S D

UINT

有 (不固 定) ---

D: 结果字

WORD

110

CPU 单元功能块规格 2-6-34 功能块特殊指令
指令 助记符 功能码 符号 操作数 支持的变量 数据类型

第 2-7 节

GET VARIABLE ID

GETID @GETIC

286

GETID S D1 D2

S: 源变量或地址 D1: 变量类型 (I/O 存储器区) e D2: 字地址

WORD WORD WORD

所需的 AT 设置或数 组变量 (所需的 字数据量 示于括号 中) -------

2-7

CPU 单元功能块规格
下表所示的是用于 CS/CJ- 系列 CS1-H、 CJ1-H 和 CJ1M CPU 单元 (3.0 版或以 后版本)的功能块规格。有关其他规格请参阅 CS/CJ 系列的其他操作手册。

2-7-1

规格
项目 规格 CS1HCPU63H 20K

CS1-H CPU 单元
型号 I/O 点 程序容量 (步骤) 数据存储器 扩展数据存储器 CS1HCPU67H 5,120 250K 32K 字
32K 字 x13 组 E0_00000~ EC_32767 32K 字 x7 组 E0_00000~ E6_32767 32K 字 x3 32K 字 x1 组 组 E0_00000~E0_32767 E0_00000~ E2_32767 32K 字 x3 32K 字 x1 组 组 E0_00000~EC_32767 E0_00000~ E2_32767

CS1HCPU66H 120K

CS1HCPU65H 60K

CS1HCPU64H 30K

CS1GCPU45H 60K

CS1GCPU44H 1,280 30K

CS1GCPU43H 960 20K

CS1GCPU42H 10K

功能块

定义最大 数 最大实例 数

1,024 2,048

1,024 2,048

1,024 2,048

1,024 2,048

128 256

1,024 2,048

1,024 2,048

128 256

128 256

闪存

功能块程 1,664 序存储器 (千字节)

1,664

1,024

512

512

1,024

512

512

512

注释文件 128 (千字节)

128

64

64

64

64

64

64

64

111

CPU 单元功能块规格
项目 闪存 程序索引 128 文件 (千 字节) 128 变量表 (千字节) 128 64 64 64 规格 64 64 64

第 2-7 节

64

128

128

64

64

128

64

64

64

CJ1-H CPU 单元
项目 型号 I/O 点 程序容量 (步骤) 数据存储器 扩展数据存储器 CJ1HCPU67H 2,560 250K 32K 字
32K 字 x13 32K 字 x7 组 32K 字 x3 组 32K 字 x1 组 E0_00000~E6 E0_00000~E2 E0_00000~E2_32 组 E0_00000~E _32767 _32767 767 C_32767

CJ1HCPU66H 120K

CJ1HCPU65H 60K

规格 CJ1H-CPU64H

CJ1GCPU44H 1,280 30K

CJ1GCPU43H 960 20K

CJ1GCPU42H 10K

30K

32K 字 x1 组 E0_00000~E0_32767

功能块

定义最大数 最大实例数

1,024 2,048

1,024 2,048

1,024 2,048

1,024 2,048

1,024 2,048

128 256

128 256

闪存

功能块程序 1,664 存储器 (千 字节)

1,664

1,024

1,024

512

512

512

注释文件 (千字节)

128

128

64

64

64

64

64

闪存

程序索引文 128 件 (千字 节) 变量表 (千 128 字节)

128

64

64

64

64

64

128

128

128

64

64

64

CJ1-H CPU 单元
项目 型号 I/O 点 有内部 I/O 功能的单元 CJ1M-CPU23 CJ1M-CPU22 CJ1M-CPU21 640 320 160 10K 不支持扩展 5K 规格 无内部 I/O 功能的单元 CJ1M-CPU13 CJ1M-CPU12 CJ1M-CPU11 640 320 160 20K 最多一个 10K 不支持扩展 5K

程序容量 (程序步) 20K 扩展极数 最多一个 数据存储器 32K 字 扩展数据存储器 无

112

CPU 单元功能块规格
项目 有内部 I/O 功能的单元 脉冲开始时间 46ms (无加速 / 减速) 70ms (有加速 / 减速) 63ms (无加速 --/ 减速) 100ms (有加速 / 减 速) 1 2 1 无 256 1,024 256 1,024 规格 无内部 I/O 功能的单元

第 2-7 节

计划中断数 PWM 输出

2 2

1 256 256

1,024 子程序数最大值 JMP 指令中跳转数最 1,024 大值 --内部输入 10 点 ?4 个中断输入 (脉冲捕捉) ?2 个高速计数器输入 (50-kHz 相差或 100-kHz 单相) --内部输出 6点 6点 ?2 个脉冲输出 (100-kHz) ?2 个脉冲输出 (100-kHz) ?2 个 PWM 输出 ?1 个 PWM 输 出 128 功能块 定义最大 数 最大实例 256 数 闪存 功能块程 256 序存储器 (千字节) 注释文件 64 (千字节) 程序索引 64 文件 (千 字节) 64 变量表 (千字节)

CP1H CPU 单元
项目 型号 X型 CP1H-X40DR-A CP1H-X40DT-D CP1H-X40DT1-D XA 型 CP1H-XA40DR-A CP1H-XA40DT-D CP1H-XA40DT1-D Y型 CP1H-Y20DT-D

最大 I/O 点数

320 点 (40 个内置点 +40 点 / 扩展槽 x7 槽)

300 点 (20 个内置点 +40 点 / 扩展槽 x7 槽)

程序容量 (程序步)

20K

数据存储器

32k 字

113

CPU 单元功能块规格
项目 功能块 定义最大数 128 X型 XA 型 Y型

第 2-7 节

最大实例数

256

闪存

功能块程序存储 器 (千字节)

256

注释文件 (千字 64 节) 程序索引文件 (千字节) 变量表 (千字 节) 64 64

NSJ 系列 NSJ 控制器
型号 最大 I/O 点数 程序容量 (程序步) 数据存储器 功能块 闪存 定义最大数 最大实例数 功能块程序存储 器 (千字节) 注释文件 (千字 节) 程序索引文件 (千字节) 变量表 (千字 节) NSJ5-TQ0 □ -G5D, NSJ5-SQ0 □ -G5D, NSJ8-TV0 □ -G5D, NSJ10-TV0 □ -G5D, NSJ12-TS0 □ -G5D, 1,280 60K 32k 字 1024 2048 1024 64 64 128

FQM1 柔性运动控制器
项目 型号 最大 I/O 点数 程序容量 (程序步) 数据存储器 功能块 闪存 定义最大数 最大实例数 功能块程序存储 器 (千字节) 注释文件 (千字 节) 程序索引文件 (千字节) 变量表 (千字 节) 协调指令 FQM1-CM002 344 点 (24 个内置点 + 基 本 I/O 单元中的 320 点) 10K 32k 字 128 256 256 64 64 64 FQM1-MMA22 20 个内置点 运动控制器指令 FQM1-MMP22

114

CPU 单元功能块规格

第 2-7 节

2-7-2

定时器指令操作
在 CP1H CPU 单元和 CS1H、CJ1-H 和 CJ1M CPU 单元(3.0 版或以后版本)的 PLC 属性中,有一种选项称作 Apply the same spec as TO-2047 to T2048-4095。 该设置会影响本节所描述的定时器操作。

选择选项 (默认)

如果选择该选项,则无论定时器编号是多少所有定时器的操作均相同。详见下 表。 定时器编号 T0000 ~ T4095 的定时器操作
刷新 执行指令时 所有任务执行完毕时 每 80ms 描述 每当执行指令时刷新 PV。如果 PV 为 0,则完成标记处于 ON。如果 PV 不是 0,则完成标记处于 OFF。 一个循环刷新所有 PV 一次。 如果循环时间超过 80ms,则每 80ms 刷新所有 PV 一次。

不选择选项

如果未选择此选项,则定时器编号 T0000 ~ T2047 的定时器指令刷新与下面给 出的定时器编号 T2048~T4095 的定时器指令不一样。该工作与不支持功能块 的 CPU 单元相同。 (详情请参阅 CS/CJ 系列指令参考中的说明。 ) 定时器编号 T0000 ~ T2047 的定时器操作
刷新 执行指令时 描述 每当执行指令时刷新 PV。如果 PV 为 0,则完成标记处于 ON。如果 PV 不是 0,则完成标记处于 OFF。 一个循环刷新所有 PV 一次。 如果循环时间超过 80ms,则每 80ms 刷新所有 PV 一次。

所有任务执行完毕时 每 80ms

定时器编号 T2048~T4095 的定时器操作
刷新 执行指令时 所有任务执行完毕时 每 80ms 描述 每当执行指令时刷新 PV

CX-Programmer编程软件介绍.doc

CX-Programmer 编程软件介绍 CX-Programmer 是 OMR

欧姆龙CX-Programmer仿真未能启动的解决办法.doc

欧姆龙CX-Programmer仿真未能启动的解决办法 - 在 CX-P 软件启

CX-programmer编程软件的使用_图文.ppt

CX-programmer编程软件的使用 - 可编程序控制器 任务二 CX-programmer编程软件的使用 可编程序控制器 任务二...

CX-Programmer学习教程.doc

CX-Programmer学习教程 - CX-Programmer 教程 ...

CX-Programmer的使用方法_图文.ppt

CX-Programmer的使用方法 - CX-Programmer的使用方法 CX-Programmer的使用方法 自动化学院 《可编程控制器应用...

欧姆龙CX-Programmer快捷键.doc

欧姆龙CX-Programmer快捷键_机械/仪表_工程科技_专业资料。欧姆龙PLC 编程软件CX-Programmer快捷键 键盘快捷键 下面的列表是缺省设置。可以重新指定快捷键活为某一项...

CX-programmer编程软件的使用剖析_图文.ppt

CX-programmer编程软件的使用剖析 - 可编程序控制器 任务二 CX-programmer编程软件的使用 可编程序控制器 任务二 CX-programmer编程软件的使用 学习...

CX-Programmer上传 下载的流程图.pdf

CX-Programmer上传 下载的流程图 - 程序上传到 PLC CX-Programmer 1:打开要上传的程序 CX-Programmer 2:确认 CPU 型号及通讯端口(将 CPU ...

CX-Programmer 用户手册.pdf

104 ii OMRON CX-Programmer-用户手册 OMRON CX-Programmer-用户手册 第一章 技术规范本章概括的叙述了 CX-Programmer 软件,说明了能使 CX-Programmer 软件正常...

CX-Programmer_功能块操作手册.pdf

CX-Programmer_功能块操作手册 - W447-CN5-02 : W447-CN5-02 CX-Programmer 6.1 CX-Programmer 6.1 WS02-CXPC...

CX-Programmer中文操作手册.pdf

CX-Programmer中文操作手册 - PD PD F- XC h a n

CX-Programmer应用.doc

CX-Programmer应用 - 案例 2 启动 CX-Programmer CX-Programmer 可以从 Microsoft Windows 的任务条的开始按钮...

CX-Programmer上传下载的流程图.pdf

CX-Programmer上传下载的流程图。 您的评论 发布评论 用户评价 这

CX-Programmer使用指南(中文).pdf

CX-Programmer的安装步骤 在安装CX-Programmer之前,必须 在安装CX-Programmer之前,必须 中断所有Windows程序,并且 中断所有Windows程序,并且 如果已经安装有老版本的CX...

CX-programmer编程软件的使用_图文.ppt

CX-programmer编程软件的使用 - 可编程序控制器 任务二 CX-programmer编程软件的使用 可编程序控制器 任务二 CX-programmer编程软件的使用 学习目标...

CX-programmer编程软件的使用_图文.ppt

掌握可编程序控制器软件调试的能力 END 可编程序控制器 任务二 CX-programmer编程软件的使用 教学内容: 2....

欧姆龙CX-Programmer9.0的入门指南_图文.doc

a PC with the SYSMAC board that is built-in the PC where CX-Programmer is installed) FQM1 Series Flexible Motion Controller *1: 对于WS02-CXPC2-V的...

欧姆龙新手教程,CX-PROGRAMMER的使用。.pdf

欧姆龙新手教程,CX-PROGRAMMER的使用。 - CX-PROGRAMMER 的使用 一. 如果安装了 CS1W-CIF31 USB-232 适配器的话, 需要在计算机的设备管理器中设定该...

CX-Programmer v3.1软件安装使用说明.pdf

CX-Programmer v3.1软件安装使用说明 - 北京精仪达盛科技有限公司 1 CX-Programmer 软件安装使用说明 1、双击光盘下 x:\编程软件\cx-p3.1\CX-P...

CX-Programmer_功能块操作手册.txt

CX-Programmer_功能块操作手册 - CX-Programmer 6.