位序列的组合与分解

位序列的组合与分解
位序列的组合与分解(lad和scl)包括如图1所示4个指令:
图1 指令位置
其中scatter(_blk)是将位序列(数组)分解成若干bool变量,gather(_blk)是将若干bool变量组合成位序列(数组)。
版本:
1. tia 博途 v14sp1开始,s7-1200 v4.2支持v1.0版本
2. tia 博途 v15开始,s7-1200 v4.2支持v1.1版本
scatter
图2 scatter指令详情
v1.0版本:scatter指令是将位序列(byte、word、dword)分解成bool数组,其中byte分解成8bool元素的数组,word分解成16bool元素的数组,dword分解成32bool元素的数组。lad需要在下拉框“?”选择输入类型(byte、word、dword),scl无需选择。in是待分解的位序列变量,out是bool数组名,元素数量必须正好符合要求。
v1.1版本:out除bool数组之外,可以是struct、udt类型的变量,变量内是连续的8bool、16bool、32bool,out处填写struct、udt类型的变量名。
注:lad版本的scatter,如果调用该块的obfbfc如果没有激活iec检查,in变量支持整数、字符、time、date、tod类型。
使用举例,如图3-5所示:
1. 将word变量db66.static_1分解成array[0..15] of bool变量db66.static_2,将byte变量db66.static_3分解成udt中的连续8个bool变量tag_3
图3 db66的定义
图4 q点在plc变量表的定义
图5 程序详情
scatter_blk
图6 scatter_blk指令详情
v1.0版本:scatter_blk指令是将位序列(byte、word、dword)数组分解成bool数组。lad需要在下拉框选择输入数组in的类型(byte、word、dword),count_in的类型(usint、uint、udint),scl无需选择。in是待分解的位序列数组起始元素,count_in是待分解的位序列数组元素个数,out是接收的bool数组起始元素。
v1.1版本:out除bool数组之外,可以是struct、udt类型的变量,变量内是连续的bool变量,out处填写struct、udt类型内的接收的bool起始变量。
注意:
1. 当count_in超过了位序列数组元素个数,将不执行指令。如果激活指令的eno功能,则eno=false。
2. 当所需的boo数量超过了已有的bool数量,指令正常执行,多余部分被舍弃。
3. 当bool数组起始
使用举例,如图7-8所示:
1. 将db67.static_1,从第3个元素开始的2个byte变量分解成db67.static_2,从第1个元素开始
2. 将db67.static_3,从第1个元素开始的2个byte变量变量分解成db67.static_4,从这个struct第一个变量开始
图7 db67中的定义
图8 程序详情
gather
图9 gather指令详情
v1.0版本:gather指令是将bool数组合并成位序列(byte、word、dword),其中8bool元素的数组合并成byte,16bool元素的数组合并成word,32bool元素的数组合并成dword。lad需要在下拉框选择输出类型(byte、word、dword),scl无需选择。in是bool数组名,元素数量必须正好符合要求,out是合并后的位序列变量。
v1.1版本:in除bool数组之外,可以是struct、udt类型的变量,变量内是连续的8bool、16bool、32bool,out处填写struct、udt类型的变量名。
使用举例,如图10-12所示:
1. 将array[0..15] of bool变量db68.static_1合并成word变量db68.static_2,将udt中的连续8个bool变量tag_4合并成byte变量db68.static_3
图10 db68中的定义
图11 i点在plc变量表的定义
图12 程序详情
gather_blk
图13 gather_blk指令详情
v1.0版本:gather_blk指令是将bool数组合并成位序列(byte、word、dword)数组。lad需要在下拉框选择输出数组out的类型(byte、word、dword),count_in的类型(usint、uint、udint),scl无需选择。in是待合并的bool数组起始元素,count_in是合并后的位序列数组元素个数,out是位序列数组起始元素。
v1.1版本:in除bool数组之外,可以是struct、udt类型的变量,变量内是连续的bool变量,in处填写struct、udt类型内的接收的bool起始变量。
注意:
1. 当count_in超过了位序列数组元素个数,将不执行指令。如果激活指令的eno功能,则eno=false。
2. 当所需的boo数量超过了已有的bool数量,将不执行指令,如果激活指令的eno功能,则eno=false。
使用举例,如图14-15所示:
1. 将db69.static_2,从第1个bool元素开始合并成db69.static_1,从第3个元素开始的2个byte变量
2. 将db69.static_4,从struct第1个元素开始合并成db69.static_3,从第1个元素开始的2个byte变量
图14 db69中的定义
图15 程序详情


三相交流电源有什么优势
DPDK技术原理与架构
“K鹰”监测审计平台 助力物联网“智”能飞翔
传三星正在开发一种新的“双折”折叠屏手机
吉阳智能的激光极耳切割能够攻克和解决传统模切的难题
位序列的组合与分解
牛人眼中的8K视界:三星Neo QLED 8K电视全猜想
赛卓电子科创板IPO获受理!主打位置传感器芯片,募资11亿研发车规级芯片
三星释放出追求交易信号,并购活动将频繁出现
半导体封装供应商均华:将于23日挂牌上柜
工信部:上半年通信业经济运行情况报告
LED大屏幕处理器在实际应用中遇到的问题及解决方案
贸泽电子隆重推出新一期EIT计划 探索智能家居技术与Matter连接标准的交集
用农产品换芯片?美商务部宣布解禁对华为供货!
小米MAX2发布会前瞻:小米MAX2发布会最新消息,小米MAX2外观、配置、性能提前看
HDJB-902L六相微机继电保护测试仪做功率方向及阻抗试验方法
超声波洗碗机控制器电源发生器设计
乐视电动车于12月正式推出 与特斯拉打对台戏
天问一号探测器进入火星停泊轨道
谷歌透过Android手机窃取用户信息,目前还无法解决