사용자 도구

사이트 도구

English

modularfaduino:managedlibrary2:index

라이브러리 추가 설명

cfManagedBase 라이브러리에는 IEC61131-3 프로그래머블 로직 콘트롤러 국제 규격에 준하는 기능들이 다수 포함되어 있습니다.

타이머

사용할 수 있는 최대 타이머 갯수는 50개입니다. (0~49까지 사용가능) 라이브러리 파일에 있는 timerMaxLimit를 수정하면 더 사용할 수 있습니다.

라이브러리 안에 이런 내용이 들어있습니다. 이 코드를 여러분의 소스안에 넣을 필요는 없습니다.

#define timerMaxLimit 50
uint8_t Tstat[timerMaxLimit];  // Timer status
uint32_t Tvalue[timerMaxLimit];  // Timer Current Value

Tstat[타이머번호] 배열에는 각 타이머의 상태가 저장됩니다. Tvalue[타이머번호]에는 각 타이머의 현재 값이 저장됩니다.

onTimer

정해준 시간이 지나면 On되는 타이머입니다.

void onTimer(입력소스, 타이머 번호, 경과시간)

입력 소스 : 타이머 시작입력
타이머 번호 : 사용할 타이머 번호
경과시간 : 타이머 mS(밀리초) 값입니다. 8은 0.8S를 뜻합니다.

void logic_proc()
{
  onTimer(X00,0,20); // 2Sec On Timer 
  Y01 = Tstat[0];  // Watch Tvalue
}

offTimer

시작과 동시에 On되고, 입력신호가 꺼지면 정해준 시간이 지난후 Off되는 타이머입니다.

void offTimer(입력소스, 타이머 번호, 경과시간)

입력 소스 : 타이머 시작입력
타이머 번호 : 사용할 타이머 번호
경과시간 : 타이머 mS(밀리초) 값입니다. 8은 0.8S를 뜻합니다.

void logic_proc()
{
  offTimer(X00,0,20); // 2Sec Off Timer 
  Y01 = Tstat[0];  // Watch Tvalue
}

onceTimer

시작과 동시에 On되고, 시간이 지난후 Off되는 일발성 타이머입니다.

void onceTimer(입력소스, 타이머 번호, 경과시간)

입력 소스 : 타이머 시작입력
타이머 번호 : 사용할 타이머 번호
경과시간 : 타이머 mS(밀리초) 값입니다. 8은 0.8S를 뜻합니다.

void logic_proc()
{
  onceTimer(X00,0,20); // 2Sec Once Timer 
  Y01 = Tstat[0];  // Watch Tvalue
}

rTimer

적산타이머입니다. on타이머와 유사합니다. 정해준 시간이 지나면 On됩니다. 단 중간에 입력신호가 Off되어도 타이머는 리셋되지 않고 기존상태를 유지합니다. 타이머를 리셋시키려면 Tvalue[타이머번호]와 Tstat[타이머번호]에 0을 넣어주어야 합니다. 즉 리셋은 수동으로 해야 합니다.

void rTimer(입력소스, 타이머 번호, 경과시간)

입력 소스 : 타이머 시작입력
타이머 번호 : 사용할 타이머 번호
경과시간 : 타이머 mS(밀리초) 값입니다.

Time1과 Time2의 합계가 경과시간에 도달하면 출력이 On됩니다.

#include "cfManagedBase.h"
 
uint16_t tempi;
 
void user_setup()
{
  Serial.begin(115200);
}
 
void loop() {
  Serial.print(Tvalue[0]);
  Serial.print("\n");
  delay(500);
}
 
void logic_proc()
{
  rTimer(X00,0,100);
  Y00 = X00;
  Y01 = Tstat[0];
}

카운터

Cstat[카운터번호] 배열에는 각 카운터의 상태가 저장됩니다. Cvalue[카운터번호]에는 각 카운터의 현재 증감중인 값이 저장됩니다.

