지금까지의 과정은 바로 cfManagedBase 라이브러리를 설명하기 위한 빌드업 과정이였습니다. 아무런 설명없이 이 라이브러리를 언급했다면, 아마 대부분의 유저분들은 이 라이브러리를 왜 사용해야만 하는지 이해하지 못했을 것입니다.
이 파일을 다운로드 받아 압축을 푼뒤, Arduio/Libaries 폴더아래에 넣으세요.
이 라이브러리를 이용하면, 다음 소스처럼 간결해집니다.
#include "cfManagedBase.h" void user_setup() { // 초기화 처리 } void loop() { // 이 안에는 기존 아두이노 코드를 사용할 수 있습니다. delay를 써도 상관없습니다. // 단, 인터럽트를 금지시키는 명령어를 사용하면 안됩니다. } void logic_proc() { // 로직처리, 타이머 처리 등등 // 시간 지연금지 (delay, Serial 함수) }
기존 입출력 버퍼 배열을 사용한 경우입니다. 대괄호의 빈번한 사용으로 다소 쓰기에 불편합니다.
Y[0] = X[0]; // Main Logic Program
이 보다는 사용하기 편리한 형태로 바꾼 정의문을 라이브러리 안에 넣어두었습니다. 이를 적용하면 위 소스를 아래처럼 표현할 수 있습니다.
Y00 = X00; // Main Logic Program
보시는 것처럼 모두 대문자로 구성되어 있습니다. 모든 입출력 모듈이 다 장착된 상태에서의 어드레싱 참조표입니다.
물론, 기존 배열을 사용할 수도 있습니다.
for (i=0; i<16; i++) { Y[i] = 0; } // clear Y00~Y15
원하는 이름을 포트에 부여해도 됩니다. 사실 이렇게 하는 것이 더 좋은 방법입니다.
#define MainMotor Y[0] MainMotor = 1; // Main motor turn on
HMI와 연결된 상황에서는 MODBUS 라이브러리를 추가해야 됩니다.
#include "cfManagedBase.h" #include "cfSimpleModbusRtu.h" uint16_t Lword[99]; uint8_t Lbit[99]; void user_setup() { startModbusServer(2, 1, Lword, Lbit); // uartCh, ModbusSlaveAdr, WordArea, BitArea } void loop() { } void logic_proc() { }