位序列 ARRAY 的元素解析为单个位
功能描述
将 BYTE、WORD、DWORD 或 LWORD 数据类型的 ARRAY 分解为单个位,并保存在元素类型仅为布尔型的 ARRAY of BOOL、匿名 STRUCT 或 PLC 数据类型中。
在 COUNT_IN 参数中,可指定待解析源 ARRAY 中的元素数目。
IN 参数中源 ARRAY 的元素数量可能多于 COUNT_IN 参数中的指定数量。
要保存所解析位序列的各个位,ARRAY of BOOL、匿名 STRUCT 或 PLC 数据类型中必须包含足够的元素数量。即OUT实参数据长度要大于或者等于需要解析位序列的数据长度。具体请参看仿真情况
执行条件
- 使能输入 EN 的信号状态不能为“0”。
- 源 ARRAY 中的元素数量不能少于 COUNT_IN 参数中的指定数量。
- 目标 ARRAY 的索引以 BYTE、WORD、DWORD 或 LWORD 限制开始。
接口参数
参数 | 声明 | 数据类型(1200) | 数据类型(1500) | 存储区 | 说明 |
---|---|---|---|---|---|
EN | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | 使能输入 |
ENO | Output | BOOL | BOOL | I、Q、M、D、L | 使能输出 |
IN | Input | ARRAY[*] of <位序列> 的元素 | ARRAY[*] of <位序列> 的元素 | I、Q、M、D、L | 所解析的 ARRAY of <位序列> |
COUNT_IN | Input | USINT, UINT, UDINT | USINT, UINT, UDINT, ULINT | I、Q、M、D、L | 用于对要解析的源 ARRAY 的元素数量进行计数 |
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、STRUCT 或 PLC 数据类型中的各个位 |
其中IN接口的实参可以是ARRAY[*] of <位序列> 的第n个 元素,比如 例子中的**“DataClass2”.Data3.ArrayByte[2]**,OUT接口处的实参也是一样。
另外IN接口处的实参不能直接是ARRAY[*] of <位序列>, 而是在Struct结构下创建此数据结构
程序举例
1.创建DB块,添加数据结构
2.创建FB块,添加功能指令,并在OB1调用
程序演示
将操作数的前两个字节Byte解析为单个位bool(16)。第一个字节为16进制的2,转换为二进制为0100 0000.第二个字节为16进制的13,转换为二进制为1100 1000