Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
faduino:modularfaduino:scanprogramming:index [2026/02/14 06:13] – created - external edit 127.0.0.1faduino:modularfaduino:scanprogramming:index [2026/03/25 04:52] (current) admin
Line 3: Line 3:
 대부분의 자동화 기기에서 모든 입력(스위치, 센서류)는 항상 감시되고 있어야 하며, 해당 입력이 들어왔을때 상응하는 출력이 즉각적으로 나와주어야만 합니다. 대부분의 자동화 기기에서 모든 입력(스위치, 센서류)는 항상 감시되고 있어야 하며, 해당 입력이 들어왔을때 상응하는 출력이 즉각적으로 나와주어야만 합니다.
  
-이 경우, 기존 C언어 유저들은 외부 인터럽트등을 사용해서 충분히 코딩할 수 있을 것이라고 생각하겠지만, 그보다 훨씬 효율적인 방법이 있습니다.+이 경우, 기존 C언어 유저들은 외부 인터럽트등을 사용해서 충분히 코딩할 수 있을 것이라고 생각하겠지만, 그보다 훨씬 효율적인 방법이 있습니다. PLC 라고 불리우는 자동화용 컨트롤러에서 사용하는 방법인데, 모든 I/O를 스캔하면서 빠른 속도로 무한 루핑을 하는 구조입니다.
  
-PLC 라고 불리우는 자동화용 컨트롤러에서 사용하는 방법인데, 모든 I/O를 스캔하면서 빠른 속도로 무한 루핑을 하는 구조입니다. +{{ :faduino:modularfaduino:scanprogramming:scandiagramk.png?nolink |}}
- +
-{{ :modularfaduino:scanprogramming:scandiagramk.png?nolink |}}+
  
 ====== 스캔 루프 실행방식으로 코딩하기 ======= ====== 스캔 루프 실행방식으로 코딩하기 =======
- 
  
 스캔 루프 실행방식은 모든 포트를 읽고나서, 로직처리를 한뒤, 출력포트에 한꺼번에 전부 반영합니다. 그리고 이 과정을 반복합니다.  스캔 루프 실행방식은 모든 포트를 읽고나서, 로직처리를 한뒤, 출력포트에 한꺼번에 전부 반영합니다. 그리고 이 과정을 반복합니다. 
  
-{{ :modularfaduino:scanprogramming:example.png?nolink |}} +{{ :faduio:modularfaduino:scanprogramming:example.png?nolink |}}
- +
-C언어는 매우 다재다능한 언어이므로, 충분히 PLC에서 사용하는 스캔 루프 실행방식으로 코딩할 수 있습니다. +
- +
-모든 입력을 받아서 입력 배열 버퍼 (X[0] ~ X[127])에 저장하고, X배열과 Y배열을 대상으로 로직연산/처리를 한뒤, 출력 배열버퍼 (Y[0]~Y[127])에 있는 내용을 출력모듈에 반영하도록 하면 됩니다.+
  
-아래 그림처럼 입력8개, 출력8개가 모두 연결된 상황을 가정하고 아래 소스를 만들었습니다. +C언어는 매우 다재다능한 언어이므로, 충분히 PLC에서 사용하는 스캔 루프 실행방식으로 코딩할 수 있습니다. 모든 입력을 받아서 입력 배열 버퍼 (X[0] ~ X[127])에 저장하고, X배열과 Y배열을 대상으로 로직연산/처리를 한뒤, 출력 배열버퍼 (Y[0]~Y[127])에 있는 내용을 출력모듈에 반영하도록 하면 됩니다. 아래 그림처럼 입력8개, 출력8개가 모두 연결된 상황을 가정하고 아래 소스를 만들었습니다. 
  
 이렇게 전부 연결하지 않아도 본 소스는 동작됩니다. 연결하지 않은 I/O모듈에 할당된 배열은 무시하셔도 좋습니다. 이렇게 전부 연결하지 않아도 본 소스는 동작됩니다. 연결하지 않은 I/O모듈에 할당된 배열은 무시하셔도 좋습니다.
  
-{{ :modularfaduino:scanprogramming:inputoutputmod.png?nolink |}}+{{ :faduio:modularfaduino:scanprogramming:inputoutputmod.png?nolink |}}
  
-{{ :modularfaduino:scanprogramming:inoutbuffer.png?nolink |}}+{{ :faduio:modularfaduino:scanprogramming:inoutbuffer.png?nolink |}}
  
 이 소스를 ARDUINO IDE로 복사>붙여넣기로 사용하시면 됩니다. 이 소스를 ARDUINO IDE로 복사>붙여넣기로 사용하시면 됩니다.
Line 87: Line 80:
 이 수식이 바로 PLC에서 사용하는 레더로직을 C언어에서 쓰는 수식형태로 변형시켜 놓은 것입니다.  이 수식이 바로 PLC에서 사용하는 레더로직을 C언어에서 쓰는 수식형태로 변형시켜 놓은 것입니다. 
  
-{{ :modularfaduino:scanprogramming:trans1.png?nolink |}}+{{ :faduio:modularfaduino:scanprogramming:trans1.png?nolink |}}
  
   * 레더설명 : X0입력이 On되면 Y0출력이 On됩니다. X0가 Off되면 Y0도 Off 됩니다.   * 레더설명 : X0입력이 On되면 Y0출력이 On됩니다. X0가 Off되면 Y0도 Off 됩니다.
Line 96: Line 89:
   * AND 레더설명 : X0,X1 둘다 On되면 Y0출력이 On됩니다.    * AND 레더설명 : X0,X1 둘다 On되면 Y0출력이 On됩니다. 
  
-{{ :modularfaduino:scanprogramming:trans2.png?nolink |}}+{{ :faduio:modularfaduino:scanprogramming:trans2.png?nolink |}}
  
 이런식으로 변환하면, 레더로직으로 표현가능한 모든 회로를 C언어 수식으로 구현할 수 있게 됩니다. 이런식으로 변환하면, 레더로직으로 표현가능한 모든 회로를 C언어 수식으로 구현할 수 있게 됩니다.
Line 106: Line 99:
 본 소스에 대한 기술문의는 받고 있지 않습니다. 이점 양해바랍니다. 본 소스에 대한 기술문의는 받고 있지 않습니다. 이점 양해바랍니다.
  
-[[modularfaduino:index|Modular FADUINO]]+[[..index|Modular FADUINO]]