plc 래더 프로그램으로 전자시계만들기 , 부저를 연결하여 경고음 발생시키기

2024. 5. 8. 13:38충남 인력개발원/plc (GX Works)

 

sm 412 를 활용한 시계 프로그램

미쓰비시 PLC의 특수 릴레이들은 자동화 작업의 실력을 한층 업그레이드시켜줄 수 있는 강력한 기능들을 가지고 있습니다. 이 릴레이들을 적절히 활용하면 복잡한 타이밍 로직을 수월하게 구현할 수 있죠.

SM400는 '항상 켜짐' 상태를 나타내는 주소로, 무조건적인 지속 신호가 필요할 때 사용됩니다. 이는 예를 들어 기본 설정값이나 항상 진실을 나타내야 하는 조건에 적합합니다.
SM401는 그 반대로 '항상 꺼짐' 상태를 나타내며, 이는 보통 안전 기능이나 기본값으로 OFF가 필요한 경우에 활용됩니다.
SM402는 PLC가 RUN 상태로 전환된 직후에만 잠깐동안 ON이 되는 '원샷 펄스'를 제공합니다. 시작 조건이나 초기화 시퀀스 같은 것을 구현할 때 매우 유용하죠.
SM403는 SM402의 반대 작용을 하여, 시작할 때 잠깐동안 OFF 되었다가 바로 ON 상태로 돌아오는 주소입니다.
SM409 - SM413는 각각 다른 시간 간격(0.005초, 0.05초, 0.1초, 0.5초, 1초)으로 ON/OFF를 반복합니다. 이런 신호들은 다양한 주기적 작업에 적합하여, 예를 들어 센서 모니터링이나 정기적인 데이터 로깅에 사용될 수 있습니다.
상세한 예시를 드리자면, SM410을 이용해 0.05초마다 LED를 깜빡이게 할 수 있습니다. PLC 프로그래밍에서 SM410을 이용하여 래더 로직을 설계하면, SM410이 ON 상태가 될 때마다 연결된 LED 코일이 활성화되어 불이 켜지고, SM410이 OFF 상태가 될 때 LED 코일이 비활성화되어 불이 꺼집니다. 이 방식을 통해 시각적인 경고 신호나 상태 표시등 등을 효과적으로 구현할 수 있습니다. 이러한 래더 로직은 간결하고, 명료하며, 수정이나 확장이 용이하기 때문에 다양한 자동화 프로젝트에 맞춰 쉽게 조정할 수 있습니다.


 

 

 

실제 plc구동 모습

한줄에 4bit가 할당되는 segment block의 배선을 4줄 전부하여 촐16 비트를 할당하여 전부 사용하였다

 

 

시계 프로그램 래더 구현시 필요사항

 

타이머:
시, 분, 초를 계산할 수 있는 타이머가 필요합니다. 이들 각각은 60의 모듈로 증가해야 하고, 초 타이머가 60에 도달할 때마다 분 타이머가 증가하며, 분 타이머가 60에 도달할 때마다 시 타이머가 증가하는 방식입니다.
카운터:
타이머가 특정 값을 도달할 때마다 카운트를 증가시키는 카운터가 필요합니다. 예를 들어, 분 카운터는 초 카운터가 60을 카운트할 때마다 증가해야 합니다.
클록 펄스 발생기:
일정한 시간 간격으로 클록 펄스를 생성하는 기능이 필요합니다. 예를 들어, SM410을 사용하여 매 0.05초마다 펄스를 발생시키고, 이를 타이머와 카운터가 참조하도록 할 수 있습니다.
디스플레이 또는 인디케이터:
시간을 표시하기 위해 7세그먼트 디스플레이 또는 다른 형태의 인디케이터가 필요합니다. 이를 통해 사용자가 시계를 읽을 수 있습니다.
메모리 레지스터:
현재 시간을 저장하기 위한 메모리 레지스터가 필요합니다. 시, 분, 초 각각을 위한 별도의 레지스터를 설정할 수 있습니다.
입력 장치:
시간을 설정하거나 조정하기 위한 버튼이나 스위치가 필요할 수 있습니다. 이들은 사용자가 시간을 설정할 때 사용됩니다.
출력 제어:
실시간으로 시간을 업데이트 하기 위해 필요한 출력 릴레이 또는 트랜지스터 출력이 필요합니다. 이들은 인디케이터 또는 디스플레이를 제어하는데 사용됩니다.
프로그램 로직:
시간 증가, 설정, 표시 등을 제어하기 위한 래더 로직이 프로그램에 포함되어야 합니다.
전원 공급:
시스템의 모든 전자 부품에 전원을 공급하는 안정적인 전원 공급 장치가 필요합니다.


