博途SCL指令SCATTER:将位序列解析为单个位

描述

说明

指令“将位序列解析为单个位”用于将数据类型为 BYTE、WORD、DWORD 或 LWORD 的变量解析为单个位,并保存在 ARRAY of BOOL、匿名 STRUCT 或仅包含有布尔型元素的 PLC 数据类型中。

说明
多维 ARRAY of BOOL
使用“将位序列解析为单个位”指令时,不支持多维 ARRAY of BOOL。
说明
ARRAY、STRUCT 或 PLC 数据类型的长度
ARRAY、匿名 STRUCT 或 PLC 数据类型中包含的元素数目必须恰好等于位序列指定的数量。
例如,如果数据类型为 BYTE,则 ARRAY、STRUCT 或 PLC 数据类型中必须恰好包含 8 个元素(WORD = 16、DWORD = 32、LWORD = 64)。
说明
该指令的可用性
该指令可用于固件版本为 V4.2 及以上版本的 S7-1200 系列 CPU 和固件版本为 V2.1 及以上版本的 S7-1500 系列 CPU。

例如,通过这种方式您可以解析状态字,并使用索引读取和改变单个位的状态。使用 GATHER,可再次将各个位组合为位序列。

如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:

使能输入 EN 的信号状态为“0”。

ARRAY、STRUCT 或 PLC 数据类型中包含的 BOOL 元素数目不足。

参数 声明 数据类型 存储区 说明
S7-1200 S7-1500
IN Input BYTE, WORD, DWORD BYTE, WORD, DWORD, LWORD I、Q、M、D、L 所解析的位序列 这些值不得位于的 I/O 区域或工艺对象的 DB 内。
OUT Output ARRAY[*] of BOOL、STRUCT 或 PLC 数据类型 *:8、16、32 或 64 个元素 ARRAY[*] of BOOL、STRUCT 或 PLC 数据类型 *:8、16、32 或 64 个元素 I、Q、M、D、L 保存 

ARRAY 的使用示例

在块接口中创建以下变量:

变量 区域 数据类型
SourceWord Input WORD
DestinationArray Output ARRAY[0..15] of BOOL

以下示例说明了该指令的工作原理:

SCL
SCATTER(IN := #SourceWord,
OUT => #DestinationArray);

下表将通过具体的操作数值对该指令的工作原理进行说明:

参数 操作数 数据类型
IN SourceWord WORD(16 位)
OUT DestinationArray 操作数“DestinationArray”的数据类型为 ARRAY[0..15] of BOOL。其中包含 16 个元素,因此与待解析 WORD 的长度相同。

数据类型为 WORD 的操作数 #SourceWord 解析为单个位 (16),并将其分配给操作数 #DestinationArray 的各个元素。

PLC 数据类型 (UDT) 的使用示例

创建以下 PLC 数据类型“myBits”:

指令

在块接口中创建以下变量:

变量 区域 数据类型
SourceWord Input WORD
DestinationUDT Output “myBits”

以下示例说明了该指令的工作原理:

SCL
SCATTER(IN := #SourceWord,
OUT => #DestinationUDT);

  下表将通过具体的操作数值对该指令的工作原理进行说明:

参数 操作数 数据类型
IN SourceWord WORD(16 位)
OUT DestinationUDT 操作数“DestinationUDT”为 PLC 数据类型 (UDT),其中包含 16 个元素,因此与待解析 WORD 的长度相同。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分