数据类型检查
完全数据类型检查
在该方式下,参数的数据类型必须同符号或变量数据类型匹配。
每个有效参数只有一个数据类型(多重指令除外)。
例如,SRW(右移字)指令的输入(IN)参数的数据类型是WORD。
只是给它分配WORD型的变量,才能编译成功。
当设定为完全数据类型检查时,给WORD 型指令分配整型(INT)变量是无效的。
完全数据类型检查只能在IEC1131-3方式下执行。
如下表:
完全数据类型检查:用户选定和等价的数据类型
简单的数据类型检查:在简单数据类型方式下,当给一个符号或变量一个数据类型时,也自动分配了和所选定数据类型相匹配的所有数据类型。
例如,选择DINT作为数据类型,局部变量也自动分配DWORD数据类型,因为两者都是32位的数据类型。
虽然REAL也是32位数据类型,但是它不是自动分配的。
由于REAL数据类型没有等价的数据类型,它总是单独定义的。
简单数据类型检查只在SIAMTIC方式下使用局部变量时执行。
见下表:
无数据类型检查:无数据类型检查方式只在SIMATIC全局变量没有可选的数据类型时使用。
在该方式下,所有相同大小的数据类型自动分配给符号。
例如,一个符号分配在地址VD100处,下表表示STEP 7-Micro/WIN 32自动为该符号分配了数据类型。
数据类型检查的优点
数据类型检查有助于避免常见的编程错误。
如果一条指令支持有符号数,STEP 7-Micro/WIN32将对操作数标示出无符号数的使用。
例如,关系比较〈1是一个有符号指令。
对于有符号操作数,-1小于0。
但是,当〈1指令允许支持无符号数据类型时,编程器必须保证不出现下面的情况。
在程序执行期间,对于〈1指令,无符号数40000小于0。
先入先出(表)
First In First Out(先入先出):(FIFO)指令删除表(TBL)内的第一项,并输出数值至指定位置(DATA)。
表内全部其它项目均向上移动一个位置。
每次执行此指令,表内项目数减1。
设定ENO = 0的错误条件: SM1.5 (空表), SM4.3 (运行时), 0006 (间接地址), 0091 (操作数超出范围)这些指令影响下列特殊内存位: 如果您试图从空表内删除项目,则将设定SM1.5为1。
整数至字节(转换)
整数至字节指令将字值(IN)转换成字节数值,并将结果装载入OUT指定的变量内。
可转换数值0至255。
全部其它数值将导致溢出,但输出不受影响。
设定ENO = 0的错误条件:0006(间接地址),SM1.1(溢出),SM4.3(运行时)
这些指令影响下列特殊内存位:SM1.1(溢出)。