타이머 릴레이 (T): 초, 분, 시간을 계산하기 위해 필요합니다. 이 릴레이는 일정 시간 간격 후에 작동을 시작하거나 정지합니다.
카운터 (C): 타이머가 만료될 때마다 카운터 값을 증가시켜 분, 초 등을 계산합니다.
데이터 레지스터 (D): 카운터에서 계산된 값을 저장합니다. 예를 들어, D 레지스터는 초, 분, 시를 저장하는 데 사용될 수 있습니다.
특수 릴레이 (SM): PLC의 시간 기반 펄스를 생성합니다. 예를 들어 SM411을 사용하면 0.1초마다 펄스를 발생시켜 타이머에 신호를 보낼 수 있습니다.
출력 장치 (Y): 실제 시계 표시장치에 연결됩니다. 디지털 혹은 아날로그 표시 장치를 조작하기 위해 출력 코일을 사용합니다.
프로그래밍된 인터벌 (ON/OFF 릴레이): SM409부터 SM413까지의 특수 릴레이를 활용하여 초, 분, 시간마다 ON/OFF 신호를 생성할 수 있습니다.
인터페이스 모듈: 시간 데이터를 LCD나 LED 디스플레이로 전송하기 위한 장치입니다.
통신 모듈: 네트워크를 통해 시간 데이터를 전송하거나 외부 시계 서버로부터 동기화할 수 있는 통신 인터페이스가 필요할 수 있습니다.

 


 

"BZ"는 보통 부저(Buzzer)를 의미합니다. 부저는 경고음이나 알람 신호를 사용자에게 알리는데 쓰이는 장치입니다. PLC 프로그램에서 특정 조건이나 상태가 발생했을 때 음향 신호를 제공함으로써, 

사용자가 시각적 모니터링 없이도 상황을 인지할 수 있도록 도와줍니다. 

예를 들어, 기계의 오류 상태, 프로세스의 완료, 안전 문제 등과 같은 다양한 이벤트에 대한 알림으로 사용될 수 있습니다.

시간프로그램 구현 최종세팅이며 해당 기능에 추가 기능 구현을 제시 받았다


과제

알람시 알람분 을 만들고,
모드버튼과 증가버튼으로 알람시 알람분을 설정할 수 있도록 하며 현재시가, 알람시가 되면
부저가 5초간 울리고 종료되도록 프로그램하시오.
숫자 올리는게 불편하면, 한번씩 누를때는 값이 1씩 증가하고
2초이상 증가 버튼을 누르면 자동으로 증가하도록 프로그램 하시오.


구현정리

사용자가 모드 버튼과 증가 버튼을 사용하여 알람 시간(시와 분)을 설정할 수 있게 하고, 설정된 알람 시간에 도달하면 부저가 5초 동안 울리도록 하는 프로그램을 만드는 것을 목표로 합니다. 또한, 증가 버튼의 사용성을 높이기 위해 짧게 누르면 값이 1씩 증가하고, 2초 이상 누르고 있으면 자동으로 계속 증가하도록 설정하는 기능을 추가하는 것입니다.

이를 구현하기 위해 필요한 기능들은 다음과 같습니다:

모드 버튼 입력: 모드 버튼을 눌러서 알람 시간 설정 모드와 알람 분 설정 모드를 전환할 수 있게 합니다.
증가 버튼 입력: 증가 버튼을 눌러서 알람 시간(시 혹은 분)을 설정합니다. 

