본문 바로가기
프로그래밍/알고리즘

인터록

by jaewoo93 2024. 6. 21.

인터록 개념을 소프트웨어적으로 구현.

 

인터록 개념은 아래 게시글을 참조할 것.

https://jwyeyo93.tistory.com/132

 

인터록

두 개 이상의 기기나 시스템이 특정 조건이 충족될 때만 동작하도록 설계.한 장치가 특정 상태일 때 다른 장치가 작동하지 않도록 보장하는 방식.안전성과 신뢰성이 중요한 시스템에서 흔히 사

jwyeyo93.tistory.com

 

C언어로 구현.

 

#include <stdio.h>
#include <stdbool.h>

// 릴레이 상태를 나타내는 변수
bool relay1 = false;
bool relay2 = false;

// 스위치 1을 눌러 릴레이 1을 켜는 함수
void turnOnRelay1() {
    if (!relay2) { // 릴레이 2가 켜져 있지 않을 때만 릴레이 1을 켬
        relay1 = true;
        printf("Relay 1 is now ON\n");
    } else {
        printf("Relay 1 cannot be turned ON because Relay 2 is ON\n");
    }
}

// 스위치 2를 눌러 릴레이 2를 켜는 함수
void turnOnRelay2() {
    if (!relay1) { // 릴레이 1이 켜져 있지 않을 때만 릴레이 2를 켬
        relay2 = true;
        printf("Relay 2 is now ON\n");
    } else {
        printf("Relay 2 cannot be turned ON because Relay 1 is ON\n");
    }
}

// 릴레이 1을 끄는 함수
void turnOffRelay1() {
    relay1 = false;
    printf("Relay 1 is now OFF\n");
}

// 릴레이 2를 끄는 함수
void turnOffRelay2() {
    relay2 = false;
    printf("Relay 2 is now OFF\n");
}

int main() {
    printf("Initial states: Relay 1: %s, Relay 2: %s\n", relay1 ? "ON" : "OFF", relay2 ? "ON" : "OFF");

    // 릴레이 1을 켬
    turnOnRelay1();
    printf("Relay 1: %s, Relay 2: %s\n", relay1 ? "ON" : "OFF", relay2 ? "ON" : "OFF");

    // 릴레이 2를 켜려고 시도
    turnOnRelay2();
    printf("Relay 1: %s, Relay 2: %s\n", relay1 ? "ON" : "OFF", relay2 ? "ON" : "OFF");

    // 릴레이 1을 끔
    turnOffRelay1();
    printf("Relay 1: %s, Relay 2: %s\n", relay1 ? "ON" : "OFF", relay2 ? "ON" : "OFF");

    // 릴레이 2를 켬
    turnOnRelay2();
    printf("Relay 1: %s, Relay 2: %s\n", relay1 ? "ON" : "OFF", relay2 ? "ON" : "OFF");

    // 릴레이 1을 켜려고 시도
    turnOnRelay1();
    printf("Relay 1: %s, Relay 2: %s\n", relay1 ? "ON" : "OFF", relay2 ? "ON" : "OFF");

    return 0;
}

 

이 코드는 릴레이 1이 켜지면 릴레이 2는 켜질 수 없고, 릴레이 2가 켜지면 릴레이 1은 켜질 수 없도록 인터록 기능 구현.

'프로그래밍 > 알고리즘' 카테고리의 다른 글

PID 제어 개념  (0) 2024.06.26