문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
cublocapp:an31010:index [2017/10/16 00:11] Comfile Technology 만듦 |
cublocapp:an31010:index [2017/10/16 00:12] (현재) Comfile Technology |
||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== AN31010 - 레더 타이머를 이용해서 일정시간동안 펄스 출력 ====== | ||
+ | |||
+ | 큐블록 베이직에는 Pulsout 이라는 명령이 있습니다. 일정한 시간 간격동안 펄스를 출력하는 명령입니다. | ||
+ | |||
+ | <code xbasic> | ||
+ | Const Device = CB280 | ||
+ | Low 16 | ||
+ | Do | ||
+ | If In(24) = 1 Then | ||
+ | Pulsout 16,5000 | ||
+ | Endif | ||
+ | Loop | ||
+ | </code> | ||
+ | |||
+ | 이렇게 하면 P24에 입력이 왔을때 대략 2초동안 P16포트가 On 됩니다. | ||
+ | |||
+ | 얼핏보면 쓸만하지만, 문제점이 있습니다. | ||
+ | |||
+ | Pulsout명령은 펄스를 출력하는 2초동안 대기하기 때문에, 그 사이에는 아무일도 처리할 수 없습니다. 즉, 프로그램의 흐름을 방해하고 있는 것입니다. | ||
+ | |||
+ | 이런식으로 잠시동안 신호를 출력해야 하는일은 자동화 현장에서 자주 발생되는 상황입니다. 입력이 들어왔을때, 문을 오픈하기 위한 모터를 작동하려면 일정시간 모터를 구동해주어야 합니다. 모터가 구동하는 동안에 다른 입력들도 처리할 필요가 있는데, Pulsout 을 쓴다면 아무것도 못하고 모터구동이 끝날때까지 기다려야 하는 것입니다. | ||
+ | |||
+ | ===== 레더로직과의 협동 ===== | ||
+ | |||
+ | 레더로직을 활용하면 이런 문제점을 해결할 수 있습니다. | ||
+ | |||
+ | 레더에는 타이머 기능이 있습니다. TMON 명령을 쓰면 일정시간동안 포트를 On할 수 있습니다. | ||
+ | |||
+ | 아래와 같이 프로그래밍하세요. | ||
+ | |||
+ | <code xbasic> | ||
+ | Const Device = CB280 | ||
+ | Usepin 16,Out | ||
+ | Set Ladder On | ||
+ | Do | ||
+ | If In(24) = 1 Then | ||
+ | _M(0) = 1 | ||
+ | Else | ||
+ | _M(0) = 0 | ||
+ | Endif | ||
+ | Loop | ||
+ | </code> | ||
+ | |||
+ | {{ :cublocapp:an31010:tmontest.png?nolink |}} | ||
+ | |||
+ | 베이직 프로그램을 잘 보세요. P16에 2초동안 High출력을 하고 싶을때, M0 를 On 하면 됩니다. 그 뒷일은 레더한테 맡겨두면 됩니다. 레더가 알아서 P16을 2초동안 On시키고, 2초가 지나면 Off해줍니다. | ||
+ | |||
+ | 베이직은 M0만 1 로 만들고 바로 다음행으로 넘어가 다른 처리를 할 수 있게 됩니다. | ||
+ | |||
+ | <html><center> | ||
+ | <iframe width="560" height="315" src="https://www.youtube.com/embed/2RpQbe3Flrg" frameborder="0" allowfullscreen=""></iframe> | ||
+ | </center> | ||
+ | </html> | ||
+ | [[cublocapp:index|큐블록 어플리케이션 노트]] | ||