====== 라이브러리 추가 설명 ======
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를 뜻합니다. |
{{ :faduino:modularfaduino:managedlibrary2:ton.png?nolink |}}
void logic_proc()
{
onTimer(X00,0,20); // 2Sec On Timer
Y01 = Tstat[0]; // Watch Tvalue
}
===== offTimer =====
시작과 동시에 On되고, 입력신호가 꺼지면 정해준 시간이 지난후 Off되는 타이머입니다.
''void offTimer(입력소스, 타이머 번호, 경과시간) ''
| 입력 소스 : 타이머 시작입력 |
| 타이머 번호 : 사용할 타이머 번호 |
| 경과시간 : 타이머 mS(밀리초) 값입니다. 8은 0.8S를 뜻합니다. |
{{ :modularfaduino:managedlibrary2:toff.png?nolink |}}
void logic_proc()
{
offTimer(X00,0,20); // 2Sec Off Timer
Y01 = Tstat[0]; // Watch Tvalue
}
===== onceTimer =====
시작과 동시에 On되고, 시간이 지난후 Off되는 일발성 타이머입니다.
''void onceTimer(입력소스, 타이머 번호, 경과시간) ''
| 입력 소스 : 타이머 시작입력 |
| 타이머 번호 : 사용할 타이머 번호 |
| 경과시간 : 타이머 mS(밀리초) 값입니다. 8은 0.8S를 뜻합니다. |
{{ :faduino:modularfaduino:managedlibrary2:tonce.png?nolink |}}
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됩니다.
{{ :faduino:modularfaduino:managedlibrary2:rtimer.png?nolink |}}
#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
}
{{ :faduino:modularfaduino:managedlibrary2:counter.png?nolink |}}
====== 트리거 ======
트리거(Trigger)란 입력 신호가 변화하는 시점에 단 한번만 실행처리를 하는 동작을 뜻합니다.
===== rTrig =====
상승신호 발생시 한번만 실행합니다.
''uint8_t rTrig(입력, 트리거번호) ''
| 입력 : 이 신호의 입력상태를 체크합니다.|
| 트리거 번호 : 사용할 트리거 번호 (0~19까지 사용가능) 이 숫자는 라이브러리에 있는 trigMaxLimet를 조정하면 더 늘릴 수 있습니다. |
{{ :faduino:modularfaduino:managedlibrary2:rtrig.png?nolink |}}
#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를 조정하면 더 늘릴 수 있습니다. |
{{ :faduino:modularfaduino:managedlibrary2:ftrig.png?nolink |}}
#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;
}
[[..:index|Modular FADUINO]]