前面聊了一下Gather这个指令,但想要将这个指令的功能多样化,就离不开它的同胞兄弟Scatter.
Scatter指令是将位序列解析为单个位的指令,换言之,就是和Gather指令作用相反,搭配使用功能可逆。下面看一下博图帮助文件中的说明:
。.


看一下它在哪里:

下面分享一个程序使用案例:FB284基本定位功能块中ConfigEpos的处理
1:回顾一下FB284功能块

2:看一下ConfigEpos引脚定义说明:

3:ConfigEpos这个引脚变量是个Dword变量,也就是32个位的双字变量,我想把这个Dword数据变成 32个位变量,并且可以单独监控和写入这32个位。
首先我建立了一个数据块"Array_Bool",在这个数据块中建立变量ConfigEPOS1_R,数据格式为“Array of bool 0--31",这个变量是为了读取FB284 ConfigEpos管脚变量;再建立变量ConfigEPOS1_W, 数据格式同样是“Array of bool 0--31",这个变量是为了改变FB284 ConfigEpos管脚变量的状态,也就是更改值或者说写入吧。


4:读取FB284块ConfigEpos变量状态:


这样就将ConfigEPOS这个Dword变量解析成32个位变量,放在Array_Bool块中的ConfigEPOS1_R,那么变量ConfigEPOS1_R【0】,ConfigEPOS1_R【1】就是对应管脚说明中ConfigEPOS.%X0和ConfigEPOS.%X1(OFF2停止,OFF3停止)。这两个位驱动运行时需要常ON,驱动停止时OFF。
5:写入FB284块ConfigEpos变量状态


这样就可以将原点信号以位的形式给到FB284管脚。
以上就是GATHER指令和SCATTER指令配合使用在FB284程序中的功能体现,其实还有很多关于这一对指令的用法,例如S7通讯中字节传送时的位解析,IO映射时的位转换等等。

先聊到这了,静待各位补充,谢谢。