공개문제18번은 17번과 달리 프로그램을 4개로 쪼개서 만들어 보았다.
PSCAN을 쓰려고 했는데 이것만으로는 버튼을 두번 눌러야 하는 단점이 있었다.
그래서 아래에서 MAIN에서 M레지스터를 사용해서 버튼 두번 눌러야 하는 것을 해결하였다.
래더 프로그램도 이렇게 해야 할 듯



1.MAIN
- GLOBAL LABEL
가동중1~3까지 M레지스터를 사용해서 테스트가 동작중일때 단속, 연속 버튼을 눌러도 반응하지 않게 철저히 막았다.
17번에서는 가동중 하나만 가지고 막으니 초기조건에 온 될때 다른 버튼을 누르면 작동이 되는 오류가 있었다.
그래서 3개의 플래그를 사용해서 철저히 막아 보았다.

이 방식은 PB1을 눌렀다 땔때까지 PSCAN에 의해 프로그램 로딩까지만 되고 PR1에서 PB1이 클릭이 발생되지 않는 문제점이 있다. PLC 프로그램이 한 스캔에 로딩되고 PB1을 누르는 것 두개를 다 처리하지 못하는 경우가 종종 발생했다.
그래서 Mode를 사용해서 Mode 값을 셋 해놓고 다음 CASE 문에서 PSCAN, PSTOP를 사용했다.
이렇게 했을때 문제점은 Mode가 PB1버튼을 때도 Mode는 1로 세팅되어 있어 PSCAN, PSTOP를 지속적으로 실행하고 있다.
그래서 M0 플래그를 사용해서 PB1이 눌려지면 M0를 온 시키고 PR1(테스트동작) 프로그램에서 M0를 OFF 시키면 지속적으로 실행시키는 것을 해결할 수 있다.
M1, M2, M3 레지스터는 상승펄스로 버튼을 눌렀을때 각 프로그램에서 버튼을 사용하지 않고 MPB1_R(PB1 버튼 상승 펄스)를 이용해서 MPB1_R(_CLK:= M1 );로 버튼 클릭과 같은 효과를 누리기 위함(PB1 누름을 잃지 않기 위해 사용)

2.테스트


2.단속
PB2가 눌렸을때 타이머 초기화를 처음 초기화를 한다.
이렇게 하지 않으면 스텝상에서 타이머가 오동작을 한다.(초기화를 해줘야 타이머의 시간값이 0으로 초기화 되는듯)


프로그램의 12번 스텝에서 타이머를 초기화 한다.
그리고 재질 판별에서도 T배출이 완료되고 나서 T배출을 클리어 시켜줘야 한다.
클리어 하지 않으면 계속해서 10번으로 간다.

3.연속 및 부가조건




변수의 초기화는 동작이 완료 되었을때 초기화 시키면 된다.
ST에서는 특이하게도 타이머를 초기화 시켜줘야 한다.
다른 방법이 있다면 댓글을 부탁 드립니다.
다른 공개문제를 참고 하려면 아래 페이지를 참고하기 바랍니다.
'PLC(미쓰비시)' 카테고리의 다른 글
| 공개문제20 - ST언어를 이용한 방식 (0) | 2026.01.03 |
|---|---|
| 공개문제19 - ST언어를 이용한 방식 (0) | 2026.01.03 |
| 공개문제17 - ST언어를 이용한 방식 (0) | 2026.01.03 |
| 공개문제13 - BSFL를 이용한 방식 (2025년 3회 출제문제) (0) | 2025.12.31 |
| 공개문제16 - BSFL를 이용한 방식 (0) | 2025.12.31 |