首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >风扇模拟程序HVAC

风扇模拟程序HVAC
EN

Stack Overflow用户
提问于 2019-04-27 04:47:04
回答 2查看 56关注 0票数 0

我正在尝试创建一个简单的程序,模拟供暖通风应用程序中的可变风扇。下面的脚本只是模拟基于风扇启动和提升的风管压力读数(以英寸水柱为单位)。基本上风扇就会启动,管道压力就会为零。当马达上升时,管道压力将每10秒缓慢上升一次,值为.1"WC每10秒。当风扇处于管道压力设置点1.5时,程序将生成一个大约1.3 - 1.7的随机数字,以模仿风扇在设置点附近徘徊。希望这是有意义的!

我有一种感觉,这可以写得更好,但在它的最简单的形式:

代码语言:javascript
运行
复制
import time
from numpy.random import seed
from numpy.random import randint

# seed random number generator
seed(1)

#generate random number to mimic fan hovering at setpoint
def ductRandStatic():
    value = randint(13, 17, 20)
    return value * .1

ductStaticStart = 0
ductStaticEnd = 1.5

#mimic fan ramping up to setpoint slowly
def startFan():
    static = ductStaticStart + .1
    time.sleep(10)
    if static < ductStaticEnd:
        static = ductRandStatic()
    else:
        static = static
    print(static)


while True:
    startFan()

由于某种原因,程序只能打印,我认为随机数生成器...我希望它能每10秒打印一个数值模拟管道压力...[1.5 1.6 1.6 1.5 1.4 1.4 1.4 1.6 1.3 1.3 1.4 1.6 1.3 1.5 1.3 1.3 1.4 1.6 1.4 1.5]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-27 08:33:04

您的模拟有两个阶段:启动(一系列固定的值)和持续(随机变化)。代码如下:

代码语言:javascript
运行
复制
from time import sleep
from numpy.random import randint


def ductRandStatic():
    return randint(13, 17) * 0.1


delay = 10

for i in range(16):
    pressure = i * 0.1
    print(pressure)
    sleep(delay)

while True:
    print(ductRandStatic() )
    sleep(delay)

输出:

代码语言:javascript
运行
复制
0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9
1.0
1.1
1.2000000000000002
1.3
1.4000000000000001
1.5
1.5
1.6
1.4000000000000001
1.4000000000000001
1.4000000000000001
1.6
1.4000000000000001
1.4000000000000001
1.6
1.4000000000000001
1.3
1.4000000000000001
1.3
1.3
1.5
1.3
^CTraceback (most recent call last):
  File "so.py", line 18, in <module>
    sleep(delay)
KeyboardInterrupt
票数 0
EN

Stack Overflow用户

发布于 2019-04-27 05:12:29

我认为您应该去掉startFan()函数,并将其大部分代码下移到主循环中,这样static就可以记住它的值:

代码语言:javascript
运行
复制
# initialize to 0.1
static = 0.1

# mimic fan ramping up to setpoint slowly
while True:
    if static < 1.5:
        static = ductRandStatic()
    print(static)
    time.sleep(10)

另外,您对randint()的调用是错误的--它应该接受两个整数,但您传递的却是三个整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55874739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档