짧게 누를 경우 1씩 증가하고, 2초 이상 누르면 연속해서 증가하도록 합니다.


타이머 설정: 알람 시간에 도달했을 때 부저가 5초간 울리도록 타이머를 설정합니다.
부저 출력 설정: 설정된 알람 시간에 부합할 때 부저가 작동하도록 출력을 설정합니다.
래더 로직에서는 다음과 같은 구성 요소들이 사용됩니다:

비교 연산자: 현재 시간과 알람 시간을 비교하여 같을 때 부저를 작동시키는 로직.
타이머 (T) 및 카운터 (C): 버튼을 길게 누르고 있는지 여부를 감지하고, 해당 상태가 지속될 때 값이 자동으로 증가하도록 하는 로직.
데이터 레지스터 (D): 알람 시간을 저장하는 메모리.
출력 코일 (Y): 부저를 작동시키는 신호를 제어합니다.

 


모드값라인을 추가로 개설하여 로직상에 sm412 , 411 을 추가하여  부처의 사용을 유연하게 가능하게끔 설정한다 .

자동펄스를 자기유지회로로 모드값 중간에 세팅하여 자동증가버튼을 누르면

모드를 유연하게 조작 조작가능하게끔 세팅한다. (이렇게 설계하면 버튼하나로 타이머 모드(시 분 초 ) 동작 가능)

 

 

 

 

 


 

 


시분초를 plc 장비에 실제로 동기화시켜 알람의 형태로 맞춰준 이후 시번동작시킨 영상입니다

 

 

라벨링 언어로 짠 프로그램 예시입니다


과제
12시간제 24시간제를 선택하여 표시할 수 있도록 하시오.
예 ) 모드 5일때 증가버튼 한번 누르면 12시간제 표시 다시 증가버튼 한번 누르면 24시간제 표시

 

 

기존 램프로 모드 4까지의 구현 영상


구현 예시

 

모드 선택 릴레이(M): 사용자가 모드 버튼을 눌렀을 때 활성화되는 릴레이입니다. 예를 들어 M5 릴레이가 '시간제 선택 모드'를 나타낼 수 있습니다.
증가 버튼 입력(X): 사용자가 시간제를 전환할 때 사용하는 버튼의 입력 신호입니다.
12/24시간제 상태 릴레이(M): 12시간제 또는 24시간제 상태를 저장하는 내부 릴레이입니다. 예를 들어 M10은 12시간제, M11은 24시간제 상태를 저장할 수 있습니다.
상태 전환 로직: 사용자가 증가 버튼을 눌렀을 때 현재 상태에 따라 12시간제와 24시간제를 전환하는 로직입니다. 이 로직은 일반적으로 토글 기능을 수행하는 릴레이 또는 비트를 이용하여 구현할 수 있습니다.
래더 다이어그램에 이러한 요소를 구현하는 예시 로직은 다음과 같을 수 있습니다:

사용자가 모드 버튼을 누르면 모드 선택 릴레이(M5)가 활성화됩니다.
모드 릴레이(M5)가 활성화된 상태에서 증가 버튼 입력(X)이 활성화되면 12/24시간제 상태 릴레이(M10, M11)의 상태를 토글합니다.
시간제 상태에 따라 시간 표시 장치에 12시간제 또는 24시간제를 표시하도록 지시합니다.
실제 프로그램에 이를 적용하기 위해서는 사용하는 PLC의 프로그래밍 언어와 기능, 그리고 래더 다이어그램 툴의 특성을 고려하여 상세하게 프로그램을 작성해야 합니다.





12시간 모드에서 value값에 13을 넣고 set시킬시

 

아래와같이 block 라인의 숫자가 바뀌는것을 볼수있다

 

ff =  Flip-Flop의 약자이다 해당 명령어로 12시간제와 24시간제를 버튼하나로 전환할수 있게끔 구현하였다
시간제 12의 자세한 래더 구현 현황은 다음과 같다

 

모드값으로 값을 받아온후 k0~2로 배분해준후 bcd코드로 전환시킨다.

시간제 12 접점으로 설계한후 사측연산들을 알막제 넣어 12시간제 표기를 안정적으로 할수있게끔

