请教:双字DW中的DW#16#类型的数值如何比较
刘玉蓉
发布于2014-10-20 18:01
11
0
标签:
在STEP7中,采用一个DW(DW#16#格式的)双字变量ERROR_CODE_Temp存储设备的故障状态,该变量的每一个都代表一种故障,我实现方式的代码如下
A(
O #C
O #R_AL
)
A #R_P_N
= L 2.0
A L 2.0
BLD 102
= #R_AL
A L 2.0
JNB _001
L #ERROR_CODE_Temp
L DW#16#1
OD
T #ERROR_CODE_Temp
_001: NOP 0
我想实现当没有故障时,触发一个Bool型的变量,我考虑采用将#ERROR_CODE_Temp和DW#16#000作比较,相等时触发Bool型变量,但是没找到相关的语句,请高手指点如何实现,或是还有其他什么方法呢,搜了一下,好像可以采用CC0和CC1。
图片说明: 1,代码图片
佳答案
1、双字长的数值如何比较:
? D 比较两个双整数(32位):==D,<>D,>D,<D,>=D,<=D;
使用比较双整数指令(32 位),可以将累加器 2 中的内容与累加器 1 中的内
容进行比较。累加器 2 和累加器 1 的内容都作为 32 位整数。比较的结果以
RLO 以及相关状态字位的设置来表示。RLO = 1 表示比较的结果为“真”;RLO
= 0 表示比较的结果为“假”。状态字位 CC 1 和 CC 0 表示“小于”、“等于”
或“大于”关系。
2、实例:
L MD10// 装入存储双字 MD10 的内容(32 位双整数)。
L ID24// 装入输入双字 ID24 的内容(32 位双整数)。
>D// 比较累加器 2 中的内容(MD10)是否大于累加器 1 中的内容(ID24)。
= M 2.0// 如果 MD10 > ID24,则 RLO = 1。
3、如果 #ERROR_CODE_Temp是双整数:
L #ERROR_CODE_Temp
L L#1//取32位常数1
<>D//两者比较
=M100.0//如果不等,M100.0置位。
4、相关资料:
《用于S7-300 和S7-400 的语句表(STL)编程手册》下载:
https://www2.ad.siemens.com.cn/download/Upload/AS/manual/1008[1].pdf
L#1是32位常数1,即长整数,参见:
见《S7-300的数据类型》其中,8、常数的表示方法。连接:
https://blog.gkong.com/more.asp?name=zhyo720211&id=2005