任意的数据类型的常数装入S7-300的累加器1后,它的数据类型的属性就消失了,剩下的只有0和1。这样的数据传送到定义了数据类型的变量中,该变量的数据类型当然不会变,符号表管着它的,除非修改符号表。
符号表是管不住它的,只有编程者可以。
如果是全局变量,数据类型在符号表中定义,当然是符号表直接管它。
除了符号表,FB、FC的局部变量表和数据块中的变量都定义了数据类型。编程者必须通过这些东西来管数据类型。
我说过Word是多义词,它用来作数据类型的名称,也可以用来作量词,表示存储器是16位的。16位存储器(Word)地址(例如MW0、LW0)没有定义数据类型时,它就没有数据类型。
OB40的参数OB40_MDL_ADDR的数据类型为WORD,不能直接用于要求数据类型为INT的整数比较指令。用MOVE指令把OB40_MDL_ADDR的值传送给MW10以后,MW10就可以用于比较指令了。MW10并没有因此自动获得数据类型INT,只是CPU“认为”MW10中的数据类型是INT。
数据类型是什么?我讲过数据类型是人为规定的数据一个属性。再打个比喻:有不良小贩把白色的小鸡染成五颜六色来骗小孩。放到水里一洗就变白了。如果把小鸡看成数据,染的颜色就是数据类型。把定义了数据类型的数据装入绝对地址MW10或累加器(累加器也是一个特殊的绝对地址),数据类型的属性就被剥去了,只剩下赤裸裸的数据了,就像小鸡的颜色被水洗掉了一样。这时可以把数据当作规定了长度的各种数据类型来用。