西门子S7-1200PLC12M存储卡,西门子S7-1200PLC12M存储卡,西门子PLC12M存储卡,西门子S7-1200PLC12M,西门子内存卡代理商
注意:
(1) V1版本中标准Byte数组不能是优化数据块的数组,可以是诸如P#M100.0 Byte 10这种看做是数组的(原因)。所以Deserialize的SRC_ARRAY与Serialize的DEST_ARRAY支持的Variant类型其实指向的就是P#指针这种,指向其他类型都不可以。
(2)同样是Variant类型,Deserialize的DEST_VARIABLE与Serialize的SRC_VARIABLE是真正的支持Variant类型,并且是可以处理Variant类型的变量的指令之二。
(3) SRC_ARRAY/DEST_ARRAY的数组大小要大于DEST_VARIABLE/SRC_VARIABLE的空间占用
(4)DEST_VARIABLE/SRC_VARIABLE空间占用的计算规则:
位变量位于另一位变量后则地址连续排布,如果位于其他变量类型的后面,则需要从整字节地址开始;
字节大小的变量从整字节地址开始;
字、双字、四字的变量从偶数字节地址开始;
例子:如图4所示,虽然总数上是5个字节,但是因为整形变量从偶数字节地址开始所以空出了一个字节,因此这种排布需要占6个字节。
图4 6个字节的排布
(4)POS变量
POS变量声明是InOut,用在Byte数组的下标变量,有输入有输出。
Deserialize:POS的初始输入作为待转化的Byte数组的起始元素,指令结束后,POS的输出=初始输入+DEST_VARIABLE占据的字节数
也可以看做指针,初始指针指向Byte数组所在的POS位置,转化后,指针移动了DEST_VARIABLE占据的字节数。
注意:POS>=0,当POS=0时,为Byte数组的第一个元素,所以建议Byte数组使用Array[0..x] of Byte,这样Byte数组下标可以和POS对应上。
例子:POS实例,如图5所示。
西门子S7-1200PLC12M存储卡,西门子S7-1200PLC12M存储卡,西门子PLC12M存储卡,西门子S7-1200PLC12M,西门子内存卡代理商
图7 FC7参数定义
图8 程序详情
SCL的版本程序,如图9所示。
图9 SCL版本的程序
OB1多次调用该FC7,可以看到结果,"DB17".Static_1是Byte数组,"DB17".Static_4是Int数组,"DB17".Static_7不是以上两种类型。
图10 OB1多次调用FC7
IS_NULL、NOT_NULL
表3 LAD指令说明
LAD指令 | 操作数 | 说明 |
---|---|---|
操作数 | Variant | 如果操作数对应的实参有指向变量,该指令返回逻辑运算结果 (RLO)“0”,否则该指令返回 RLO“1”。操作数是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定义为Variant类型的参数。 |
操作数 ┫NOT_NULL┣ | Variant | 如果操作数对应的实参有指向变量,该指令返回逻辑运算结果 (RLO)“1”,否则该指令返回 RLO“1”。操作数是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定义为Variant类型的参数。 |