版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。从TIA V13SP1 开始,S7-1200 V4.0开始,支持以下处理Variant类型的变量的指令,如图1-2所示。图1 LAD中Variant类型的变量比较操作指令<br>图2 SCL中Variant类型的变量比较操作指令<br>EQ_Type、NE_Type、TypeOf<br>LAD指令详情<br>SCL指令:TypeOf(操作数),操作数是FC/FB的Input/Output/InOut/Temp中定义为Variant类型的参数,该语句输出是数据类型,在程序中只能用在IF与CASE进行比较。<br>用法1:IF指令,操作数对应的实参的类型与一个变量类型的比较,例如:<br>IF (TypeOf(操作数1) = 变量类型(例如Byte))<br>...<br>END_IF;<br>用法2:IF指令,两个操作数对应的实参的类型比较,例如:<br>IF (TypeOf(操作数1) = TypeOf(操作数2))<br>...<br>END_IF;<br>用法3:CASE OF指令,操作数对应的实参的类型与多个变量类型的比较,例如:<br>CASE (TypeOf(操作数)) OF<br>Byte:<br>...<br>Int:<br>...<br>ELSE<br>...<br>END_CASE;<br>使用举例:<br>编写FC,检查输入Variant变量类型,Byte则输出True,其它则输出False,如图3-6所示。<br>图3 FC6参数定义<br>图4 程序详情<br>SCL的版本程序,如图5所示。<br>图5 SCL版本的程序<br>OB1多次调用该FC6,可以看到结果,"DB16".Static_1是Byte类型,"DB16".Static_3不是Byte类型。<br>图6 OB1多次调用FC6<br>EQ_ElemType、NE_ElemType、TypeOfElements<br>SCL指令:TypeOfElements(操作数),操作数是FC/FB的Input/Output/InOut/Temp中定义为Variant类型的参数,该语句输出是数据类型,在程序中只能用在IF与CASE进行比较。<br>比较之前,通常先使用IS_ARRAY检查操作