当前位置:
文档之家› 第10章 数据处理指令与移位寄存器
第10章 数据处理指令与移位寄存器
立即数, 标签
要存储在 FIFO 内的数据
Source 将转换为数组标签的数据类型。较小的整数将通过符 号扩展转换为较大的整数。
FIFO
SINT ,INT, DINT, REAL 数组标签 字符串, 结构
要修改的 FIFO 指定 FIFO 的第一个元素 不要在下标中使用
CONTROL.POS
Control CONTROL
• 移位寄存器是一个允许将寄存器中的内容向左或 向右移动的逻辑控制器。
• 通过一个寄存器或一组寄存器,串行地将一个位 移位到相邻的位置。
MSB
LSB
初始格式 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 0
数据位=1 时钟
MSB
LSB
1101100011011011
第一次移位时钟之后的移位寄存器格式
字0 .EN
.DN
.ER .UL 未使用
字1 Length 位数组的大小( 位数)
字2 Position 指令指向的位的当前位置 (currently not used)
• Logix系统的左移指令 • Logix系统的右移指令
Logix PLC指令BSL(BSR)参数说明
操作数
Array
Control Source bit Length
数据位=0 时钟
MSB
LSB
0110110001101101
第二次移位时钟之后的移位寄存器格式
数据位=1 时钟
时钟 时钟
MSB
LSB
1011000110110110
MSB
LSB
1101100011011011
MSB
LSB
0110110001101101
具有多寄存器的移位寄存器
MSB
LSB
1011000110110110
FIFO和LIFO操作)实现的数据传输和操作 – 展示SLC 500和Logix PLC中如何应用数据处理和位移指令
• 目标
– 能够解释数据是如何由位、字和文件处理的 – 描述逻辑指令:与、或、异或 – 描述文件—算术—逻辑功能 – 解释概念:移位寄存器 – 描述先入先出和后入先出移位功能的操作 – 描述复制和充填指令的操作 – 描述SLC 500和Logix系统的数据处理和操作指令并使用其开发梯
空位指示 FIFO 为空。如果 .LEN ≤ 0 或 .POS < 0,将 置位 .EM 位和 .DN 位。
长度指定 FIFO 可同时容纳元素的最多个数。
位置标识 FIFO 中的位置,指令将在其中装载下一个 值。
说明: FFU 指令可以和 FFL 指令配合使用,按照先入先出的顺 序存储和检 索数据。 使能后, FFU 指令将从 FIFO 的第一个元 素中卸载数据,并将该值放 在 Destination 中。指令每使能一 次,便会卸载一个值,直至 FIFO 清 空为止。如果 FIFO 为空, FFU 将 0 返回到 Destination。
例: 使能后, FFL 指令会将 value_1
装载到 FIFO 中的下一个位置 ( 在本 示例中是 array_dint[5])。
装载 FIFO 之前
装载 FIFO 之后
array_dint[0] 00000
00000
11111
11111
22222 33333 44444
control_1.pos = 5 value_1 = 55555
MSB
LSB
0101100011011011
右循环移位寄存器
19
左位移(BSL)和右位移(BSR)指令
• SLC的左移指令 将要被移动的位数组的地址
将要被移入的数据位地址 • SLC的右文移件指的令位长度
– Control结构
操作结构的地址
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
第10章 数据处理指令与移位寄存器
10.1 目的及目标 10.2 数据处理 10.3 Allen-Bradley数据转移和操作指令 10.4 位和字操作指令的经验设计 10.5 故障诊断 10.6 指令的位置
10.1 目的及目标
• 目的
– 介绍位、字和文件在PLC中是如何处理的 – 讨论由逻辑指令、文件—算术—逻辑指令和移位寄存器(包括
标签
操作的控制结构 通常与关联的 FFU 使用相同的 CONTROL
Length DINT
立即数 FIFO 可同时容纳元素的最多个数
Position DINT
立即数
FIFO 中的下一个位置,指令将在 其 中装载数据 初始值通常为 0
• 队列卸载指令FFU
– FFU指令从FIFO的第一个元素卸载数据,并将该值放置到 Destination。每次卸载一个值,直到FIFO空为止。如果FIFO为 空,FFU向Destination返回0。
卸载 FIFO 之前 卸载
array_dint[0] 00000
卸载 FIFO 之后
11111
11111
22222
22222
33333
33333 44444
移动
44444 55555
array_dint[5]
55555 00000
control_1.pos = 6
00000 00000
control_1.pos = 5 Value_2=00000
– 数值模式将数组运算分配到若干次扫描中。 – 此模式常用于处理非时间性数据或大量 数据。 – 输入每次扫描要运算的元素个数,这样可 缩短扫描时间。
11
当梯级输入条件从假变为真时,将触发执行。指 令将在每次扫描时执 行,扫描次数为完成整个 数组运算所需的次数。一旦触发,梯级输入 条 件即使反复改变,也不会中断指令的执行。
2.字到文件 3.文件到字
N7:10 7589
N7:4 N7:5 N7:6 N7:7
473 589 3490
25
7589 7589 7589 7589
N10:3 N10:4 N10:5 N10:6
25 N10:15
10.3 A-B数据转移和操作指令
10.3.1 AND,OR和XOR指令
源A
0 1 0 1
到程序清零.ER 位。 .POS 值包含产生溢出的元素的位置。
.L•ENLenDgItNhT—文长件度长用于度指及定位FAL置指指令针操作,的立数即组元数素,数在目。指令中输入
.POS DINT 位置包含指令正在访问的当前元素的位置。
• 运算模式 Mode(有3种)
– 整体(ALL)、数值、增量(INC)
22222 33333 44444
array_dint[5] 00000
55555
00000
00000 control_1.pos = 6
00000
00000
00000
00000
00000
00000
例: 使能后 FFU 指令将
array_dint[0] 卸载到 value_2 中,并 对 array_dint 中其余的元素进行移位 。
• 队列加载指令FFL
– FFL指令将Source值加载到FIFO中有.POS值标识的位置。每次启 用该指令时加载一个值,直到FIFO满为止
– 通常Source和FIFO属于相同数据类型 – 使用FFL和FFU指令按先进先出的顺序存储和取回数据。
操作数
类型
格式
说明
Source
SINT ,INT, DINT, REAL 字符串, 结构
类型
格式
DINT
数组标签
CONTROL 标签
BOOL
标签
DINT
立即数
说明
要修改的数组,指定要开始移位的元素; 不要在下标中使用CONTROL.POS 操作的控制结构 要装载的位 要移位的数组中位的个数
BSL(BSR)指令Control结构
助记符 .EN .DN .UL .ER .LEN
数据类型 BOOL BOOL BOOL BOOL DINT
形图 – 在经验设计中加入数据处理和操作指令 – 将指令描述用于故障诊断
10.2 数据处理
• 数据处理包括在位、字和文件上进行算术和逻辑操作实现 的数据转移和操作。其中字也叫寄存器,文件被称为表、 块或列
10.2.1 字中的位格式
– 字中的位格式可以转移到另一个字中。 – 可以利用一个掩码来改变一个字中的一个单独的位
00000
00000
00000
00000
00000
00000
10.3.5 后入先出(LIFO)功能
• LIFO的功能与FIFO一样,但是移动的顺序相反。即最先 收到的最后输出,最后收到的则最先输出。
• LIFO的存储空间通常被称为堆栈 • SLC系列PLC功能限制与(FIFO)相同。 • LIFO操作指令有LFL与LFU • 本节重点介绍Logix的LIFO指令
一次 扫描
梯级输入条件
.EN位
.DN位
指令的扫描
每当梯级由假变真 ,处理一个数据元
不执素行运算
运算完成
清除状态位和.POS值
用于FAL指令的标准梯形图
将一个单元复制 到一个数组
将一个数组复制 到另一个数组
16
将一个数组复制 到另一个单元
p327,PLC 5转 换成Logix指令
10.3.3 移位寄存器
• 文件算术逻辑指令FAL对数组内存储的数据进行复制、算 术、逻辑及函数运算操作
• SLC 500不支持FAL指令 • 本节介绍Logix的FAL指令,如图所示
• Control—具有Control数据类型的标签,数据操作的控制 结构。Control结构如下表