표기를 바꾼다 13시가 1시이기 때문에 -로 12시간(k12)을 빼주고 임시에 12시에서 -n 한 나머지 값이 들어간다

이렇게 하면 12시간제로 타이머상에 표기가된다  

요약
모드 값 수신: 사용자로부터 입력된 모드 값을 받아오며, K0에서 K2로 값을 배분합니다. 
이는 다양한 기능을 실행하기 위한 준비 단계입니다.
BCD 변환: 수신된 값을 BCD(Binary Coded Decimal) 코드로 변환하여 디스플레이에 표시하기 위한 준비를 합니다.
12시간제로 변환: 24시간제 시간을 12시간제로 변환합니다. 여기서 중요한 점은 13시 이상의 값에 대해 12를 빼주어 오전과 오후를 구분하는 로직을 포함하고 있습니다. 예를 들어, 13시는 1시로 표시되어야 하므로 K12을 사용하여 시간에서 12를 빼주는 연산을 수행합니다.
출력 조정: 변환된 값이 0시가 되지 않도록 조정합니다. 12시간제에서는 12시가 0시가 아니라 정오나 자정을 의미하므로, 이를 적절히 조정하는 로직을 포함해야 합니다.
시간 표기: 최종적으로 계산된 시간을 디스플레이나 다른 출력 장치에 표시합니다.

요약하자면 입력하나로 출력부의 버튼을 on / off할수 있다는 뜻

 

플립플랍(Flip-Flop)의 기본 동작과 그 사용 예를 보여줍니다. PLC 프로그래밍에서 플립플랍은 논리적 상태를 저장하는 데 사용되며, 입력에 따라 출력 상태를 전환하는 기능을 합니다.

기능 설명:

기본 동작:
FF 블록은 입력 상태에 따라 내부 상태를 전환합니다.
입력이 ON 상태일 때 FF는 ON 상태로 전환하고, 다음 입력 상태 변화까지 해당 상태를 유지합니다.
데이터 설정:
비트 데이터 입력: FF가 작동하게 하는 신호.
내부 데이터: FF의 현재 상태를 나타내며, ON 또는 OFF입니다.
예시 프로그램:
X9 입력이 ON 될 때 Y10 출력이 토글되는 예를 보여줍니다. X9가 ON 될 때마다 Y10은 ON과 OFF를 반복합니다.
이러한 동작은 자동화 시스템에서 설정 값을 토글하거나 특정 조건에서만 작동해야 하는 로직을 구현할 때 유용합니다. 예를 들어, 사용자 입력에 따라 기계를 시작하거나 멈추게 하는 제어 패널에서 이러한 논리를 사용할 수 있습니다.

조건
스탑와치 시작/지 버튼, (XO) 리셋버튼(X1) 기록버튼(x2) 1/10초 타이머(00초00), BCD표시 시작버튼을 누르면 타이머가 동작한다. 기록 버튼을 누르면 메모리 3개에 순차적, 반복적으로 누른 시점이 기록 된다. 정지 버튼을 누르면 타이머는 정지되고 리셋버튼을 누르면 타이머와 기록된 시간값 3개가 모두 리셋된다.

 

 

약식 구현

타이머와 디스플레이 제어:
타이머는 1/10초 단위로 설정되며, 시작 버튼 (X0)이 활성화되면 타이머를 시작합니다.
BCD(Binary Coded Decimal) 방식을 사용하여 현재 타이머 값을 디스플레이에 표시합니다.
기록 버튼 (X2) 로직:
기록 버튼을 누를 때마다 현재 타이머의 값을 메모리에 순차적으로 저장합니다.
저장된 값은 3개의 메모리 주소에 반복적으로 기록되어, 최신 3개의 기록만 유지됩니다.
정지 및 리셋 버튼 (X0, X1) 로직:
정지 버튼 (X0)을 다시 누르면 타이머가 정지됩니다.
리셋 버튼 (X1)이 활성화되면 타이머 값과 모든 기록된 시간값을 초기화합니다.

11.pdf
0.11MB

타이머 프로그램