인터록 개념을 소프트웨어적으로 구현.
인터록 개념은 아래 게시글을 참조할 것.
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은 켜질 수 없도록 인터록 기능 구현.