PLC酷客
S7-300怎么比较2个Word型数据?
S7-300怎么比较2个Word型数据? 我想比较DB0.DBW0和DB1.DBW0进行比较 要是相等就输出一个Q0.0 我用了CMP<>I 显示只能是整数类型的 求高手指点
楼主最近还看过
两个办法 1、在DB里把这两个变量定义成整型 2、比较前把word转换成int (反正是比较相等,也不存在正负的问题)
这个是怎么实现的? 比如使用STL语言
取消编辑器对数据类型的核查。 这个是怎么实现的? 比如使用STL语言 把Word数据类型的值用MOV指令传送到一个未定义数据类型的绝对地址,就可以比较了。 简单的说就传送到M区MW中,不定义MW符号MW可以是整数或是字或是其他16位数据
我有一个怪招,使用两个word进行异或结果为零则两个word相等 L word1 L word2 XOW JZ Lab1//相等 //不相等 Lab1://相等处理
先在DB里把这两个变量定义成整型 L DB0 DW0 L DB1 DW0 =I = Q0
STL语句并不会检查那么严格 L DB0.DBW0 L DB1.DBW0 ==I 就可以了,他只比较累加器里的数据,不管你原来什么类型
quote:以下是引用冬日在2013-07-02 10:30:38的发言:STL语句并不会检查那么严格 L DB0.DBW0 L DB1.DBW0 ==I 就可以了,他只比较累加器里的数据,不管你原来什么类型
我的做法是直接传送到MW中去,不要在符号表里定义该MW的类型,就是不用管这个MW,直接比较MW就可以,不过要留心交叉参考表别有地址重叠了
STL语句并不会检查那么严格 L DB0.DBW0 L DB1.DBW0 ==I 就可以了,他只比较累加器里的数据,不管你原来什么类型 进了累加器,数据类型的外衣就被剥掉了。
如果想比较大小可以用 L DB0.DBW0 L DB1.DBW0 >D
STL语句并不会检查那么严格 L DB0.DBW0 L DB1.DBW0 ==I 就可以了,他只比较累加器里的数据,不管你原来什么类型 进了累加器,数据类型的外衣就被剥掉了。 是这样的吗?
在 符号表 里 定义类型 INT ,就可以比较了!
取消编辑器对数据类型的核查。 这个是怎么实现的? 比如使用STL语言 把Word数据类型的值用MOV指令传送到一个未定义数据类型的绝对地址,就可以比较了。
word类型为什么就没有比较一意义呢? 把word转换成int显然不是个好方法,这样的话干脆在定义时就定义成int好了,显然楼主想要的是word类型的。 step7用十六进制显示word的数值,也是用十六进制表示一个数据的,我觉得word类型比较最正统的作法是按位比较,前面也有人提出了。
取消编辑器对数据类型的核查。 这个是怎么实现的? 比如使用STL语言 把Word数据类型的值用MOV指令传送到一个未定义数据类型的绝对地址,就可以比较了。 请问AUTOMANN侠,未定义的数据类型,我能想到的只有MW和QW,像DB块和L区都必须定义数据类型,word表示2byte,也就是说明数据的长度,类型不确定,INT有正负,数据类型已确定,不知是否正确。
quote:以下是引用violin在2013-08-17 10:16:49的发言:word类型为什么就没有比较一意义呢? 把word转换成int显然不是个好方法,这样的话干脆在定义时就定义成int好了,显然楼主想要的是word类型的。 step7用十六进制显示word的数值,也是用十六进制表示一个数据的,我觉得word类型比较最正统的作法是按位比较,前面也有人提出了。
lideyi1
路过学习,各位写得经典,。