큐블록 베이직에는 Pulsout 이라는 명령이 있습니다. 일정한 시간 간격동안 펄스를 출력하는 명령입니다.
Const Device = CB280 Low 16 Do If In(24) = 1 Then Pulsout 16,5000 Endif Loop
이렇게 하면 P24에 입력이 왔을때 대략 2초동안 P16포트가 On 됩니다.
얼핏보면 쓸만하지만, 문제점이 있습니다.
Pulsout명령은 펄스를 출력하는 2초동안 대기하기 때문에, 그 사이에는 아무일도 처리할 수 없습니다. 즉, 프로그램의 흐름을 방해하고 있는 것입니다.
이런식으로 잠시동안 신호를 출력해야 하는일은 자동화 현장에서 자주 발생되는 상황입니다. 입력이 들어왔을때, 문을 오픈하기 위한 모터를 작동하려면 일정시간 모터를 구동해주어야 합니다. 모터가 구동하는 동안에 다른 입력들도 처리할 필요가 있는데, Pulsout 을 쓴다면 아무것도 못하고 모터구동이 끝날때까지 기다려야 하는 것입니다.
레더로직을 활용하면 이런 문제점을 해결할 수 있습니다.
레더에는 타이머 기능이 있습니다. TMON 명령을 쓰면 일정시간동안 포트를 On할 수 있습니다.
아래와 같이 프로그래밍하세요.
Const Device = CB280 Usepin 16,Out Set Ladder On Do If In(24) = 1 Then _M(0) = 1 Else _M(0) = 0 Endif Loop
베이직 프로그램을 잘 보세요. P16에 2초동안 High출력을 하고 싶을때, M0 를 On 하면 됩니다. 그 뒷일은 레더한테 맡겨두면 됩니다. 레더가 알아서 P16을 2초동안 On시키고, 2초가 지나면 Off해줍니다.
베이직은 M0만 1 로 만들고 바로 다음행으로 넘어가 다른 처리를 할 수 있게 됩니다.