#define counterMaxLimit 20
uint8_t Cstat[counterMaxLimit];  // Counter status
uint32_t Cvalue[counterMaxLimit];  // Counter Current Value

카운터 번호는 현재 20으로 지정되어 있습니다. (0~19까지 사용가능) 라이브러리 파일에 있는 counterMaxLimit를 수정하면 더 사용할 수 있습니다.

counter

들어오는 펄스의 갯수를 카운트해줍니다.

void counter(상승입력, 하강입력, 리셋입력, 카운터번호, 카운트 값)

상승 입력 : 이 신호가 들어오면 카운터가 1 증가됩니다.
하강 입력 : 이 신호가 들어오면 카운터가 1 감소됩니다.
리셋 입력 : 이 신호가 들어오면 카운터가 리셋됩니다.
카운터 번호 : 사용할 카운터 번호
카운트 값 : 카운트할 값, 16비트 부호없는 정수, 1~65535까지 사용가능
void logic_proc()
{
  // 상승 : 입력 X00
  // 하강 : 입력 X01
  // 리셋 : 입력 X02
  counter(X00,X01,X02,20); // 20번 X[0]입력이 들어오면 0번 카운터가 On됩니다.
  Y01 = Cstat[0];  // Watch Cvalue
}

만약 상승신호만 받고 싶다면, 하강신호 위치에 0을 써주세요.

void logic_proc()
{
  // 상승 : 입력 X00
  // 하강 : 무시
  // 리셋 : 입력 X02
  counter(X00,0,X02,20); // 20번 X[0]입력이 들어오면 0번 카운터가 On됩니다.
  Y01 = Cstat[0];  // Watch Cvalue
}

트리거

트리거(Trigger)란 입력 신호가 변화하는 시점에 단 한번만 실행처리를 하는 동작을 뜻합니다.

rTrig

상승신호 발생시 한번만 실행합니다.

uint8_t rTrig(입력, 트리거번호)

입력 : 이 신호의 입력상태를 체크합니다.
트리거 번호 : 사용할 트리거 번호 (0~19까지 사용가능) 이 숫자는 라이브러리에 있는 trigMaxLimet를 조정하면 더 늘릴 수 있습니다.

#include "cfManagedBase.h"
 
uint16_t tempi;
 
void user_setup()
{
  Serial.begin(115200);
}
 
void loop() {
  Serial.print(tempi);
  Serial.print("\n");
  delay(500);
}
 
void logic_proc()
{
  if (rTrig(X00,0)) tempi++; // X[0]가 0에서 1로 바뀌는 시점에 단 한번만 tempi++ (증가)를 수행합니다.
  Y00 = X00;
}

fTrig

하강신호 발생시 한번만 실행합니다.

uint8_t fTrig(입력, 트리거번호)

입력 : 이 신호의 입력상태를 체크합니다.
트리거 번호 : 사용할 트리거 번호 (0~19까지 사용가능) 이 숫자는 라이브러리에 있는 trigMaxLimet를 조정하면 더 늘릴 수 있습니다.

#include "cfManagedBase.h"
 
uint16_t tempi;
 
void user_setup()
{
  Serial.begin(115200);
}
 
void loop() {
  Serial.print(tempi);
  Serial.print("\n");
  delay(500);
}
 
void logic_proc()
{
  if (fTrig(X00,0)) tempi++; // X[0]가 1에서 0으로 바뀌는 시점에 단 한번만 tempi++ (증가)를 수행합니다.
  Y00 = X00;
}

ST언어처럼 사용

ST언어는 PLC의 기능을 레더로직(LD)대신 코딩으로 풀어낼 수 있는 언어입니다. 대부분의 고성능 PLC에는 ST언어가 내장되어 있습니다.

본 라이브러리를 사용해서 마치 고성능 PLC에 있는 ST언어를 쓰시는 것처럼 modular FADUINO를 사용하실 수 있습니다.

Modular FADUINO

modularfaduino/managedlibrary2/index.txt · 마지막으로 수정됨: 2024/10/29 02:59 저자 Comfile Technology