사용자 도구

사이트 도구


commands:builtin

문서의 이전 판입니다!


ILOGICS 내장 명령어 설명서

ILOGICS 보드에서는 ILOGICS에서 제작한 내장 명령어를 사용할 수 있습니다. 별도의 라이브러리 설치 없이 ILOGICS 보드를 선택하면 사용할 수 있습니다.

내장 명령어를 사용하는 방법

  1. ILOGICS 보드 패키지를 설치합니다. (Arduino SDK)
  2. Arduino IDE에서 도구 → 보드에서 사용하는 보드를 선택합니다.
  3. 내장 명령어를 사용합니다.

내장 명령어 리스트

카테고리 명령어 설명
디지털 입력 필터 IdigitalRead() 입력을 여러 번 읽어 짧은 노이즈를 줄입니다.
디지털 입력 필터 Ibounce() 입력의 ON·OFF 양방향에 채터링 제거 시간을 적용합니다.
디지털 입력 필터 IbounceOn() 입력이 OFF에서 ON으로 바뀔 때만 시간 필터를 적용합니다.
디지털 입력 필터 IbounceOff() 입력이 ON에서 OFF로 바뀔 때만 시간 필터를 적용합니다.
디지털 출력 초기화 digitalReset() 코어가 관리하는 디지털 출력 상태를 초기화합니다.
에지 검출 Iup() 입력이 OFF에서 ON으로 바뀌는 순간에만 true를 반환합니다.
에지 검출 Idown() 입력이 ON에서 OFF로 바뀌는 순간에만 true를 반환합니다.
상태 반전 Ialt() 입력 상승 순간마다 지정한 상태를 ON·OFF로 반전합니다.
범위 변환 Iscale() 정수 입력값을 지정한 정수 범위로 변환합니다.
범위 변환 Iscalef() 실수 입력값을 지정한 실수 범위로 변환합니다.
타이머 Iton() (On Delay Timer) 조건이 일정 시간 동안 ON이 되어야 true를 반환합니다.
타이머 Itof() (Off Delay Timer) 조건이 OFF된 후 일정 시간이 지나면 false를 반환합니다.
타이머 Itpl() (Pulse Timer) 조건이 ON되는 순간부터 설정 시간 동안 true를 반환합니다.
타이머 Itmon() (Monostable Timer) 동작 중 재입력되어도 시간이 연장되지 않는 펄스를 출력합니다.
타이머 Itmr() (Retentive Timer) 조건이 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 보정 입력값을 읽습니다.
4~20mA 입력 analogRead2Avg() 4~20mA 입력값의 정수 평균을 반환합니다.
4~20mA 입력 analogRead2Avgf() 4~20mA 입력값의 실수 평균을 반환합니다.
4~20mA 범위 변환 IanalogRead2() 4~20mA 입력값을 지정한 정수 범위로 변환합니다.
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 변환용 원시값을 출력합니다.
4~20mA 출력 IanalogWrite2() 사용자 정수값을 4~20mA 출력 범위로 변환합니다.
4~20mA 출력 IanalogWrite2f() 사용자 실수값을 4~20mA 출력 범위로 변환합니다.
PWM 출력 PWM() 지정한 핀에 8비트 또는 16비트 PWM을 출력합니다.
PWM 출력 FDPWM() 주파수와 Duty 비율을 지정하여 PWM을 출력합니다.
펄스 출력 NPWM_BEGIN() 주파수·Duty·출력 개수를 지정하여 펄스 출력을 준비합니다.
펄스 출력 NPWM() 준비한 개수만큼 펄스를 출력합니다.
PWM 출력 PWMOFF() 지정한 핀의 PWM 출력을 정지하거나 다시 허용합니다.
PWM 출력 PWM_RESET() 코어가 관리하는 PWM 상태를 모두 초기화합니다.
PID 제어 IpidSet() PID 계수, 계산 주기와 출력 범위를 설정합니다.
PID 제어 IpidRun() 현재값과 설정값을 사용해 PID 출력을 계산합니다.
PID 제어 IpidReset() PID의 적분값과 내부 상태를 초기화합니다.
PID 제어 IpidReverse() PID의 정동작 또는 역동작을 선택합니다.
PID 제어 IpidItermLimit() PID 적분항의 최솟값과 최댓값을 제한합니다.
PID 제어 IpidOutput() 마지막으로 계산된 PID 출력값을 반환합니다.
TM1637 FND IsegBegin() TM1637 FND의 CLK·DIO 핀과 장치 번호를 설정합니다.
TM1637 FND IsegBrightness() 화면 밝기와 표시 상태를 설정합니다.
TM1637 FND IsegClear() FND 화면을 지웁니다.
TM1637 FND IsegWrite() 세그먼트 데이터를 지정 위치에 출력합니다.
TM1637 FND IsegDecimal() 정수를 10진수 형식으로 표시합니다.
TM1637 FND IsegHex() 정수를 16진수 형식으로 표시합니다.
TM1637 FND IsegEncodeDigit() 숫자 한 자리를 세그먼트 데이터로 변환합니다.
문자 LCD IclcdBegin() PCF8574 문자 LCD의 주소와 화면 크기를 설정합니다.
문자 LCD IclcdClear() LCD 화면을 지웁니다.
문자 LCD IclcdHome() 커서를 첫 번째 위치로 이동합니다.
문자 LCD IclcdSetCursor() 커서를 지정한 열과 행으로 이동합니다.
문자 LCD IclcdDisplay() LCD 표시를 켜거나 끕니다.
문자 LCD IclcdCursor() 커서 표시를 켜거나 끕니다.
문자 LCD IclcdBlink() 커서 깜박임을 켜거나 끕니다.
문자 LCD IclcdBacklight() LCD 백라이트를 켜거나 끕니다.
문자 LCD IclcdScrollLeft() 표시 내용을 왼쪽으로 한 칸 이동합니다.
문자 LCD IclcdScrollRight() 표시 내용을 오른쪽으로 한 칸 이동합니다.
문자 LCD IclcdTextDirection() 문자가 입력되는 방향을 설정합니다.
문자 LCD IclcdAutoscroll() 자동 스크롤을 켜거나 끕니다.
문자 LCD IclcdCreateChar() 사용자 정의 문자를 등록합니다.
문자 LCD IclcdWrite() 문자 코드 또는 사용자 정의 문자를 출력합니다.
문자 LCD IclcdCommand() LCD 제어 명령을 직접 전송합니다.
문자 LCD IclcdPrint() 문자열 또는 숫자를 LCD에 출력합니다.
RTC IrtcBegin() DS3231 RTC 연결을 확인하고 사용을 시작합니다.
RTC IrtcRead() RTC의 날짜와 시간을 읽습니다.
RTC IrtcSet() RTC의 날짜와 시간을 설정합니다.
RTC IrtcUnixTime() 현재 시간을 Unix 시간으로 반환합니다.
RTC IrtcGetTemperature() RTC 내부 온도를 반환합니다.
RTC IrtcTimeValid() RTC 시간이 신뢰 가능한 상태인지 확인합니다.
RTC IrtcClearOscillatorStopFlag() 발진 정지 상태 표시를 초기화합니다.
RTC IrtcSetAlarm1() 초 단위를 포함하는 알람 1을 설정합니다.
RTC IrtcSetAlarm2() 분 단위의 알람 2를 설정합니다.
RTC IrtcAlarmEnable() 지정한 알람을 켜거나 끕니다.
RTC IrtcAlarmEnabled() 지정한 알람의 활성 상태를 확인합니다.
RTC IrtcAlarmTriggered() 알람 발생 여부를 확인하고 필요하면 상태를 지웁니다.
RTC IrtcSquareWave() RTC의 사각파 출력을 설정합니다.
RTC Irtc32kHz() RTC의 32kHz 출력을 켜거나 끕니다.
디버그 debugStart() 디버그 출력에 사용할 포트와 보레이트를 설정합니다.
디버그 debugStop() 디버그 출력을 중지합니다.
디버그 debugState() 디버그 출력의 활성 상태를 반환합니다.
디버그 debug() 디버그가 활성화된 경우에만 값을 출력합니다.
디버그 debugln() 디버그 값을 출력한 뒤 줄을 바꿉니다.
Watchdog WDT_ENABLE() Watchdog 제한시간을 설정하고 동작을 시작합니다.
Watchdog WDT_DISABLE() Watchdog 동작을 중지합니다.
Watchdog WDT() 제한시간이 끝나기 전에 Watchdog를 갱신합니다.
고속카운터 TCNTSETUP() 타이머 외부 클럭 입력과 32비트 확장 모드를 설정합니다.
고속카운터 TCNTOUT() 32비트 확장 모드의 누적 상위 오버플로 값을 반환합니다.
Modbus RTU Slave ImodbusRTUMem() Slave가 사용할 M·D 메모리 크기를 설정합니다.
Modbus RTU Slave ImodbusRTUAdr() M·D 메모리의 시작 주소를 설정합니다.
Modbus RTU Slave ImodbusRTUInit() 통신 포트, 국번과 보레이트를 설정합니다.
Modbus RTU Slave ImodbusRTU() 수신 요청을 확인하고 Slave 응답을 처리합니다.
Modbus RTU Master ImodbusRTUmasterInit() Master 통신 포트와 보레이트를 설정합니다.
Modbus RTU Master ImodbusRTUmaster() 하나의 Master 요청을 즉시 실행합니다.
Modbus RTU Master ImodbusRTUmasterAdd() 반복 실행할 Master 요청을 등록합니다.
Modbus RTU Master ImodbusRTUmasterRun() 등록 요청 또는 지정한 단일 요청을 실행합니다.
LS산전 Cnet Slave ICnetMem() Cnet Slave가 사용할 M·D·R 메모리 크기를 설정합니다.
LS산전 Cnet Slave ICnetAdr() M·D·R 메모리의 시작 주소를 설정합니다.
LS산전 Cnet Slave ICnetInit() 통신 포트, 국번과 보레이트를 설정합니다.
LS산전 Cnet Slave ICnet() 수신 요청을 확인하고 Cnet Slave 응답을 처리합니다.
Mitsubishi MC Protocol IMcMem() MC Protocol에서 사용할 X·Y·M·D 메모리 크기를 설정합니다.
Mitsubishi MC Protocol IMcAdr() X·Y·M·D 메모리의 시작 주소를 설정합니다.
Mitsubishi MC Protocol IMcInit() 통신 포트, 국번과 보레이트를 설정합니다.
Mitsubishi MC Protocol IMcProtocol() 수신 요청을 확인하고 MC Protocol 응답을 처리합니다.

