西门子CB1241信号板通讯模块RS485,西门子CB1241,西门子信号板通讯模块RS485,西门子RS485CB1241,CB1241价格,CB1241参数
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变量
西门子CB1241信号板通讯模块RS485,西门子CB1241,西门子信号板通讯模块RS485,西门子RS485CB1241,CB1241价格,CB1241参数
①:初始POS=0,指针指向数组第0个元素
②:执行Deserialize,转化了12个字节,POS的输出=0+12=12,指针指向数组第12个元素
Serialize:POS的初始输入作为转化后的Byte数组的起始元素,指令结束后,POS的输出=初始输入+SRC_VARIABLE占据的字节数
也可以看做指针,初始指针指向Byte数组所在的POS位置,转化后,指针移动了SRC_VARIABLE占据的字节数。
注意:POS>=0,当POS=0时,为Byte数组的第一个元素,所以建议Byte数组使用Array[0..x] of Byte,这样Byte数组下标可以和POS对应上。
例子参考图5:
①:初始POS=0,指针指向数组第0个元素
②:执行Serialize,转化了12个字节,POS的输出=0+12=12,指针指向数组第12个元素
2. TIA 博途 V14开始,S7-1200 V4.2支持V2版本
功能与V1版本不同的是
(1)标准Byte数组可以是优化数据块的数组
(2)Deserialize的SRC_ARRAY支持Array[*] of Byte
使用举例:
编写FC,实现清零各种DB块的变量
思路:
1. 将需要清空的DB块内所有变量放入Struct/UDT,或者将需要清空的数据块建立成UDT类型生成的DB,然后使用Deserialize(反序列化)指令清空。
2. 用于清空的Byte数组可以使用M区。对于S7-1211C与S7-1212C有4kB的M区,对于S7-1214C、S7-1215C、S7-1217C有8kB的M区,通常不会用到很多,这样可以利用其中靠后不常用的区域,例如2kB来清空*多2kB的DB块。
3. 有多个不同的结构的DB,都可以先后清空。
编写的FC、DB及调用,如图6-8所示。