当前位置: 主页 > PLC控制

实数比较块,输出最小值

有没有现成实数比较模块,输出最小值?或者怎么编一个这样的块?

问题补充:
只需要比较两个值,把最小的值输出。值为REAL格式

最佳答案

不知道你比较数目多吗?如果不多最简单的办法就是预先定义一个值作为最小值,保存在一个存储区,用其他数值和这个值比较,如果比这个预定义最小值小,就替换最小值,否则还保持最小值不变。举个例子:有5个实数要比较,分别保存在数据块DB1中,地址为DBD0、DBD4、DBD8、DBD12、DBD16。比较最小值结果保存在DBD20中。参考程序如下:

LDB1.DBD0
TDB1.DBD20
A(
LDB1.DBD4
LDB1.DBD0
<R
)
JNBM001
LDB1.DBD4
TDB1.DBD20
M001:NOP0
A(
LDB1.DBD8
LDB1.DBD0
<R
)
JNBM002
LDB1.DBD8
TDB1.DBD20
M002:NOP0
A(
LDB1.DBD12
LDB1.DBD0
<R
)
JNBM003
LDB1.DBD12
TDB1.DBD20
M003:NOP0
A(
LDB1.DBD16
LDB1.DBD0
<R
)
JNBM004
LDB1.DBD16
TDB1.DBD20
M004:NOP0
如果比较数值比较多,建议使用循环指令加间接寻址来完成比较容易。
如果比较2个数值更简单。假设2个数值保存在DB1.DBD0和DB1.DBD4中,比较最小值结果保存在DB1.DBD8中。在定义DB1数据块时候定义DB1.DD0、DB1.DBD4、DB1.DBD8为浮点数REAL类型即可。程序见附件图片。

图片说明:

实数比较块,输出最小值实数比较块,输出最小值

提问者对于答案的评价:
对zhanglio的回答一并表示感谢!

  • 关注微信

猜你喜欢

微信公众号