기본 제어 명령어

명령어 형식 반환값 설명
Iup(id, input) 상승 순간에만 true OFF에서 ON으로 바뀌는 순간을 한 번 검출
Idown(id, input) 하강 순간에만 true ON에서 OFF로 바뀌는 순간을 한 번 검출
Ialt(input, state) 없음 입력 상승 순간마다 state 값을 ON/OFF 반전
Iscale(x, inMin, inMax, outMin, outMax) int32_t 정수 입력 범위를 원하는 정수 범위로 변환
Iscalef(x, inMin, inMax, outMin, outMax) float 소수점을 유지하여 실수 범위 변환

Iup()Idown()id는 각 에지 검출 상태를 구분합니다. 서로 다른 입력에 같은 id를 사용하면 상태가 섞일 수 있습니다.

bool lampState = false;
 
void loop() {
  bool button = Ibounce(0, 30);
  Ialt(button, lampState);
  digitalWrite(64, lampState); // MPAINO 첫 번째 디지털 출력 예시
}

디지털 입력과 노이즈 필터

명령어 형식 반환값 사용 기준
IdigitalRead(pin, samples) 필터링된 HIGH 또는 LOW 입력을 여러 번 즉시 읽어 짧은 노이즈를 줄임
Ibounce(pin, ms) 안정화된 입력 상태 ON과 OFF가 설정 시간 동안 유지될 때 상태 변경
IbounceOn(pin, ms) ON 방향이 지연된 입력 상태 OFF→ON 방향만 시간 필터 적용
IbounceOff(pin, ms) OFF 방향이 지연된 입력 상태 ON→OFF 방향만 시간 필터 적용
digitalReset() 없음 코어가 관리하는 디지털 출력 상태 초기화

