반복문

 

FOR 문

 

FOR문은 반복되는 연산을 처리하기 위해 수행합니다.

반복 조건(횟수)를 정확히 설정할 수 있는 경우 사용합니다. 그렇지 않다면 WHILE문이나 REPEAT문을 사용하여야 합니다.

 

※ 반복문을 과도하게 사용하는 경우 스캔 타임이 현저히 증가하여 다른 프로그램이나 전체 시스템 동작에 영향을 미칠 수 있습니다.

형식

FOR 초기화 식 TO 표현식 BY 표현식 DO

   구문

END_FOR;

초기화 식은 반복 변수를 초기화 하는 식입니다. 대입문을 사용하며 대입 연산자 ‘:=’ 앞에는 변수 또는 PLC 디바이스가, 대입 연산자 뒤에는 초기화 할 정수 값이 위치합니다.
TO 뒤의 표현식은 반복 변수의 최종 값입니다. 정수 값이 위치하며, 반복 변수의 값이 해당 값보다 작거나 같을 경우에만 구문이 실행됩니다.
BY 뒤의 표현식은 반복 변수가 구문이 수행 될 때마다 증가하는 수 입니다. 정수 값이 위치하고 생략이 가능한데 이 때 기본적으로 1이 증가합니다.
구문에는 다른 구문들이 올 수 있습니다.


예시

내용

// 1부터 10까지의 수를 모두 더하는 예시입니다.

// 반복 변수 D00의 값은 1부터 10까지 구문이 실행될 때마다 1씩 증가합니다. 반복문은 총 10번 실행됩니다.

// D100의 디바이스에 1부터 10까지의 값을 더합니다.

// FOR문이 종료 된 후 D100 디바이스의 값은 55입니다.

FOR DW00 := 1 TO 10 BY 1 DO

   DW100 := DW100 + DW00;

END_FOR;

 

 

WHILE 문

 

WHILE문은 FOR문과 달리 반복 횟수가 정해져 있지 않은 반복문입니다.

조건식의 결과가 1의 값(참)인 동안에 WHILE문 안의 구문을 수행합니다. 조건식의 결과가 0의 값(거짓)이 되지 않는다면 구문을 영원히 반복적으로 수행할 것입니다.

조건식의 결과를 0으로 만들 수 있도록 조건식을 잘 세워야 합니다.

 

※ 반복문을 과도하게 사용하는 경우 스캔 타임이 현저히 증가하여 다른 프로그램이나 전체 시스템 동작에 영향을 미칠 수 있습니다.

형식

WHILE 조건식 DO

   구문

END_WHILE;

조건식은 비교 연산이나 논리 연산 등을 활용하여 구성할 수 있습니다.
구문에는 다른 구문들이 올 수 있습니다.
예시

내용

// 0부터 5까지의 수를 모두 더하는 예시입니다.

// D0 디바이스가 5보다 작은 동안 WHILE문이 동작합니다.

// WHILE문이 종료 된 후 D10 디바이스의 값은 15입니다.

WHILE DW00 < 5 DO

   DW00 := DW00 + 1;

   DW10 := DW10 + DW00;

END_WHILE;

// WHILE 문의 조건식이 항상 참입니다. 따라서 반복문이 영원히 수행됩니다.

// 이 경우 CICON과 접속이 끊어지고 특수 카드들에 에러 LED가 깜빡이는 등 PLC가 오동작 할 수 있습니다.

// 해당 경우가 발생하였다면 [여기]를 참고하여 문제를 해결하세요.

WHILE DW00 >= 0 DO

   DW00 := DW00 + 1;

   DW10 := DW10 + DW00;

END_WHILE;

 

 

REPEAT 문

 

REPEAT 문은 FOR문과 달리 반복 횟수가 정해져 있지 않은 반복문입니다.

UNTIL 다음의 조건식의 결과가 0의 값(거짓)인 동안에 REPEAT문 안의 구문을 수행합니다.

조건식의 결과가 1의 값(참)이 되지 않는다면 구문을 영원히 반복적으로 수행할 것입니다. 조건식의 결과를 1로 만들 수 있도록 조건식을 잘 세워야 합니다.

REPEAT문은 WHILE문과는 다르게 조건식의 결과가 참이더라도 구문을 1회는 실행합니다.

 

※ 반복문을 과도하게 사용하는 경우 스캔 타임이 현저히 증가하여 다른 프로그램이나 전체 시스템 동작에 영향을 미칠 수 있습니다.

형식

REPEAT

   구문

   …

UNTIL 조건식

END_REPEAT;

조건식이 거짓인 동안에 구문들이 수행됩니다.
조건식이 참이 될 경우 REPEAT문을 종료합니다.
구문에는 다른 구문들이 올 수 있습니다.
조건식은 비교 연산이나 논리 연산 등을 활용하여 구성할 수 있습니다.
예시

내용

// 0부터 5까지의 수를 모두 더하는 예시입니다.

// D0 디바이스가 5보다 같지 않은 동안 REPEAT문이 동작합니다.

// REPEAT문이 종료 된 후 D10 디바이스의 값은15입니다.

REPEAT

   DW00 := DW00 + 1;

   DW10 := DW10 + DW00;

UNTIL DW00 = 5

END_REPEAT;

// UNTIL 다음의 조건식이 항상 거짓입니다.

// 따라서 반복문이 영원히 수행됩니다.

// 이 경우 CICON과 접속이 끊어지고 특수 카드들에 에러 LED가 깜빡이는 등 PLC가 오동작 할 수 있습니다.

// 해당 경우가 발생하였다면 [여기]를 참고하여 문제를 해결하세요.

REPEAT

   DW00 := DW00 + 1;

   DW10 := DW10 + DW00;

UNTIL DW00 < 0

END_REPEAT;