============================高智商朋友请帮忙,一首难题。================================

愚者只看星不看答案 2012-12-29 10:53:51
在一机房中,安装有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度要执行不同的控制。

这个问题已经纠结了好几天了,请大家帮帮忙。
...全文
816 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
nwsuafer 2013-03-05
  • 打赏
  • 举报
回复
引用 楼主 truelove12 的回复:
在一机房中,安装有3个风机(1号,2号,3号。风机即降温设备类似风扇) 同时该机房中有另一硬件,可以监控该机房中的温度,并通过http协议将数据上传到指定的服务器。(定时上传) 软件(BS结构)要求可以在不同的温度下对硬件做出不同的控制。 如: 当温度处于上升阶段时,达到40度(含)以上时,要求将2打开,1,3关闭。 此时,温度可能继续上升(可能风扇散热效果……
逆向思维,40度的时候判断下,是风扇2打开,还是1,3打开的
rorom 2013-03-01
  • 打赏
  • 举报
回复
上面的朋友说的对,看2号机的状态了
傲雪kimi 2013-03-01
  • 打赏
  • 举报
回复
冒昧的问一下这样的题目逻辑上是不是有点问题呢?
wey580231 2013-02-28
  • 打赏
  • 举报
回复
引用 9 楼 oZouBianBian 的回复:
确实很难呀, 你需要了解: 1、风机运行原理 2、热效应原理 3、热量与空间关系 4、功-能转化关系 5、控制工程原理 6、编程技术
Zeus 2013-01-14
  • 打赏
  • 举报
回复
每当温度有上升时记录上升时候的开始温度, 先定义为最低温度,用于比较. 同样,下降的时候也记录下降时的开始温度,定义为最高温度. 然后就可以每次温度变化比较差值.做出判断. 这样还可以观察上面那个最高温度和最低温度,以便做出判断.
水白中小子 2013-01-07
  • 打赏
  • 举报
回复
这个程序必然要至少增加一个保存上次检测时的温度值,oldVlaue嘛 你说: 当温度处于上升阶段时,达到40度(含)以上时,要求将2打开,1,3关闭。 此时,温度可能继续上升(可能风扇散热效果不是太好) 我引发了一点点思考: 既然温度可能继续上升,那么必然也可能保持一致啊,这样的话不就是温度维持阶段吗,如果你只想判断温度是上升还是下降过程,并且在温度可能维持的情况下必须做操作那两种操作中的一种的话,那么你只有这样:如果出现温度保持在40度,那么给一个boolean记录值,轮换着做上升时或者下降时的操作
七神之光 2013-01-06
  • 打赏
  • 举报
回复
缓存40度之前的温度
aotian16 2013-01-04
  • 打赏
  • 举报
回复
记录以前的温度,判断下不就可以了吗
clariones 2013-01-04
  • 打赏
  • 举报
回复
引用 18 楼 AA5279AA 的回复:
引用 15 楼 clariones 的回复: 引用 14 楼 AA5279AA 的回复: [quote=引用 楼主 truelove12 的回复:在一机房中,安装有3个风机(1号,2号,3号。风机即降温设备类似风扇) 同时该机房中有另一硬件,可以监控该机房中的温度,并通过http协议将数据上传到指定的服务器。(定时上传) 软件(BS结构)要求可以在不同的温度下对硬件做出不同的控制。 ……
实际上,这个系统不是没有记录数据的部分: 1,3号风机的状态就是‘持久化’的作用。
普凡 2013-01-04
  • 打赏
  • 举报
回复
最直接的,保存一个“上一次温度”作为比较就可以了。 要是在精确点,楼上各位大哥也说得很清楚了,日志记录历史也好、数据库记录也好,拿出来分析一下上升/下降就明细了。
失落夏天 2013-01-03
  • 打赏
  • 举报
回复
引用 15 楼 clariones 的回复:
引用 14 楼 AA5279AA 的回复: [quote=引用 楼主 truelove12 的回复:在一机房中,安装有3个风机(1号,2号,3号。风机即降温设备类似风扇) 同时该机房中有另一硬件,可以监控该机房中的温度,并通过http协议将数据上传到指定的服务器。(定时上传) 软件(BS结构)要求可以在不同的温度下对硬件做出不同的控制。 如: 当温度处于上升阶段时,达到40度(含)以……
如果不记录任何数据的话那么重启之后一切都是需要重新检测的。这样的系统很明显是不合理的。。 至少应该加一个日志记录,再重启之前记录数据。
感同深受 2013-01-03
  • 打赏
  • 举报
回复
得保存前一次的温度,判断趋势是上升还是下降。
awusoft 2013-01-03
  • 打赏
  • 举报
回复
不能定为了一个点吧,定为一个范围比较好,比如说35-45..... 如果低于35度是一种方案,高于45度是一个种方案.在35-45之前就是使用当前状态好了.
clariones 2013-01-03
  • 打赏
  • 举报
回复
引用 14 楼 AA5279AA 的回复:
[quote=引用 楼主 truelove12 的回复:在一机房中,安装有3个风机(1号,2号,3号。风机即降温设备类似风扇) 同时该机房中有另一硬件,可以监控该机房中的温度,并通过http协议将数据上传到指定的服务器。(定时上传) 软件(BS结构)要求可以在不同的温度下对硬件做出不同的控制。 如: 当温度处于上升阶段时,达到40度(含)以上时,要求将2打开,1,3关闭。……
亲,设计一个标记位来记录是上升还是下降不就可以了? ……[/quote] 如果程序重启了呢? 这个标志还需要持久化么? 工控程序的环境比较复杂,要考虑到掉电重启/重复采集/数据遗漏等等,最好是无状态的程序比较容易通过验收。
clariones 2013-01-02
  • 打赏
  • 举报
回复

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);
        }
    }
}
clariones 2013-01-02
  • 打赏
  • 举报