IdigitalRead()는 짧은 시간 동안 반복 샘플링하는 방식이고, Ibounce()millis() 기준으로 입력이 안정된 시간을 확인하는 방식입니다. 기계식 스위치에는 보통 Ibounce()가 알맞습니다.

PLC 스타일 타이머

명령어 형식 동작
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으로 초기화
IgetTime(id), IgetState(id) 경과시간과 출력 상태 확인

PLC 스타일 타이머는 delay()처럼 프로그램을 멈추지 않습니다. 대신 loop()가 반복될 때마다 계속 호출해야 합니다. 같은 id를 서로 다른 타이머에 중복 사용하지 마십시오.

void loop() {
  bool run = Ibounce(0, 30);
  bool delayedOutput = Iton(0, run, 1000);
  digitalWrite(64, delayedOutput);
}

주기 콜백 타이머

명령어 형식 설명
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 카운터의 하한 완료 상태 확인
FIFO(…) 먼저 저장한 16비트 데이터를 먼저 꺼내는 버퍼
FILO(…) 나중에 저장한 16비트 데이터를 먼저 꺼내는 버퍼

카운터 명령어는 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) 입력을 사용자 정수·실수 범위로 변환
analogRead2(ch), analogRead2Avg(ch, samples) 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은 센서 종류와 입력 회로가 다릅니다. 서로 바꾸어 사용하지 말고 선택 제품에 해당 입력 기능이 있는지 확인하십시오.

아날로그 출력과 PWM

