큐블록에서 INT 입력 핀은 4 개밖에 없기 때문에 불편한 경우가 있습니다. MSB시리즈는 아예 INT입력 기능이 없습니다.
외부로부터 갑자기 어떤 처리를 요구하는 입력을 처리하기 위해 INT 인터럽트 기능을 반드시 사용해야 하는 경우에, 본 어플리케이션 노트에서 소개하는 방법을 이용하면 INT 기능을 확장 (INT가 없는 경우에는 추가)하여 사용할 수 있습니다.
바로 LADDER 인터럽트를 이용하는 것입니다. 레더는 10mS 마다 루프를 돌기 때문에 어떤 입력 핀의 변화를 감지할 수 있습니다. 입력 핀이 LOW 에서 HIGH 로 바뀌었을 때 ON LADDERINT 가 발생되도록 하는 것입니다.
포트0,1에 PUSH스위치를 연결하세요.
레더 쪽에는 아래와 같은 레더로직을 입력하세요.
베이직 소스는 다음과 같습니다.
Const Device = CB280 Usepin 0,In Usepin 1,In On Ladderint Gosub OCCURINT Set Ladder On Do Loop OCCURINT: If _D(0) = 1 Then Debug "Input P0 Rising Edge",Cr Elseif _D(0) = 2 Then Debug "Input P1 Rising Edge ==!",Cr End If Return
소스를 입력하고, 다운로드 및 실행시켜 보세요. P0, P1 포트에는 풀다운 저항이 있는 스위치입력을 연결한 뒤 스위치를 눌러보면, 디버그 터미널에 다음과 같은 멧세지가 표시됩니다.
스위치가 LOW 에서 HIGH 로 바뀌었을 때, ON LADDERINT 가 발생되어 처리된 것입니다.
이 방법을 사용할 때 유의할 점은 LADDER LOGIC 의 스캔타임이 10mS 라는 점입니다. 즉, 10mS 보다 짧은 펄스가 발생되는 신호라면 이 방법을 사용할 수 없습니다. 적어도 30mS 이상 되는 신호에 사용하는 것이 좋습니다.
또한 이 방법으로, 동시에 여러 개의 입력신호를 받아들이지 못합니다. 만약 동시에 입력이 들어온다면, 레더로직상의 가장 아래쪽에 위치한 신호만 검출됩니다. 이 프로그램의 경우 P0 과 P1 이 동시에 LOW 에서 HIGH 가 되었다면 P1 인터럽트만 처리됩니다. (가능한한 꼭 필요한 1개만 사용하시를 권합니다.) 이런 점을 감안하고 사용하시기 바랍니다.