恭喜,你发布的帖子
发布于 2020-09-29 10:10:47
2楼
V14 SP1以上版本可以使用SCATTER指令把一个字转换成一个16位的数组
SCATTER:将位序列解析为单个位
说明
“将位序列解析为单个位”指令用于将 BYTE、WORD、DWORD 或 LWORD 数据类型的变量分解为单个位,并保存在 ARRAY of BOOL 中。
说明
ARRAY 的长度
ARRAY of BOOL 的元素数量必须恰好等于位序列指定的数量。
例如,如果数据类型为 BYTE,则 ARRAY 中必须恰好包含 8 个元素(WORD = 16、DWORD = 32、LWORD = 64)。
说明
S7-1500 CPU 中指令的可用性
该指令可用于固件版本为 V4.2 及以上版本的 S7-1200 系列 CPU 和固件版本为 V2.1 及以上版本的 S7-1500 系列 CPU。
例如,通过这种方式您可以解析状态字,并使用索引读取和改变单个位的状态。您可以使用 GATHER 再次将各个位组合为位序列。
如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:
使能输入 EN 的信号状态为“0”。
如果 ARRAY 未提供足够的 BOOL 元素。
参数
下表列出了该指令的参数:
参数 声明 数据类型 存储区 说明
EN 输入 BOOL I、Q、M、D、L 使能输入
ENO 输出 BOOL I、Q、M、D、L 使能输出
IN 输入 BYTE、WORD、 I、Q、M、D、L 解析的位序列
DWORD、LWORD
OUT 输出 ARRAY[*] of BOOL I、Q、M、D、L 保存单个位的
*:8、16、32 或 64 个元素 ARRAY
示例
在块接口中创建以下变量:
变量 区域 数据类型
启用 BOOL
输入
SourceWord WORD
EnableOut BOOL
输出
DestinationArray ARRAY[0..15] of BOOL
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 操作数 数据类型
IN SourceWord WORD(16 位)
OUT DestinationArray 操作数“DestinationArray”的数据类型为 ARRAY[0..15] of BOOL。其中包含 16 个元素,因此与 待解析 WORD 的长度相同。
如果操作数 #Enable 在使能输入 EN 返回信号状态“1”,则将执行该指令。数据类型为 WORD 的操作数 #SourceWord 解析为单个位 (16),并将其分配给操作数 #DestinationArray 的各个元素。如果在指令执行期间出现错误,操作数 #EnableOut 将在使能输出 ENO 处返回信号状态“0”。
太给力了 完全可以实现
请填写推广理由:
分享
只看
楼主