명령어 형식 설명
analogWriteInit(ch, top, prescaler) PWM 타이머의 분해능과 분주비 설정
analogWriteFreq(ch, hz), analogWriteMax(ch) PWM 주파수 설정과 현재 최댓값 확인
IanalogWriteInit(ch, max, min, mode) MPAINO 아날로그 출력 범위 초기화
IanalogWrite(ch, min, max, value), IanalogWritef(…) 정수·실수 사용자값을 아날로그 출력 범위로 변환
analogWrite2(ch, value), IanalogWrite2(…) MPAINO 4~20mA 출력 변환
PWM(pin, value, bit16) 8비트 또는 16비트 PWM 출력
FDPWM(pin, hz, duty) 주파수와 Duty 비율을 지정한 PWM 출력
NPWM_BEGIN(pin, hz, duty, count), NPWM(pin) 지정한 개수만큼 펄스 출력
PWMOFF(pin, off), PWM_RESET() 개별 PWM 정지 또는 전체 초기화

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 출력은 계산값일 뿐 안전장치가 아닙니다. 센서 단선, 과온, 출력 고착과 비상정지는 별도의 안전회로로 처리하십시오.

표시 장치와 RTC

기능 주요 명령어 설명
TM1637 4자리 FND IsegBegin(), IsegBrightness(), IsegDecimal(), IsegHex(), IsegClear() 최대 7개 장치를 device 번호로 구분
PCF8574 문자 LCD IclcdBegin(), IclcdSetCursor(), IclcdPrint(), IclcdClear() 최대 4개 LCD를 device 번호로 구분
DS3231 RTC IrtcBegin(), IrtcRead(), IrtcSet(), IrtcGetTemperature(), IrtcSetAlarm1() 날짜·시간, 온도, 알람과 주파수 출력 사용

표시 장치와 RTC는 각각의 Begin 명령어를 먼저 호출합니다. I²C 주소, 연결 핀과 다른 기능의 공유 여부를 확인하십시오.

Debug와 Watchdog

명령어 형식 설명
debugStart(), debugStart(baud), debugStart(serial, baud) Debug 출력 시작과 포트 선택
debug(), debugln() Debug가 활성화된 경우에만 값 출력
debugStop(), debugState() Debug 중지와 상태 확인
WDT_ENABLE(time) Watchdog 제한시간 설정 및 활성화
WDT(), WDT_DISABLE() Watchdog 리셋과 비활성화

Watchdog를 활성화한 뒤 WDT() 호출이 늦어지면 보드가 재시작됩니다. 통신 대기와 긴 반복문의 최악 실행시간을 먼저 확인하십시오.

고속카운터

명령어 형식 설명
TCNTSETUP(timerNo, bit32) 타이머 외부 클럭 입력과 32비트 확장 모드 설정
TCNTOUT(timerNo) 32비트 확장 모드에서 누적된 상위 오버플로 횟수 확인

현재 타이머 외부 클럭 방식의 전용 고속카운터 지원 제품은 MPINO-8A8R과 MPINO-16A8R8T입니다. 다른 제품은 제품별 인터럽트 입력을 확인해 attachInterrupt() 방식을 사용합니다.

산업용 통신

프로토콜 초기 설정 loop() 실행 명령어
Modbus RTU Slave ImodbusRTUMem(), ImodbusRTUAdr(), ImodbusRTUInit() ImodbusRTU()
Modbus RTU Master ImodbusRTUmasterInit(), ImodbusRTUmasterAdd() ImodbusRTUmaster() 또는 ImodbusRTUmasterRun()
LS산전 Cnet Slave ICnetMem(), ICnetAdr(), ICnetInit() ICnet()
Mitsubishi MC Protocol Slave IMcMem(), IMcAdr(), IMcInit() IMcProtocol()
void setup() {
  ImodbusRTUMem(128, 64);
  ImodbusRTUAdr(0, 0);
  ImodbusRTUInit(Serial2, 1, 9600);
}
 
void loop() {
  ImodbusRTU();
}

제품별 RS-232, RS-485와 UART의 Serial 번호가 다를 수 있습니다. 통신 전에 포트 역할, 전기 규격, 보레이트, 국번, 종단저항과 딥스위치 설정을 확인하십시오.

통합 입출력 예제

아래 예제는 MPAINO의 첫 번째 디지털 입력 0과 첫 번째 디지털 출력 64를 사용합니다. MPINO에서는 선택 모델의 실제 Arduino 핀 번호로 바꾸어야 합니다.

const uint8_t inputChannel = 0;
const uint8_t outputChannel = 64;
 
void setup() {
  pinMode(inputChannel, INPUT);
  pinMode(outputChannel, OUTPUT);
}
 
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, 입력전압과 부하전원을 확인합니다.
  • 릴레이와 트랜지스터 출력의 전기적 특성 및 허용전류를 구분합니다.
  • 프로그램 출력만 비상정지나 과전류 보호수단으로 사용하지 않습니다.
  • 제품별 핀맵, 전기 사양과 지원 타이머는 해당 제품 설명서를 최종 기준으로 확인합니다.

관련 문서

commands/builtin.1788185842.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki