有网友说:“WORD是数据类型,但不是数值类型,而是16位长度的位串。和byte、time、date、tod、dt以及string一样,可以没有数值的内涵的,所以取值范围也用0-16#ffff表示,而不是 -32768~32767”。
“前段时间用LAD写OB86时,需要做判断,很周折。但一想,进入事件、离开事件、地址代号只是个代码而已,不是数值,无法做数值比较,也就释然了”。
下面是我的观点:
在SFC和SFB中,数据类型WORD常用于连接的编号、模块地址和站地址等。这些东西显然不能理解为位串,它们都有普通的“数值的内涵”。
我们对数值不能简单地理解为用数据类型INT、DINT运算得到的数值。TIME、DATA(日期)、TOD(实时时间)、DT(日期时间)都是用于特殊场合的数,怎么会没有“数值的内涵”呢?二进制的一位(bit)当然也有它的数据(0或1),将WORD视为“位串”,它是一个多位二进制数,也有它的数值。
“进入事件、离开事件、地址代号只是个代码而已,不是数值,无法做数值比较”,数据类型WORD、DWORD不能用于比较指令,并不是因为它不是数值。将它们传送到没有定义数据类型的地址或累加器中,就可以使用比较指令。
综上所述,数据类型WORD是用于数据的,是数据就有数值,如果连这个都否认,就有点“白马不是马”了。
[/URL] [/URL]