在一机房中,安装有3个风机(1号,2号,3号。风机即降温设备类似风扇)
同时该机房中有另一硬件,可以监控该机房中的温度,并通过http协议将数据上传到指定的服务器。(定时上传)软件(BS结构)要求可以在不同的温度下对硬件做出不同的控制。
如:
当温度处于上升阶段时,达到40度(含)以上时,要求将2打开,1,3关闭。
此时,温度可能继续上升(可能风扇散热效果不是太好)
当温度在上升阶段达到50度时(含),要求2关,1,3打开。
此时,温度开始下降(实际是有继续上升的可能,但这里不考虑),此时温度可能是这样的下降49,48,43,41,40。
此时,温度又回到40度,但此时是温度处于下降阶段,而在下降阶段温度值是40度时,要求将2关,1,3保留。好了,难题来了:
对于程序来说,得到的值都是40度,怎么判断此40度是处于上升阶段还是下降阶段,因为上升和下降过程中40度要执行不同的控制。这个问题已经纠结了好几天了,请大家帮帮忙。
同时该机房中有另一硬件,可以监控该机房中的温度,并通过http协议将数据上传到指定的服务器。(定时上传)软件(BS结构)要求可以在不同的温度下对硬件做出不同的控制。
如:
当温度处于上升阶段时,达到40度(含)以上时,要求将2打开,1,3关闭。
此时,温度可能继续上升(可能风扇散热效果不是太好)
当温度在上升阶段达到50度时(含),要求2关,1,3打开。
此时,温度开始下降(实际是有继续上升的可能,但这里不考虑),此时温度可能是这样的下降49,48,43,41,40。
此时,温度又回到40度,但此时是温度处于下降阶段,而在下降阶段温度值是40度时,要求将2关,1,3保留。好了,难题来了:
对于程序来说,得到的值都是40度,怎么判断此40度是处于上升阶段还是下降阶段,因为上升和下降过程中40度要执行不同的控制。这个问题已经纠结了好几天了,请大家帮帮忙。
解决方案 »
- 怎么把.txt文件内容导入jtable
- xor画法 高手大哥们帮帮忙阿
- java的awt个人认为好难的,eclipse中的插件那么多,怎么学,头的晕了
- 2000元求购一程序!!高手请进
- 如何校驗用戶輸入繁體
- 求jar的用法(将程序打包和清单文件 up者有分)
- 编译问题
- MSsqlSERVER2000的jdbc驱动去哪里弄,具体给个地址?
- 我是刚学JBUILDER7 的(不到一个星期),问:每次,增加增件时,根本没法调整大小?即使调整也是那个(NORTH,WEST,TOP.....)类型的。难道
- 怎样获得一个汉字的ASCII码?我得到的是Unicode码:(
- java设置背景图片
- java如何将单词形态还原
doMethodA();
} else if(40 < temp <= 50) {
doMethodB();
}使用这种左开右闭的方式就没有你说的那个问题。但对于像这样的监控系统关键的是防抖动的处理。假设测试在
39,40,41,40,39,40,41.....
这样的拉动,你就惨了,长时间的开关硬件会加速设备的老化产生故障。
假设温度的变化顺序是这样
20 ++> 25 ++> 33 ++> 38 ++> 42 ++> 48 ++> 52 ++> 60 --> 53 --> 44 --> 41 --> 38
那么,需要
在 “38 ++> 42” 这一步open(2),close(1,3);
在 “48 ++> 52" 这一步open(1,3),close(2);
在 “41 --> 38” 这一步close(1,3). (所以全部都是关的哦,因为原文是这么说的: 当温度在上升阶段达到50度时(含),要求2关,1,3打开。
此时,温度开始下降(实际是有继续上升的可能,但这里不考虑),此时温度可能是这样的下降49,48,43,41,40。
此时,温度又回到40度,但此时是温度处于下降阶段,而在下降阶段温度值是40度时,要求将2关,1,3保留。--我的理解,保留就也是关的)最直接的想法,需要保存一个“上一次温度”。实际上,仔细分析这个过程,画一个表格的话,大概可以得到:
---------------------------------------------
温度 | < 40 | 40 ~ 50 | > 50 |
---------------------------------------------
上升过程| 关1,2,3 | 开2,关1,3 | 开1,3,关2 |
---------------------------------------------
下降过程| 关1,2,3 | 开1,3,关2 | 开1,3,关2 |不是很简单么?
public void openAndCloseFans(float curTempreture){
if (curTempreture < 40.0){
close(1,2,3);
}else if (curTempreture > 50.0){
close(2);
open(1,3);
}else{
if (isClosed(1))
open(2);
}else{
close(2);
}
}
}
当温度处于上升阶段时,达到40度(含)以上时,要求将2打开,1,3关闭。
此时,温度可能继续上升(可能风扇散热效果不是太好)我引发了一点点思考:
既然温度可能继续上升,那么必然也可能保持一致啊,这样的话不就是温度维持阶段吗,如果你只想判断温度是上升还是下降过程,并且在温度可能维持的情况下必须做操作那两种操作中的一种的话,那么你只有这样:如果出现温度保持在40度,那么给一个boolean记录值,轮换着做上升时或者下降时的操作