文件位比较 (FBC)

此信息适用于
CompactLogix
5370、
ControlLogix
5570、
Compact GuardLogix
5370、
GuardLogix
5570、
Compact GuardLogix
5380、
CompactLogix
5380、
ControlLogix
5580、
GuardLogix
5580 和 ControlLogix 5590 控制器。
FBC 指令将 Source 数组中的位与 Reference 数组中的位进行比较。
使能后,FBC 指令将 Source 数组中的位与 Reference 数组中的位进行比较,并将每个不匹配项的位号记录在 Result 数组中。
重要提示: FBC 指令对连续内存进行操作。必须进行测试并确认指令不会更改用户不希望更改的数据。
DDT 与 FBC 指令的区别是:DDT 指令每次发现不匹配项时,会根据源位的值更改参考位的值。而 FBC 指令不更改参考位。
如果指令尝试超出数组的末尾执行读操作,则指令会将 .ER 位置位并生成严重故障。
可用语言
梯形图
操作数
指令中混用数据类型时,需遵从相关的数据转换规则。请参见“数据转换”数据转换
梯形图
操作数
类型
格式
说明
Source
DINT
数组标签
要与参考数组进行比较的数组
不要
在下标中使用 CONTROL.POS
Reference
DINT
数组标签
要与源数组进行比较的数组
不要
在下标中使用 CONTROL.POS
Result
DINT
数组标签
用于存储结果的数组
不要
在下标中使用 CONTROL.POS
Cmp. Control
CONTROL
结构
比较的控制结构
Length
DINT
立即数
要比较的位数
Position
DINT
立即数
源数组中的当前位置
初始值通常为 0
Result control
CONTROL
结构
结果的控制结构
Length
DINT
立即数
结果数组中的存储位置数
Position
DINT
立即数
结果数组中的当前位置
初始值通常为 0
长度和位置(对应于关联控制标签中的 .LEN 和 .POS)是伪操作数。请参见 伪操作数初始化
CAUTION: 对于比较控制结构和结果控制结构,应使用不同的标签。这两个结构使用相同标签可能会引发不可预知的操作,从而可能引起设备损坏和人身伤害。
COMPARE 结构
助记符
数据类型
说明
.EN
BOOL
使能位,指示 FBC 指令是否使能。
.DN
BOOL
完成位,当 FBC 指令比较 Source 和 Reference 数组中的最后一位后置位。
.FD
BOOL
发现位,FBC 指令每次记录不匹配项(每次记录一个)或记录所有不匹配项(每次扫描记录全部)后置位。
.IN
BOOL
禁用位,指示 FBC 搜索模式。
0 = “所有”模式
1 =“每次一个不匹配项”模式
.ER
BOOL
错误位,POS 或 LEN 无效时置位。
.LEN
DINT
长度值,指示要比较的位数。
.POS
DINT
位置值,指示当前位。
RESULT 结构
助记符
数据类型
说明
.DN
BOOL
完成位,Result 数组已满时置位。
.LEN
DINT
长度值,指示 Result 数组中的存储位置数。
.POS
DINT
位置值,指示 Result 数组中的当前位置。
选择搜索模式
如果要:
选择此模式:
每次检测一个不匹配项
将比较 CONTROL 结构中的 .IN 位置位。
每次 EnableIn 由假转换为真时,FBC 指令会搜索 Source 数组和 Reference 数组之间的下一个不匹配项。找到不匹配项后,该指令将 .FD 位置位,记录该不匹配项的位置,并停止执行。
检测所有不匹配项
将比较 CONTROL 结构中的 .IN 位清零。
每次 EnableIn 由假跳变为真时,FBC 指令会搜索 Source 数组和 Reference 数组之间的所有不匹配项。
影响数学状态标志
严重/轻微故障
在以下情况下会发生严重故障:
故障类型
故障代码
result.POS > 结果数组大小
4
20
有关操作数相关的故障,请参阅 常用属性
执行
梯形图
条件/状态
执行的操作
边界检查操作数
预扫描
请参见“FBC 流程图(预扫描)”
比较控制、结果控制
梯级输入条件为假
请参见“FBC 流程图(假)”
不适用
梯级输入条件为真
请参见“FBC 流程图(真)”
比较控制、结果控制
后扫描
不适用
所有操作数
FBC 流程图(预扫描)
FBC 流程图(假)
FBC 流程图(真)
FBC 流程图(真)- 续
示例
梯形图
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal