排烟风机代码

2025-05-10 17:52:539.8k 次阅读

排烟风机控制代码示例

以下是一个简单的排烟风机控制系统的代码示例,可以根据不同的需求进行修改和扩展:

PLC 梯形图逻辑 (以西门子S7-1200为例)

// 网络1: 手动/自动模式选择
LD  I0.0       // 手动模式按钮
=   M0.0       // 手动模式标志
LD  I0.1       // 自动模式按钮
=   M0.1       // 自动模式标志

// 网络2: 手动控制
LD  M0.0       // 手动模式
A   I0.2       // 手动启动按钮
S   Q0.0       // 启动排烟风机
LD  I0.3       // 手动停止按钮
R   Q0.0       // 停止排烟风机

// 网络3: 自动控制
LD  M0.1       // 自动模式
A   I0.4       // 烟雾传感器信号
S   Q0.0       // 启动排烟风机
LD  M0.1       // 自动模式
AN  I0.4       // 无烟雾信号
R   Q0.0       // 停止排烟风机

// 网络4: 故障保护
LD  I0.5       // 过载保护信号
R   Q0.0       // 停止排烟风机

Arduino 控制代码示例

// 定义引脚
const int manualModePin = 2;
const int autoModePin = 3;
const int manualStartPin = 4;
const int manualStopPin = 5;
const int smokeSensorPin = 6;
const int overloadPin = 7;
const int fanRelayPin = 8;

// 变量
bool manualMode = false;
bool autoMode = false;
bool fanRunning = false;

void setup() {
  pinMode(manualModePin, INPUT_PULLUP);
  pinMode(autoModePin, INPUT_PULLUP);
  pinMode(manualStartPin, INPUT_PULLUP);
  pinMode(manualStopPin, INPUT_PULLUP);
  pinMode(smokeSensorPin, INPUT);
  pinMode(overloadPin, INPUT_PULLUP);
  pinMode(fanRelayPin, OUTPUT);

  digitalWrite(fanRelayPin, LOW); // 初始关闭风机
  Serial.begin(9600);
}

void loop() {
  // 检查模式选择
  manualMode = (digitalRead(manualModePin) == LOW;
  autoMode = (digitalRead(autoModePin) == LOW;

  // 过载保护 - 最高优先级
  if (digitalRead(overloadPin) == LOW) {
    fanRunning = false;
    digitalWrite(fanRelayPin, LOW);
    Serial.println("过载保护激活,风机停止");
    return;
  }

  // 手动模式控制
  if (manualMode) {
    if (digitalRead(manualStartPin) == LOW) {
      fanRunning = true;
      digitalWrite(fanRelayPin, HIGH);
      Serial.println("手动启动风机");
    }
    if (digitalRead(manualStopPin) == LOW) {
      fanRunning = false;
      digitalWrite(fanRelayPin, LOW);
      Serial.println("手动停止风机");
    }
  }
  // 自动模式控制
  else if (autoMode) {
    if (digitalRead(smokeSensorPin) == HIGH) {
      fanRunning = true;
      digitalWrite(fanRelayPin, HIGH);
      Serial.println("检测到烟雾,自动启动风机");
    } else {
      fanRunning = false;
      digitalWrite(fanRelayPin, LOW);
      Serial.println("无烟雾,自动停止风机");
    }
  }

  delay(100); // 短暂延迟
}

Python 控制代码示例 (适用于树莓派等)

import RPi.GPIO as GPIO
import time

# 设置GPIO模式
GPIO.setmode(GPIO.BCM)

# 定义引脚
MANUAL_MODE_PIN = 17
AUTO_MODE_PIN = 18
MANUAL_START_PIN = 22
MANUAL_STOP_PIN = 23
SMOKE_SENSOR_PIN = 24
OVERLOAD_PIN = 25
FAN_RELAY_PIN = 4

# 初始化引脚
GPIO.setup(MANUAL_MODE_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(AUTO_MODE_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(MANUAL_START_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(MANUAL_STOP_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SMOKE_SENSOR_PIN, GPIO.IN)
GPIO.setup(OVERLOAD_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(FAN_RELAY_PIN, GPIO.OUT)

fan_running = False

try:
    while True:
        # 检查模式
        manual_mode = GPIO.input(MANUAL_MODE_PIN) == GPIO.LOW
        auto_mode = GPIO.input(AUTO_MODE_PIN) == GPIO.LOW

        # 过载保护
        if GPIO.input(OVERLOAD_PIN) == GPIO.LOW:
            fan_running = False
            GPIO.output(FAN_RELAY_PIN, GPIO.LOW)
            print("过载保护激活,风机停止")
            time.sleep(1)
            continue

        # 手动模式
        if manual_mode:
            if GPIO.input(MANUAL_START_PIN) == GPIO.LOW:
                fan_running = True
                GPIO.output(FAN_RELAY_PIN, GPIO.HIGH)
                print("手动启动风机")
            if GPIO.input(MANUAL_STOP_PIN) == GPIO.LOW:
                fan_running = False
                GPIO.output(FAN_RELAY_PIN, GPIO.LOW)
                print("手动停止风机")

        # 自动模式
        elif auto_mode:
            if GPIO.input(SMOKE_SENSOR_PIN) == GPIO.HIGH:
                if not fan_running:
                    fan_running = True
                    GPIO.output(FAN_RELAY_PIN, GPIO.HIGH)
                    print("检测到烟雾,自动启动风机")
            else:
                if fan_running:
                    fan_running = False
                    GPIO.output(FAN_RELAY_PIN, GPIO.LOW)
                    print("无烟雾,自动停止风机")

        time.sleep(0.1)

except KeyboardInterrupt:
    GPIO.cleanup()
    print("程序结束")

以上代码提供了不同平台下的排烟风机控制实现,实际应用中需要根据具体硬件和需求进行调整,并考虑以下方面:

  1. 增加延时启动/停止功能
  2. 添加状态指示灯
  3. 实现故障报警和记录
  4. 考虑与其他消防系统的联动
  5. 符合当地消防规范和安全标准

最新文章

排烟风机代码

以下是一个简单的排烟风机控制系统的伪代码示例,可以根据实际需求进行调整:...

屋内排烟风机

屋内排烟风机是用于排除室内烟雾、热气、异味或有害气体的关键设备,常见于厨房、浴室...

排烟风机风机

排烟风机是消防排烟系统中的关键设备,主要用于火灾时排出高温烟雾,确保人员疏散通道...

大连排烟风机

关于大连排烟风机的选择、安装、维护或相关需求,以下是一些关键信息和建议,供您参考...