ユーザ用ツール

サイト用ツール


ja-jp_commands:builtin

ILOGICS内蔵コマンド説明書

ILOGICSボードではILOGICSが開発した内蔵コマンドを使用できます。別途ライブラリをインストールせず、ILOGICSボードを選択するだけで使用できます。

内蔵コマンドの使い方

  1. ILOGICSボードパッケージをインストールします。(Arduino SDK)
  2. Arduino IDEのツール → ボードで使用するボードを選択します。
  3. 内蔵コマンドを使用します。

内蔵コマンド一覧

例に記載された入出力アドレスは製品によって異なります。使用する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 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() 増加入力と減少入力を1つのカウンタで処理します。
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() 指定した周波数とデューティ比でPWMを出力します。
PWMOFF() 指定したピンのPWM出力を停止または再許可します。
PWM_RESET() コアが管理するPWM状態をすべて初期化します。
パルス出力 NPWM_BEGIN() 周波数・デューティ比・出力数を指定してパルス出力を準備します。
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() 数字1桁をセグメントデータに変換します。
キャラクタLCD IclcdBegin() PCF8574キャラクタLCDのアドレスと画面サイズを設定します。
IclcdClear() LCD画面を消去します。
IclcdHome() カーソルを先頭位置へ移動します。
IclcdSetCursor() カーソルを指定した列と行に移動します。
IclcdDisplay() LCD表示を有効または無効にします。
IclcdCursor() カーソルを表示または非表示にします。
IclcdBlink() カーソルの点滅を有効または無効にします。
IclcdBacklight() LCDバックライトを点灯または消灯します。
IclcdScrollLeft() 表示内容を左に1桁移動します。
IclcdScrollRight() 表示内容を右に1桁移動します。
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() 1つの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に変わる瞬間を1回検出
Idown(id, input) 立ち下がり時だけtrue ONからOFFに変わる瞬間を1回検出

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は他のカウンタと重複しないように割り当てます。

データバッファ

コマンド形式 説明
FIFO(...) 先に保存した16ビットデータから順に取り出すバッファ
FILO(...) 後に保存した16ビットデータから順に取り出すバッファ

アナログ入力

コマンド形式 戻り値・用途
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では装着したアナログ入力モジュールとDIPスイッチの電圧・電流範囲を先に確認します。サンプリング速度を上げると応答は速くなりますが、ノイズや測定特性が変わる場合があります。

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) 周波数とデューティ比を指定した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番号は製品によって異なる場合があります。通信前にポートの役割、電気規格、ボーレート、局番、終端抵抗、DIPスイッチ設定を確認してください。

統合入出力の例

以下の例では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のDIPスイッチ、チャネル、サンプリング速度を確認します。
  • 通信できない: Serialポート、RS-232/RS-485方式、ボーレート、局番、パリティ、配線を確認します。
  • ボードが繰り返し再起動する: Watchdogの制限時間より長くかかるコードがないか確認します。

必須注意事項

  • 従来の#include <ILIB.h>tempRead()Ipt100Read()の例を現在の内蔵コマンドと混用しないでください。
  • 電源や配線を変更するときは機器の電源を切り、極性、COM、入力電圧、負荷電源を確認します。
  • リレー出力とトランジスタ出力の電気的特性および許容電流を区別してください。
  • プログラム出力だけを非常停止や過電流保護の手段として使用しないでください。
  • 製品別のピンマップ、電気仕様、対応タイマは該当する製品説明書を最終基準として確認します。

関連文書

ja-jp_commands/builtin.txt · 最終更新: (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki