목차
ILOGICS 내장 명령어 설명서
ILOGICS 보드를 선택하면 별도 라이브러리를 설치하지 않고도 ILOGICS 내장 명령어를 사용할 수 있습니다.
내장 명령어를 사용하는 방법
- ILOGICS 보드 패키지를 설치합니다. (Arduino SDK)
- Arduino IDE의 도구 → 보드에서 사용할 보드를 선택합니다.
- 내장 명령어를 사용합니다.
내장 명령어 리스트
예제에 표시된 입출력 주소는 제품별로 다릅니다. 사용 중인 ILOGICS 제품의 보드 정의를 선택하고, 해당 제품의 핀맵에서 주소를 확인하십시오.
카테고리별 보기
| 카테고리 | 명령어 | 설명 |
|---|---|---|
| 디지털 입력 필터 | IdigitalRead() | 입력을 여러 번 연속으로 읽고, 모든 값이 같을 때만 상태를 갱신합니다. HIGH와 LOW가 섞이면 이전 안정 상태를 유지합니다. |
| Ibounce() | 입력의 ON·OFF 양방향에 채터링 제거 시간을 적용합니다. | |
| IbounceOn() | 입력이 OFF에서 ON으로 바뀔 때만 시간 필터를 적용합니다. | |
| IbounceOff() | 입력이 ON에서 OFF로 바뀔 때만 시간 필터를 적용합니다. | |
| 에지 검출 | Iup() | 입력이 OFF에서 ON으로 바뀌는 순간에만 true를 반환합니다. |
| Idown() | 입력이 ON에서 OFF로 바뀌는 순간에만 true를 반환합니다. |
|
| 상태 반전 | Ialt() | 입력 상승 순간마다 지정한 상태를 ON·OFF로 반전합니다. |
| 범위 변환 | Iscale() | 정수 입력값을 지정한 정수 범위로 변환합니다. |
| Iscalef() | 실수 입력값을 지정한 실수 범위로 변환합니다. | |
| 타이머 | Iton() | 입력이 설정 시간 동안 ON 상태를 유지하면 true를 반환합니다. |
| Itof() | 입력이 OFF로 바뀌고 설정 시간이 지나면 false를 반환합니다. |
|
| Itpl() | 입력이 ON으로 바뀌면 설정 시간 동안 true를 반환합니다. |
|
| Itmon() | 입력이 ON으로 바뀌면 설정 시간 동안 true를 반환하며, 동작 중 재입력해도 시간이 연장되지 않습니다. |
|
| Itmr() | 입력이 ON인 시간을 누적하고 reset 입력으로 누적 시간을 초기화합니다. |
|
| 타이머 상태 | IgetTime() | 지정한 타이머의 현재 경과시간을 반환합니다. |
| IgetState() | 지정한 타이머의 현재 출력 상태를 반환합니다. | |
| 콜백 타이머 | ItimerSet() | 주기와 콜백 함수 또는 사용할 하드웨어 타이머를 설정합니다. |
| ItimerStart() | 설정한 콜백 타이머를 시작합니다. | |
| ItimerStop() | 기본 또는 지정한 콜백 타이머를 정지합니다. | |
| ItimerStopAll() | 실행 중인 콜백 타이머를 모두 정지합니다. | |
| ItimerState() | 기본 또는 지정한 콜백 타이머의 실행 상태를 반환합니다. | |
| 카운터 | Ictu() | 입력의 상승 횟수를 세고 설정값에 도달하면 true를 반환합니다. |
| Ictd() | 설정값을 불러온 후 입력 상승마다 현재값을 감소시킵니다. | |
| Ictud() | 증가 입력과 감소 입력을 하나의 카운터에서 처리합니다. | |
| IgetCount() | 지정한 카운터의 현재값을 반환합니다. | |
| IsetCount() | 지정한 카운터의 현재값을 변경합니다. | |
| IctudDownState() | Up/Down 카운터의 하한 완료 상태를 반환합니다. | |
| 데이터 버퍼 | FIFO() | 저장한 순서대로 16비트 데이터를 꺼냅니다. |
| FILO() | 나중에 저장한 16비트 데이터를 먼저 출력합니다. | |
| 아날로그 입력 | analogReadInit() | 아날로그 입력 모듈의 샘플링 속도를 설정합니다. |
| analogRead() | 지정한 채널의 원시 아날로그값을 읽습니다. | |
| analogReadAvg() | 여러 입력값의 정수 평균을 반환합니다. | |
| analogReadAvgf() | 여러 입력값의 실수 평균을 반환합니다. | |
| 아날로그 입력 필터 | IanalogFilter() | 전달한 값을 이동평균 방식으로 처리합니다. |
| 아날로그 범위 변환 | IanalogRead() | 아날로그 입력값을 지정한 정수 범위로 변환합니다. |
| IanalogReadf() | 아날로그 입력값을 지정한 실수 범위로 변환합니다. | |
| 4~20mA 입력 | analogRead2() | 지정한 채널의 4~20mA 보정 입력값을 읽습니다. |
| analogRead2Avg() | 4~20mA 입력값의 정수 평균을 반환합니다. | |
| analogRead2Avgf() | 4~20mA 입력값의 실수 평균을 반환합니다. | |
| 4~20mA 범위 변환 | IanalogRead2() | 4~20mA 입력값을 지정한 정수 범위로 변환합니다. |
| IanalogRead2f() | 4~20mA 입력값을 지정한 실수 범위로 변환합니다. | |
| 온도 입력 | ntcRead() | NTC 3950 10kΩ 센서의 온도를 0.1℃ 단위 정수로 반환합니다. |
| ntcReadf() | NTC 3950 10kΩ 센서의 온도를 ℃ 단위 실수로 반환합니다. | |
| pt100Read() | PT100 센서의 온도를 0.1℃ 단위 정수로 반환합니다. | |
| 아날로그 출력 | analogWriteInit() | 출력 타이머의 분해능과 분주비를 설정합니다. |
| analogWriteFreq() | 지정한 출력 채널의 PWM 주파수를 설정합니다. | |
| analogWriteMax() | 지정한 출력 채널에서 사용할 수 있는 최댓값을 반환합니다. | |
| IanalogWriteInit() | MPAINO 아날로그 출력의 최댓값·최솟값과 모드를 설정합니다. | |
| IanalogWrite() | 사용자 정수값을 아날로그 출력 범위로 변환하여 출력합니다. | |
| IanalogWritef() | 사용자 실수값을 아날로그 출력 범위로 변환하여 출력합니다. | |
| 4~20mA 출력 | analogWrite2() | 지정한 채널에 4~20mA 변환용 원시값을 출력합니다. |
| IanalogWrite2() | 사용자 정수값을 4~20mA 출력 범위로 변환합니다. | |
| IanalogWrite2f() | 사용자 실수값을 4~20mA 출력 범위로 변환합니다. | |
| PWM 출력 | PWM() | 지정한 핀에 8비트 또는 16비트 PWM을 출력합니다. |
| FDPWM() | 주파수와 Duty 비율을 지정하여 PWM을 출력합니다. | |
| PWMOFF() | 지정한 핀의 PWM 출력을 정지하거나 다시 허용합니다. | |
| PWM_RESET() | 코어가 관리하는 PWM 상태를 모두 초기화합니다. | |
| 펄스 출력 | NPWM_BEGIN() | 주파수·Duty·출력 개수를 지정하여 펄스 출력을 준비합니다. |
| NPWM() | 준비한 개수만큼 펄스를 출력합니다. | |
| PID 제어 | IpidSet() | PID 계수, 계산 주기와 출력 범위를 설정합니다. |
| IpidRun() | 현재값과 설정값을 사용해 PID 출력을 계산합니다. | |
| IpidReset() | PID의 적분값과 내부 상태를 초기화합니다. | |
| IpidReverse() | PID의 정동작 또는 역동작을 선택합니다. | |
| IpidItermLimit() | PID 적분항의 최솟값과 최댓값을 제한합니다. | |
| IpidOutput() | 마지막으로 계산된 PID 출력값을 반환합니다. | |
| TM1637 FND | IsegBegin() | TM1637 FND의 CLK·DIO 핀과 장치 번호를 설정합니다. |
| IsegBrightness() | 화면 밝기와 표시 상태를 설정합니다. | |
| IsegClear() | FND 화면을 지웁니다. | |
| IsegWrite() | 세그먼트 데이터를 지정 위치에 출력합니다. | |
| IsegDecimal() | 정수를 10진수 형식으로 표시합니다. | |
| IsegHex() | 정수를 16진수 형식으로 표시합니다. | |
| IsegEncodeDigit() | 숫자 한 자리를 세그먼트 데이터로 변환합니다. | |
| 문자 LCD | IclcdBegin() | PCF8574 문자 LCD의 주소와 화면 크기를 설정합니다. |
| IclcdClear() | LCD 화면을 지웁니다. | |
| IclcdHome() | 커서를 첫 번째 위치로 이동합니다. | |
| IclcdSetCursor() | 커서를 지정한 열과 행으로 이동합니다. | |
| IclcdDisplay() | LCD 표시를 켜거나 끕니다. | |
| IclcdCursor() | 커서 표시를 켜거나 끕니다. | |
| IclcdBlink() | 커서 깜박임을 켜거나 끕니다. | |
| IclcdBacklight() | LCD 백라이트를 켜거나 끕니다. | |
| IclcdScrollLeft() | 표시 내용을 왼쪽으로 한 칸 이동합니다. | |
| IclcdScrollRight() | 표시 내용을 오른쪽으로 한 칸 이동합니다. | |
| IclcdTextDirection() | 문자가 입력되는 방향을 설정합니다. | |
| IclcdAutoscroll() | 자동 스크롤을 켜거나 끕니다. | |
| IclcdCreateChar() | 사용자 정의 문자를 등록합니다. | |
| IclcdWrite() | 문자 코드 또는 사용자 정의 문자를 출력합니다. | |
| IclcdCommand() | LCD 제어 명령을 직접 전송합니다. | |
| IclcdPrint() | 문자열 또는 숫자를 LCD에 출력합니다. | |
| RTC | IrtcBegin() | DS3231 RTC 연결을 확인하고 사용을 시작합니다. |
| IrtcRead() | RTC의 날짜와 시간을 읽습니다. | |
| IrtcSet() | RTC의 날짜와 시간을 설정합니다. | |
| IrtcUnixTime() | 현재 시간을 Unix 시간으로 반환합니다. | |
| IrtcGetTemperature() | RTC 내부 온도를 반환합니다. | |
| IrtcTimeValid() | RTC 시간이 신뢰 가능한 상태인지 확인합니다. | |
| IrtcClearOscillatorStopFlag() | 발진 정지 상태 표시를 초기화합니다. | |
| IrtcSetAlarm1() | 초 단위를 포함하는 알람 1을 설정합니다. | |
| IrtcSetAlarm2() | 분 단위의 알람 2를 설정합니다. | |
| IrtcAlarmEnable() | 지정한 알람을 켜거나 끕니다. | |
| IrtcAlarmEnabled() | 지정한 알람의 활성 상태를 확인합니다. | |
| IrtcAlarmTriggered() | 알람 발생 여부를 확인하고 필요하면 상태를 지웁니다. | |
| IrtcSquareWave() | RTC의 사각파 출력을 설정합니다. | |
| Irtc32kHz() | RTC의 32kHz 출력을 켜거나 끕니다. | |
| 디버그 | debugStart() | 디버그 출력에 사용할 포트와 보레이트를 설정합니다. |
| debugStop() | 디버그 출력을 중지합니다. | |
| debugState() | 디버그 출력의 활성 상태를 반환합니다. | |
| debug() | 디버그가 활성화된 경우에만 값을 출력합니다. | |
| debugln() | 디버그 값을 출력한 뒤 줄을 바꿉니다. | |
| Watchdog | WDT_ENABLE() | Watchdog 제한시간을 설정하고 동작을 시작합니다. |
| WDT_DISABLE() | Watchdog 동작을 중지합니다. | |
| WDT() | 제한시간이 끝나기 전에 Watchdog를 갱신합니다. | |
| 고속카운터 | TCNTSETUP() | 타이머 외부 클럭 입력과 32비트 확장 모드를 설정합니다. |
| TCNTOUT() | 32비트 확장 모드의 누적 상위 오버플로 값을 반환합니다. | |
| Modbus RTU Slave | ImodbusRTUMem() | Slave가 사용할 M·D 메모리 크기를 설정합니다. |
| ImodbusRTUAdr() | M·D 메모리의 시작 주소를 설정합니다. | |
| ImodbusRTUInit() | 통신 포트, 국번과 보레이트를 설정합니다. | |
| ImodbusRTU() | 수신 요청을 확인하고 Slave 응답을 처리합니다. | |
| Modbus RTU Master | ImodbusRTUmasterInit() | Master 통신 포트와 보레이트를 설정합니다. |
| ImodbusRTUmaster() | 하나의 Master 요청을 즉시 실행합니다. | |
| ImodbusRTUmasterAdd() | 반복 실행할 Master 요청을 등록합니다. | |
| ImodbusRTUmasterRun() | 등록 요청 또는 지정한 단일 요청을 실행합니다. | |
| LS산전 Cnet Slave | ICnetMem() | Cnet Slave가 사용할 M·D·R 메모리 크기를 설정합니다. |
| ICnetAdr() | M·D·R 메모리의 시작 주소를 설정합니다. | |
| ICnetInit() | 통신 포트, 국번과 보레이트를 설정합니다. | |
| ICnet() | 수신 요청을 확인하고 Cnet Slave 응답을 처리합니다. | |
| Mitsubishi MC Protocol | IMcMem() | MC Protocol에서 사용할 X·Y·M·D 메모리 크기를 설정합니다. |
| IMcAdr() | X·Y·M·D 메모리의 시작 주소를 설정합니다. | |
| IMcInit() | 통신 포트, 국번과 보레이트를 설정합니다. | |
| IMcProtocol() | 수신 요청을 확인하고 MC Protocol 응답을 처리합니다. |
디지털 입력 필터
| 명령어 형식 | 반환값 | 사용 기준 |
|---|---|---|
| IdigitalRead(pin, samples) | 필터링된 HIGH 또는 LOW | 모든 샘플이 같을 때만 상태를 갱신하고, 값이 섞이면 이전 안정 상태를 유지 |
| Ibounce(pin, ms) | 안정화된 입력 상태 | ON과 OFF가 설정 시간 동안 유지될 때 상태 변경 |
| IbounceOn(pin, ms) | ON 방향이 지연된 입력 상태 | OFF→ON 방향만 시간 필터 적용 |
| IbounceOff(pin, ms) | OFF 방향이 지연된 입력 상태 | ON→OFF 방향만 시간 필터 적용 |
IdigitalRead()는 짧은 시간 동안 반복 샘플링하는 방식이고, Ibounce()는 millis() 기준으로 입력이 안정된 시간을 확인하는 방식입니다. 기계식 스위치에는 보통 Ibounce()가 알맞습니다.
에지 검출
| 명령어 형식 | 반환값 | 설명 |
|---|---|---|
| Iup(id, input) | 상승 순간에만 true | OFF에서 ON으로 바뀌는 순간을 한 번 검출 |
| Idown(id, input) | 하강 순간에만 true | ON에서 OFF로 바뀌는 순간을 한 번 검출 |
id는 각 에지 검출 상태를 구분합니다. 서로 다른 입력에 같은 id를 사용하면 상태가 섞일 수 있습니다.
상태 반전
| 명령어 형식 | 반환값 | 설명 |
|---|---|---|
| Ialt(input, state) | 없음 | 입력 상승 순간마다 state 값을 ON/OFF 반전 |
다음 예제는 MPAINO-8A8R(T)의 첫 입력 0과 첫 출력 64를 사용합니다.
bool lampState = false; void setup() {} void loop() { bool button = Ibounce(0, 30); Ialt(button, lampState); digitalWrite(64, lampState); // MPAINO 첫 번째 디지털 출력 예시 }
범위 변환
| 명령어 형식 | 반환값 | 설명 |
|---|---|---|
| Iscale(x, inMin, inMax, outMin, outMax) | int32_t | 정수 입력 범위를 원하는 정수 범위로 변환 |
| Iscalef(x, inMin, inMax, outMin, outMax) | float | 소수점을 유지하여 실수 범위 변환 |
타이머
| 명령어 형식 | 동작 |
|---|---|
| Iton(id, state, ms) | 입력이 설정 시간 동안 ON이면 출력 ON |
| Itof(id, state, ms) | 입력이 OFF된 뒤 설정 시간이 지나면 출력 OFF |
| Itpl(id, state, ms) | 입력 상승 순간부터 설정 시간 동안 펄스 출력 |
| Itmon(id, state, ms) | 실행 중 다시 입력되어도 연장되지 않는 단안정 펄스 |
| Itmr(id, state, ms, reset) | 입력 ON 시간을 누적하며 reset으로 초기화 |
PLC 스타일 타이머는 delay()처럼 프로그램을 멈추지 않습니다. 대신 loop()가 반복될 때마다 계속 호출해야 합니다. 같은 id를 서로 다른 타이머에 중복 사용하지 마십시오.
다음 예제는 MPAINO-8A8R(T)의 첫 입력 0과 첫 출력 64를 사용합니다.
void setup() {} void loop() { bool run = Ibounce(0, 30); bool delayedOutput = Iton(0, run, 1000); digitalWrite(64, delayedOutput); }
타이머 상태
| 명령어 형식 | 반환값 | 설명 |
|---|---|---|
| IgetTime(id) | unsigned long | 지정한 타이머의 현재 경과시간 반환 |
| IgetState(id) | bool | 지정한 타이머의 현재 출력 상태 반환 |
콜백 타이머
| 명령어 형식 | 설명 |
|---|---|
| ItimerSet(intervalMs, callback) | 기본 타이머의 실행 주기와 콜백 함수 설정 |
| ItimerSet(timerNo, intervalMs, callback) | 하드웨어 타이머 번호를 지정하여 설정 |
| ItimerStart(), ItimerStart(timerNo) | 콜백 타이머 시작 |
| ItimerStop(), ItimerStop(timerNo) | 콜백 타이머 정지 |
| ItimerStopAll() | 콜백 타이머 전체 정지 |
| ItimerState(), ItimerState(timerNo) | 실행 상태 확인 |
콜백 함수는 인터럽트 안에서 실행됩니다. 콜백에서는 플래그나 짧은 카운트만 변경하고 delay(), Serial 출력, I²C, SPI와 긴 계산을 사용하지 마십시오.
volatile bool taskFlag = false; void onTimer() { taskFlag = true; } void setup() { ItimerSet(100, onTimer); ItimerStart(); } void loop() { if (taskFlag) { taskFlag = false; // 시간이 걸리는 실제 작업은 loop()에서 실행합니다. } }
카운터
| 명령어 형식 | 설명 |
|---|---|
| Ictu(id, CU, RESET, PV) | CU 상승 에지를 세어 PV에 도달하면 ON |
| Ictd(id, CD, LOAD, PV) | LOAD로 값을 불러온 뒤 CD 상승 에지마다 감소 |
| Ictud(id, CU, CD, RESET, LOAD, PV) | 증가와 감소를 함께 처리 |
| IgetCount(id), IsetCount(id, value) | 현재 카운트값 조회와 변경 |
| IctudDownState(id) | Up/Down 카운터의 하한 완료 상태 확인 |
카운터 명령어는 loop()에서 계속 호출합니다. id는 다른 카운터와 중복하지 않게 배정합니다.
데이터 버퍼
아날로그 입력
| 명령어 형식 | 반환값·용도 |
|---|---|
| analogReadInit(sps) | MPAINO ADS1118 아날로그 모듈의 샘플링 속도 설정 |
| analogRead(ch) | 선택 채널의 원시 아날로그 값 읽기 |
| analogReadAvg(ch, samples), analogReadAvgf(ch, samples) | 정수 또는 실수 이동평균 입력 |
아날로그 입력 필터
| 명령어 형식 | 반환값·용도 |
|---|---|
| IanalogFilter(id, raw, samples) | 사용자가 전달한 임의 값을 이동평균 처리 |
아날로그 범위 변환
| 명령어 형식 | 반환값·용도 |
|---|---|
| IanalogRead(ch, min, max), IanalogReadf(ch, min, max) | 입력을 사용자 정수·실수 범위로 변환 |
4~20mA 입력
| 명령어 형식 | 반환값·용도 |
|---|---|
| analogRead2(ch) | 4~20mA 보정 입력값 읽기 |
| analogRead2Avg(ch, samples), analogRead2Avgf(ch, samples) | 4~20mA 입력값의 정수 또는 실수 평균 반환 |
4~20mA 범위 변환
| 명령어 형식 | 반환값·용도 |
|---|---|
| IanalogRead2(ch, min, max), IanalogRead2f(ch, min, max) | 4~20mA 입력을 사용자 범위로 변환 |
MPAINO에서는 장착된 아날로그 입력 모듈과 딥스위치의 전압·전류 범위를 먼저 확인합니다. 샘플링 속도를 높이면 응답은 빨라지지만 노이즈와 측정 특성이 달라질 수 있습니다.
void setup() { Serial.begin(115200); analogReadInit(IANALOG_SPS_64); } void loop() { int32_t raw = analogReadAvg(0, 8); float value = Iscalef(raw, 0.0, 32767.0, 0.0, 100.0); Serial.println(value); }
온도 입력
| 명령어 형식 | 반환값 | 대상 |
|---|---|---|
| ntcRead(ch) | 0.1℃ 단위 정수 | NTC 3950 10kΩ 온도센서 입력 |
| ntcReadf(ch) | ℃ 단위 float | NTC 3950 10kΩ 온도센서 입력 |
| pt100Read(ch) | 0.1℃ 단위 정수 | MPAINO PT100 입력 모듈 |
NTC와 PT100은 센서 종류와 입력 회로가 다릅니다. 서로 바꾸어 사용하지 말고 선택 제품에 해당 입력 기능이 있는지 확인하십시오.
아날로그 출력
| 명령어 형식 | 설명 |
|---|---|
| analogWriteInit(ch, top, prescaler) | PWM 타이머의 분해능과 분주비 설정 |
| analogWriteFreq(ch, hz), analogWriteMax(ch) | PWM 주파수 설정과 현재 최댓값 확인 |
| IanalogWriteInit(ch, max, min, mode) | MPAINO 아날로그 출력 범위 초기화 |
| IanalogWrite(ch, min, max, value), IanalogWritef(...) | 정수·실수 사용자값을 아날로그 출력 범위로 변환 |
4~20mA 출력
| 명령어 형식 | 설명 |
|---|---|
| analogWrite2(ch, value) | 지정한 채널에 4~20mA 변환용 원시값 출력 |
| IanalogWrite2(ch, min, max, value), IanalogWrite2f(...) | 정수·실수 사용자값을 4~20mA 출력 범위로 변환 |
PWM 출력
| 명령어 형식 | 설명 |
|---|---|
| PWM(pin, value, bit16) | 8비트 또는 16비트 PWM 출력 |
| FDPWM(pin, hz, duty) | 주파수와 Duty 비율을 지정한 PWM 출력 |
| PWMOFF(pin, off), PWM_RESET() | 개별 PWM 정지 또는 전체 초기화 |
펄스 출력
| 명령어 형식 | 설명 |
|---|---|
| NPWM_BEGIN(pin, hz, duty, count), NPWM(pin) | 지정한 개수만큼 펄스 출력 |
PWM, 고속펄스, analogWrite()와 콜백 타이머는 같은 하드웨어 타이머를 공유할 수 있습니다. 여러 기능을 함께 사용할 때는 해당 제품의 타이머 지원표를 확인하십시오.
PID 제어
| 명령어 형식 | 설명 |
|---|---|
| IpidSet(id, kp, ki, kd, sampleMs, outMin, outMax) | PID 계수, 계산 주기와 출력 범위 설정 |
| IpidRun(id, pv, sv) | 현재값 PV와 설정값 SV로 출력 계산 |
| IpidReset(id) | 내부 상태 초기화 |
| IpidReverse(id, reverse) | 정동작 또는 역동작 선택 |
| IpidItermLimit(id, min, max) | 적분항 범위 제한 |
| IpidOutput(id) | 마지막 출력값 확인 |
void setup() { IpidSet(0, 2.0, 0.5, 0.1, 100, 0, 100); } void loop() { float pv = ntcReadf(0); float output = IpidRun(0, pv, 50.0); IanalogWritef(0, 0.0, 100.0, output); }
PID 출력은 계산값일 뿐 안전장치가 아닙니다. 센서 단선, 과온, 출력 고착과 비상정지는 별도의 안전회로로 처리하십시오.
TM1637 FND
| 대상 | 주요 명령어 | 설명 |
|---|---|---|
| TM1637 4자리 FND | IsegBegin(), IsegBrightness(), IsegDecimal(), IsegHex(), IsegClear() | 최대 7개 장치를 device 번호로 구분 |
문자 LCD
| 대상 | 주요 명령어 | 설명 |
|---|---|---|
| PCF8574 문자 LCD | IclcdBegin(), IclcdSetCursor(), IclcdPrint(), IclcdClear() | 최대 4개 LCD를 device 번호로 구분 |
RTC
| 대상 | 주요 명령어 | 설명 |
|---|---|---|
| DS3231 RTC | IrtcBegin(), IrtcRead(), IrtcSet(), IrtcGetTemperature(), IrtcSetAlarm1() | 날짜·시간, 온도, 알람과 주파수 출력 사용 |
표시 장치와 RTC는 각각의 Begin 명령어를 먼저 호출합니다. I²C 주소, 연결 핀과 다른 기능의 공유 여부를 확인하십시오.
디버그
| 명령어 형식 | 설명 |
|---|---|
| debugStart(), debugStart(baud), debugStart(serial, baud) | Debug 출력 시작과 포트 선택 |
| debug(), debugln() | Debug가 활성화된 경우에만 값 출력 |
| debugStop(), debugState() | Debug 중지와 상태 확인 |
Watchdog
| 명령어 형식 | 설명 |
|---|---|
| WDT_ENABLE(time) | Watchdog 제한시간 설정 및 활성화 |
| WDT(), WDT_DISABLE() | Watchdog 리셋과 비활성화 |
Watchdog를 활성화한 뒤 WDT() 호출이 늦어지면 보드가 재시작됩니다. 통신 대기와 긴 반복문의 최악 실행시간을 먼저 확인하십시오.
고속카운터
| 명령어 형식 | 설명 |
|---|---|
| TCNTSETUP(timerNo, bit32) | 타이머 외부 클럭 입력과 32비트 확장 모드 설정 |
| TCNTOUT(timerNo) | 32비트 확장 모드에서 누적된 상위 오버플로 횟수 확인 |
현재 타이머 외부 클럭 방식의 전용 고속카운터 지원 제품은 MPINO-8A8R과 MPINO-16A8R8T입니다. 다른 제품은 제품별 인터럽트 입력을 확인해 attachInterrupt() 방식을 사용합니다.
Modbus RTU Slave
| 초기 설정 | loop() 실행 명령어 |
|---|---|
| ImodbusRTUMem(), ImodbusRTUAdr(), ImodbusRTUInit() | ImodbusRTU() |
void setup() { ImodbusRTUMem(128, 64); ImodbusRTUAdr(0, 0); ImodbusRTUInit(Serial2, 1, 9600); } void loop() { ImodbusRTU(); }
Modbus RTU Master
LS산전 Cnet Slave
| 초기 설정 | loop() 실행 명령어 |
|---|---|
| ICnetMem(), ICnetAdr(), ICnetInit() | ICnet() |
Mitsubishi MC Protocol
| 초기 설정 | loop() 실행 명령어 |
|---|---|
| IMcMem(), IMcAdr(), IMcInit() | IMcProtocol() |
제품별 RS-232, RS-485와 UART의 Serial 번호가 다를 수 있습니다. 통신 전에 포트 역할, 전기 규격, 보레이트, 국번, 종단저항과 딥스위치 설정을 확인하십시오.
통합 입출력 예제
아래 예제는 MPAINO의 첫 번째 디지털 입력 0과 첫 번째 디지털 출력 64를 사용합니다. MPINO에서는 선택 모델의 실제 Arduino 핀 번호로 바꾸어야 합니다.
const uint8_t inputChannel = 0; const uint8_t outputChannel = 64; void setup() {} void loop() { bool stableInput = Ibounce(inputChannel, 30); bool delayedOutput = Iton(0, stableInput, 1000); digitalWrite(outputChannel, delayedOutput); }
문제가 생겼을 때
- 명령어를 찾을 수 없음: ILOGICS 보드 패키지 설치와 제품 보드 선택을 확인합니다.
- 입출력이 반응하지 않음: MPINO 핀 번호와 MPAINO 논리 채널을 혼동하지 않았는지 확인합니다.
- 타이머·카운터가 멈춤: 명령어를
loop()에서 계속 호출하는지, 같은id를 중복 사용하지 않았는지 확인합니다. - PWM 주파수가 이상함: 같은 하드웨어 타이머를 다른 PWM·펄스·콜백 기능이 사용 중인지 확인합니다.
- 아날로그값이 다름: 전압·전류·NTC·PT100 딥스위치와 채널, 샘플링 속도를 확인합니다.
- 통신이 되지 않음: Serial 포트, RS-232/RS-485 방식, 보레이트, 국번, 패리티와 배선을 확인합니다.
- 보드가 반복 재시작됨: Watchdog 제한시간보다 오래 걸리는 코드가 있는지 확인합니다.
필수 주의사항
- 과거
#include <ILIB.h>,tempRead(),Ipt100Read()예제를 현재 내장 명령어와 혼용하지 않습니다. - 전원과 배선을 변경할 때는 장비 전원을 끄고 극성, COM, 입력전압과 부하전원을 확인합니다.
- 릴레이와 트랜지스터 출력의 전기적 특성 및 허용전류를 구분합니다.
- 프로그램 출력만 비상정지나 과전류 보호수단으로 사용하지 않습니다.
- 제품별 핀맵, 전기 사양과 지원 타이머는 해당 제품 설명서를 최종 기준으로 확인합니다.
