사용자 도구

사이트 도구

English

codesysmanual:abouttask

Task

CODESYS 에서 프로젝트 생성후 오른쪽 창을 보면 Task Configuration (테스크구성)이 있고 그 안에 MainTask 와 VISU_TASK가 있는 것을 볼 수 있습니다.

Task는 CODESYS 에서 작업을 관리하는 단위 입니다. TASK안에는 실행할 POU가 들어 있습니다. (POU란 Program Organization Unit의 약자로 사용자가 작성하는 프로그램, 펑션, 펑션블록등을 뜻합니다.)

테스크의 Type

MainTask를 더블클릭해보면 다음과 같은 창이 보입니다. Type을 선택하는 부분이 있는데..

Cyclic 이 외에도 몇가지가 더 있습니다.

  • Cyclic : 일정주기마다 Task를 실행.
  • Freewheeing : 남는시간에 실행
  • Event : 특정 BOOL변수가 상승Edge가 되었을때 Task를 실행.
  • Status : 특정 BOOL변수가 TRUE를 유지하고 있을때 Task를 실행.

Cyclic

일정주기마다 반복적으로 Task를 수행합니다. MainTask주기를 20mS로 설정하고 그안에 들어 있는 POU수행이 그보다는 짧게 수행이 끝날경우 아래처럼 동작합니다. (주의사항 : 주기보다 짧게 POU수행이 끝나야 합니다.)

FreeWheeling

앞서 살펴본 Cyclic의 실행조건에서 남는 시간이 있습니다. FreeWheeling 테스크 안에 있는 POU들은 이 남는시간에 실행됩니다.

Event

Type을 Event로 선택하면, Event 변수를 입력하는 창이 나옵니다. 여기에 BOOL변수 하나를 지정해주세요.

그러면 이 변수가 상승Edge가 되는 순간 이 Task가 실행됩니다. 기존에 다른 테스크가 수행되고 있었다면 어찌될까요? 이때 우선순위(Priority)가 영향을 끼칩니다.

Event Task의 우선순위가 높다면, 기존에 수행하던 Task를 잠깐 멈추고 Event Task를 먼저 수행합니다. Event Task수행을 모두 마치면 다시 원래 수행하던 위치로 복귀합니다.

Status

Event와 거의 동일한데, 지정한 BOOL변수의 상승Edge를 판단하지 않고, 지정 변수가 True를 유지하면 계속 실행됩니다.

Watch Dog

와치독 기능도 있습니다.

이렇게 설정했다면 200mS 동안 MainTask가 재시작을 못했을때, 시스템을 리셋시켜줍니다. 위 설정에 따르면 MainTask는 20mS마다 한번씩 실행되어야 합니다. 그런데 200mS동안 실행을 못했다면, 뭔가 심각한 문제가 발생한 것입니다. 그래서 리셋시켜서 처음부터 다시 돌게 해줍니다.

만약 Sensitivity를 2로 하면 한번 더 기다려줍니다. 즉 400mS동안 기다립니다. 이 숫자가 올라갈 수록 기본 대기시간에 이 숫자를 곱한 수만큼 기다려줍니다.

CODESYS

codesysmanual/abouttask.txt · 마지막으로 수정됨: 2020/12/15 05:24 저자 Comfile Technology