回复
引用 11 楼 luckytjm 的回复:
引用 6 楼 fun_f 的回复: 判断一下2号风机此时的状态,不就知道了吗 同意,直接判断2号机的开关状态不就行了吗? 如果原来是关着,那就打开,关掉1,3 如果原来是开着,就关掉,打开1,3。。。。难道不是这样么?
不会那么巧每次都能刚好读到40这个温度吧? 假设温度的变化顺序是这样 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 |
不是很简单么?
失落夏天 2013-01-02
  • 打赏
  • 举报
回复
引用 楼主 truelove12 的回复:
在一机房中,安装有3个风机(1号,2号,3号。风机即降温设备类似风扇) 同时该机房中有另一硬件,可以监控该机房中的温度,并通过http协议将数据上传到指定的服务器。(定时上传) 软件(BS结构)要求可以在不同的温度下对硬件做出不同的控制。 如: 当温度处于上升阶段时,达到40度(含)以上时,要求将2打开,1,3关闭。 此时,温度可能继续上升(可能风扇散热效果不是太好) 当温度在上升……
、 亲,设计一个标记位来记录是上升还是下降不就可以了?
TrustTJM 2012-12-31
  • 打赏
  • 举报
回复
引用 6 楼 fun_f 的回复:
判断一下2号风机此时的状态,不就知道了吗
同意,直接判断2号机的开关状态不就行了吗? 如果原来是关着,那就打开,关掉1,3 如果原来是开着,就关掉,打开1,3。。。。难道不是这样么?
zqfddqr 2012-12-31
  • 打赏
  • 举报
回复
。。。 就是把之前的数都记录了不就完了 来一个数据存一个有了历史数据就解决了
oZouBianBian 2012-12-30
  • 打赏
  • 举报
回复
确实很难呀, 你需要了解: 1、风机运行原理 2、热效应原理 3、热量与空间关系 4、功-能转化关系 5、控制工程原理 6、编程技术
加载更多回复(8)
串联谐振双有源桥(SR-DAB)DC-DC变换器闭环仿真研究内容概要:本文围绕串联谐振双有源桥(SR-DAB)DC-DC变换器的闭环仿真展开研究,重点探讨其在电力电子系统中的动态响应特性与控制策略。通过对SR-DAB变换器建立数学模型,并结合Matlab/Simulink进行闭环仿真,分析系统在不同工作条件下的电压、电流波形及功率传输效率,验证控制算法的有效性与稳定性。研究涵盖系统建模、控制器设计(如PI控制)、软开关实现条件、抗干扰能力以及动态调节性能,旨在提升变换器在新能源、储能、数据中心供电等场景中的可靠性和能效水平。; 适合人群:具备电力电子、自动控制理论基础,从事新能源、微电网、电力系统仿真等相关领域的科研人员与工程技术人员。; 使用场景及目标:①用于高校及科研机构开展DC-DC变换器控制策略的教学与实验;②为工业界在高效率隔离型功率变换系统的设计与优化提供仿真依据和技术支撑;③服务于数据中心、电动汽车、可再生能源并网等场景下的电源系统研发。; 阅读建议:建议读者结合Matlab代码实践仿真流程,重点关注系统建模与控制器参数整定部分,通过调整负载、输入电压等条件观察系统响应,深入理解闭环控制对变换器性能的影响机制。
内容概要:本文介绍了FastReport VCL/FMX/LCL 2026.2.4版本的更新内容,重点涵盖核心引擎、图形处理、用户界面及导出功能的优化与修复。主要更新包括修复了Developer Express兼容性问题、TfrxSVGGraphic在TImage中的显示问题、PDF/A导出合规性、EMF图像旋转异常,以及ReportTree拖拽功能等问题。同时,部分模块新增了HTMLTags对XLSX导出的支持、内置右键菜单和新图标,并改进了FastCube组件的元素调整体验。此外,还修复了CPP脚本中Result参数名的Bug以及自定义过滤器中OR操作失效的问题。; 适合人群:使用Delphi或Lazarus进行开发,且涉及报表设计与数据展示功能的中高级开发者;尤其适用于需要集成FastReport控件到企业级应用中的技术人员。; 使用场景及目标:①提升报表系统在不同平台(VCL/FMX/LCL)下的稳定性和兼容性;②满足PDF/A标准的文档归档需求;③优化用户交互体验,如拖拽操作与元素缩放;④增强脚本支持与数据集字段识别能力,确保开发效率与功能完整性。; 阅读建议:建议结合官方更新链接和实际项目中使用的FastReport模块对照查看,重点关注自身所用组件(如VCL、FMX或Lazarus版)的具体修复项,及时升级以规避已知问题并利用新特性优化报表功能。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