登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:S7-300的WORD是数据类型,但不是数值类型吗?

点击:4894 回复:2

有网友说:“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]
13-02-07 09:01
个人观点:因为西门子并没有完全遵守IEC61131-3规范,所以才会有诸如Word这类模棱两可的类型出来,在西门子中,程序员并不认为WORD是位串,而是作为无符号整形进行处理的,在IEC中,无符号整数用UINT数据类型来表示,因此,在西门子的博途软件中,已经对此有做改进。
Good Luck~
13-02-07 10:13

引用 kachakacha 在 2013/2/7 10:13:18 发言【内容省略】

这是C大的马甲吗
13-02-14 06:16

工控新闻

更多新闻资讯