ユーザ用ツール

サイト用ツール


ja-jp_products:mpino_8a8r

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ja-jp_products:mpino_8a8r [2026/09/15 10:37] – 外部編集 127.0.0.1ja-jp_products:mpino_8a8r [2026/10/25 08:43] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 ====== MPINO-8A8R ====== ====== MPINO-8A8R ======
  
-MPINO-8A8Rは、デジタル入力8点とリレー出力8点を備えた一体型の産業用Arduinoです。 1枚のPCBに、アナログ入力4点、PWM出力6点、絶縁高速カウンタ入力2点、割り込み入力4点、RS-232・RS-485・UART・I²C通信を搭載しています。+MPINO-8A8Rは、デジタル入力8点とリレー出力8点を備えた一体型の産業用Arduinoです。1枚のPCBに、アナログ入力4点、PWM出力6点、絶縁高速カウンタ入力2点、割り込み入力4点、RS-232・RS-485・UART・I²C通信を搭載しています。
  
 Arduino IDE(Arduino C/C++)、またはMPINO STUDIO 2(Arduino C/C++ & ラダーロジック)でプログラムできます。 Arduino IDE(Arduino C/C++)、またはMPINO STUDIO 2(Arduino C/C++ & ラダーロジック)でプログラムできます。
  
-[[:ja-jp_guide:getting_started#mpino-8a8r|MPINO-8A8R Arduino IDE開始ガイド]]で、ボードとポートの選択、最初の入出力の確認方法を説明します。+[[:ja-jp_products:mpino_series#mpino_series仕様表|MPINO Series仕様表]]で、MPINO-8A8Rのボード名、接続方法、最初の入出力番号を確認できます。
  
  
行 29: 行 29:
 | ::: | ::: |  SRAM  | 8KB  | | ::: | ::: |  SRAM  | 8KB  |
 | ::: | ::: |  EEPROM  | 4KB  | | ::: | ::: |  EEPROM  | 4KB  |
 +
 +**Markdownファイル:** [[https://www.ilogics.net/docs/downloads:mpino:ja:mpino_8a8r?do=export_raw|MPINO-8A8R.mdをダウンロード]]
  
  
 ===== デジタル入力 ===== ===== デジタル入力 =====
  
 +[[:ja-jp_guide:wiring#デジタル入力を1点確認する|初めて配線するときは、デジタル入力1点の確認手順も参照してください。 →]]
 ^ グループ ^ 端子 ^ Arduinoピン ^ 入力構成 ^ 端子台と配線例 ^ ^ グループ ^ 端子 ^ Arduinoピン ^ 入力構成 ^ 端子台と配線例 ^
 | COM0 | I(22)~I(29) | D22~D29 | デジタル入力8点、COM0共用 |  {{:ja-jp_products:mpino-8a8r-digital-input.svg?727|MPINO-8A8R デジタル入力端子台とNPN・PNP配線}}  | | COM0 | I(22)~I(29) | D22~D29 | デジタル入力8点、COM0共用 |  {{:ja-jp_products:mpino-8a8r-digital-input.svg?727|MPINO-8A8R デジタル入力端子台とNPN・PNP配線}}  |
  
-デジタル入力は双方向フォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP信号を接続できます。 入力方式はCOM0の配線極性で選択します。+デジタル入力は双方向フォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP信号を接続できます。入力方式はCOM0の配線極性で選択します。
  
 ==== プログラム例・デジタル入力 ==== ==== プログラム例・デジタル入力 ====
  
-digitalRead()でD22~D29の入力状態を200msごとに表示します。 HIGHは1、LOWは0です。+digitalRead()でD22~D29の入力状態を200msごとに表示します。HIGHは1、LOWは0です。
  
 <code cpp> <code cpp>
行 68: 行 71:
 </code> </code>
  
-IdigitalRead(22, 5)はD22を5回連続で読み取ります。 すべてHIGHまたはすべてLOWの場合に状態を更新し、値が混在する場合は前の状態を保持します。 時間ベースのチャタリング防止フィルタと異なり、読み取りの間に遅延を入れません。+IdigitalRead(22, 5)はD22を5回連続で読み取ります。すべてHIGHまたはすべてLOWの場合に状態を更新し、値が混在する場合は前の状態を保持します。時間ベースのチャタリング防止フィルタと異なり、読み取りの間に遅延を入れません。
  
 <code cpp> <code cpp>
行 132: 行 135:
 </code> </code>
  
-Ialt(input, state)は、入力がOFFからONに変わるたびにstateを反転します。 D22を1回押すとD62がONになり、もう1回押すとOFFになります。押し続けている間は状態を保持します。 この例ではIbounce(22, 30)でチャタリングを除去してからIalt()へ渡します。 outputOnは呼び出し間で値を保持するグローバル変数で、Ialt()がこの値を直接変更します。+Ialt(input, state)は、入力がOFFからONに変わるたびにstateを反転します。D22を1回押すとD62がONになり、もう1回押すとOFFになります。押し続けている間は状態を保持します。この例ではIbounce(22, 30)でチャタリングを除去してからIalt()へ渡します。outputOnは呼び出し間で値を保持するグローバル変数で、Ialt()がこの値を直接変更します。
  
 <code cpp> <code cpp>
行 154: 行 157:
 </code> </code>
  
 +
 +===== STATUS LED =====
 +
 +MPINO-8A8RのSTATUS LEDは、ボードに実装された状態表示灯です。ユーザープログラムの動作状態を表示するために使用できます。
 +
 +STATUS LEDはデジタルピンD13に接続されています。スケッチではD13の代わりに''LED_BUILTIN''を使用できます。制御する前に''pinMode(LED_BUILTIN, OUTPUT)''で出力モードを設定する必要があります。''digitalWrite(LED_BUILTIN, HIGH)''で点灯し、''digitalWrite(LED_BUILTIN, LOW)''で消灯します。
 +
 +**注意事項:** STATUS LEDはボード内蔵の表示灯で、外部出力端子とは別です。
 +
 +==== 例・STATUS LEDの点滅 ====
 +
 +次の例では、STATUS LEDを0.5秒間隔で点灯・消灯します。
 +
 +<code cpp>
 +void setup() {
 +  pinMode(LED_BUILTIN, OUTPUT);
 +}
 +
 +void loop() {
 +  digitalWrite(LED_BUILTIN, HIGH);  // LED点灯
 +  delay(500);
 +  digitalWrite(LED_BUILTIN, LOW);   // LED消灯
 +  delay(500);
 +}
 +</code>
  
 ===== リレー出力 ===== ===== リレー出力 =====
  
 +[[:ja-jp_guide:wiring#リレー出力を1点確認する|初めて配線するときは、リレー出力1点の確認手順も参照してください。 →]]
 ^ グループ ^ 端子 ^ Arduinoピン ^ 接点定格 ^ 端子台と配線例 ^ ^ グループ ^ 端子 ^ Arduinoピン ^ 接点定格 ^ 端子台と配線例 ^
 | COM2 | R(62), R(63) | D62, D63 | AC 250VまたはDC 30V, 最大5A/1点 |  {{:ja-jp_products:mpino-8a8r-relay-output.svg?558|MPINO-8A8R リレー出力端子台と負荷配線}}  | | COM2 | R(62), R(63) | D62, D63 | AC 250VまたはDC 30V, 最大5A/1点 |  {{:ja-jp_products:mpino-8a8r-relay-output.svg?558|MPINO-8A8R リレー出力端子台と負荷配線}}  |
行 163: 行 192:
 | COM5 | R(68), R(69) | D68, D69 | AC 250VまたはDC 30V, 最大5A/1点 | ::: | | COM5 | R(68), R(69) | D68, D69 | AC 250VまたはDC 30V, 最大5A/1点 | ::: |
  
-リレー出力は、各COM端子と出力端子を物理的に接続する無電圧接点です。 負荷電源は別途接続します。+リレー出力は、各COM端子と出力端子を物理的に接続する無電圧接点です。負荷電源は別途接続します。
  
 ==== プログラム例・リレー出力 ==== ==== プログラム例・リレー出力 ====
  
-入力D22~D29を出力D62~D69に順番に対応させます。 入力がHIGHの場合、対応する出力がONになります。+入力D22~D29を出力D62~D69に順番に対応させます。入力がHIGHの場合、対応する出力がONになります。
  
 <code cpp> <code cpp>
行 194: 行 223:
 ==== プログラム例・アナログ入力 ==== ==== プログラム例・アナログ入力 ====
  
-analogRead()でA0~A3のADC生値(0~1023)を表示します。 各チャンネルの電圧・電流モードは、実際の製品設定に従います。+analogRead()でA0~A3のADC生値(0~1023)を表示します。各チャンネルの電圧・電流モードは、実際の製品設定に従います。
  
 <code cpp> <code cpp>
行 225: 行 254:
 </code> </code>
  
-A0を0~5V入力、A2を0(4)~20mA入力に設定した場合の例です。 両関数はADC入力を指定したmin~maxの範囲へ換算します。IanalogRead()は小数部を切り捨てた整数、IanalogReadf()は浮動小数点数を返します。A0の0~5V入力を0~100%と電圧で表示します。A2の0~20mA入力は、範囲を0~20に指定して実際の電流値として読み取ります。+A0を0~5V入力、A2を0(4)~20mA入力に設定した場合の例です。両関数はADC入力を指定したmin~maxの範囲へ換算します。IanalogRead()は小数部を切り捨てた整数、IanalogReadf()は浮動小数点数を返します。A0の0~5V入力を0~100%と電圧で表示します。A2の0~20mA入力は、範囲を0~20に指定して実際の電流値として読み取ります。
  
 <code cpp> <code cpp>
行 256: 行 285:
 </code> </code>
  
-A0を0~5V入力、A2を0(4)~20mA入力に設定した場合の例です。 A2に接続した4~20mAセンサの入力を、指定範囲へ換算します。IanalogRead2(A2, 0, 100)は4mAを0%、20mAを100%に換算した整数を返します。IanalogRead2f(A2, 4.0f, 20.0f)は電流を浮動小数点数で返します。約3.6mA未満では両関数ともANALOG_READ2_ERROR(65535)、約3.6~4mAでは指定した最小値を返します。+A0を0~5V入力、A2を0(4)~20mA入力に設定した場合の例です。A2に接続した4~20mAセンサの入力を、指定範囲へ換算します。IanalogRead2(A2, 0, 100)は4mAを0%、20mAを100%に換算した整数を返します。IanalogRead2f(A2, 4.0f, 20.0f)は電流を浮動小数点数で返します。約3.6mA未満では両関数ともANALOG_READ2_ERROR(65535)、約3.6~4mAでは指定した最小値を返します。
  
 <code cpp> <code cpp>
行 289: 行 318:
 </code> </code>
  
-A0を0~5V入力、A2を0(4)~20mA入力に設定した場合の例です。 analogReadAvg(A0, 5)はA0のADC生値(0~1023)、analogRead2Avg(A2, 5)はA2の4~20mA補正値(4mA=0、20mA=32767)の移動平均を返します。直近の呼び出しで読み取った正常値を最大5個まで蓄積して平均します。1回の呼び出しで5回読み取る関数ではありません。samplesの最大値は20です。analogRead2Avg()は約3.6mA未満の入力でANALOG_READ2_AVG_ERROR(-1)を返します。+A0を0~5V入力、A2を0(4)~20mA入力に設定した場合の例です。analogReadAvg(A0, 5)はA0のADC生値(0~1023)、analogRead2Avg(A2, 5)はA2の4~20mA補正値(4mA=0、20mA=32767)の移動平均を返します。直近の呼び出しで読み取った正常値を最大5個まで蓄積して平均します。1回の呼び出しで5回読み取る関数ではありません。samplesの最大値は20です。analogRead2Avg()は約3.6mA未満の入力でANALOG_READ2_AVG_ERROR(-1)を返します。
  
 <code cpp> <code cpp>
行 314: 行 343:
 ==== プログラム例・温度センサ入力 ==== ==== プログラム例・温度センサ入力 ====
  
-A0をNTC入力に設定した製品でのみ実行してください。 analogRead()でA0の温度センサADC生値(0~1023)を表示します。 摂氏への換算は、以下の内蔵関数で説明します。+A0をNTC入力に設定した製品でのみ実行してください。analogRead()でA0の温度センサADC生値(0~1023)を表示します。摂氏への換算は、以下の内蔵関数で説明します。
  
 <code cpp> <code cpp>
行 339: 行 368:
 </code> </code>
  
-A0チャンネルをNTC入力に設定した製品でのみ実行してください。 NTC入力A0に接続したNTC 10kΩ(25℃)、B=3950Kセンサの温度を読み取ります。 ntcRead()は摂氏温度の10倍の整数(25.3℃ → 253)、ntcReadf()は摂氏温度の浮動小数点数(25.3)を返します。 分解能はどちらも0.1℃です。 変換範囲外の値は-40℃または120℃に制限されるため、断線・短絡の判定値として使用しないでください。+A0チャンネルをNTC入力に設定した製品でのみ実行してください。NTC入力A0に接続したNTC 10kΩ(25℃)、B=3950Kセンサの温度を読み取ります。ntcRead()は摂氏温度の10倍の整数(25.3℃ → 253)、ntcReadf()は摂氏温度の浮動小数点数(25.3)を返します。分解能はどちらも0.1℃です。変換範囲外の値は-40℃または120℃に制限されるため、断線・短絡の判定値として使用しないでください。
  
 <code cpp> <code cpp>
行 366: 行 395:
 | エンコーダ入力 | A相:SDA(D20)、B相:SCL(D21) | 1チャネル | | エンコーダ入力 | A相:SDA(D20)、B相:SCL(D21) | 1チャネル |
  
-TCNT1とTCNT5はTIMER1・TIMER5の外部クロック入力として使用します。 SDAとSCLをエンコーダ入力として使用する場合、I²C通信を同時に使用できません。+TCNT1とTCNT5はTIMER1・TIMER5の外部クロック入力として使用します。SDAとSCLをエンコーダ入力として使用する場合、I²C通信を同時に使用できません。
  
 ==== プログラム例・パルスカウント ==== ==== プログラム例・パルスカウント ====
  
-TCNT1・TCNT5の絶縁入力をタイマの外部クロックとしてカウントします。 MCUタイマ入力の立ち上がりエッジを使用し、値は0~65535の後に0へ戻ります。 アトミックに読み取り、500msごとに表示します。+TCNT1・TCNT5の絶縁入力をタイマの外部クロックとしてカウントします。MCUタイマ入力の立ち上がりエッジを使用し、値は0~65535の後に0へ戻ります。アトミックに読み取り、500msごとに表示します。
  
 <code cpp> <code cpp>
行 401: 行 430:
 </code> </code>
  
-SDA(D20)のFALLINGエッジをカウントします。 入力は4.7kΩのプルアップ(SDA/SCL)です。 32ビット値をATOMIC_BLOCKで読み取り、500msごとに表示するソフトウェア割り込みの例です。 最大入力周波数でカウントの取りこぼしがないことを保証するものではありません。 SDA・SCLを使用するため、I²C通信と同時に実行しないでください。+SDA(D20)のFALLINGエッジをカウントします。入力は4.7kΩのプルアップ(SDA/SCL)です。32ビット値をATOMIC_BLOCKで読み取り、500msごとに表示するソフトウェア割り込みの例です。最大入力周波数でカウントの取りこぼしがないことを保証するものではありません。SDA・SCLを使用するため、I²C通信と同時に実行しないでください。
  
 <code cpp> <code cpp>
行 441: 行 470:
 </code> </code>
  
-TCNTSETUP(timerNumber, false)でTimer1・Timer5を16ビット外部クロックカウンタに設定します。 累積値はTCNT1・TCNT5レジスタから読み取ります。 TCNTOUT()は累積パルス値ではなく32ビットモードのオーバーフロー回数を返すため、この16ビットの例では使用しません。 他のタイマ関数でTimer1・Timer5を再設定しないでください。+TCNTSETUP(timerNumber, false)でTimer1・Timer5を16ビット外部クロックカウンタに設定します。累積値はTCNT1・TCNT5レジスタから読み取ります。TCNTOUT()は累積パルス値ではなく32ビットモードのオーバーフロー回数を返すため、この16ビットの例では使用しません。他のタイマ関数でTimer1・Timer5を再設定しないでください。
  
 <code cpp> <code cpp>
行 469: 行 498:
 ==== プログラム例・エンコーダ入力 ==== ==== プログラム例・エンコーダ入力 ====
  
-A相はSDA(D20)、B相はSCL(D21)に接続します。 4.7kΩのプルアップ(SDA/SCL)を使用し、FALLINGエッジでB相がLOWなら増加する1逓倍カウントの例です。 実際の回転方向はA・B相の配線によって変わります。 SDA・SCLを使用するため、I²C通信と同時に実行しないでください。+A相はSDA(D20)、B相はSCL(D21)に接続します。4.7kΩのプルアップ(SDA/SCL)を使用し、FALLINGエッジでB相がLOWなら増加する1逓倍カウントの例です。実際の回転方向はA・B相の配線によって変わります。SDA・SCLを使用するため、I²C通信と同時に実行しないでください。
  
 <code cpp> <code cpp>
行 512: 行 541:
 | PWM6, PWM7, PWM8 | D6, D7, D8 | TIMER4 | ::: | | PWM6, PWM7, PWM8 | D6, D7, D8 | TIMER4 | ::: |
  
-PWM出力は標準で8bitデューティ値を使用し、出力電圧はDC 0~5Vです。 PWM2とPWM3は割り込み入力機能を共有します。+PWM出力は標準で8bitデューティ値を使用し、出力電圧はDC 0~5Vです。PWM2とPWM3は割り込み入力機能を共有します。
  
 ==== プログラム例・PWM出力 ==== ==== プログラム例・PWM出力 ====
行 542: 行 571:
 </code> </code>
  
-PWM(pin, val, onDutybit16)はデューティ値を指定します。 8ビットの範囲は0~255、第3引数をtrueにした16ビットの範囲は0~65535です。 D5に16ビットの中間値32768を出力します。 D5・D2・D3はTimer3、D6・D7・D8はTimer4を共有するため、同じタイマでは同じ分解能を使用します。 PWM_RESET()を呼び出した後に開始します。+PWM(pin, val, onDutybit16)はデューティ値を指定します。8ビットの範囲は0~255、第3引数をtrueにした16ビットの範囲は0~65535です。D5に16ビットの中間値32768を出力します。D5・D2・D3はTimer3、D6・D7・D8はTimer4を共有するため、同じタイマでは同じ分解能を使用します。PWM_RESET()を呼び出した後に開始します。
  
 <code cpp> <code cpp>
行 562: 行 591:
 </code> </code>
  
-FDPWM(pin, intHz, Duty)は周波数(Hz)とデューティ比(%)を指定します。 D5に1kHz、50%のデューティ比で出力します。 D5・D2・D3はTimer3、D6・D7・D8はTimer4を共有するため、同じタイマの出力には同じ周波数を指定します。 独立したFPWM()関数はありません。50%出力はFDPWM(pin, hz, 50.0f)で設定します。+FDPWM(pin, intHz, Duty)は周波数(Hz)とデューティ比(%)を指定します。D5に1kHz、50%のデューティ比で出力します。D5・D2・D3はTimer3、D6・D7・D8はTimer4を共有するため、同じタイマの出力には同じ周波数を指定します。独立したFPWM()関数はありません。50%出力はFDPWM(pin, hz, 50.0f)で設定します。
  
 <code cpp> <code cpp>
行 583: 行 612:
 </code> </code>
  
-NPWM_BEGIN()でD5に1kHz・50%のパルス100個を準備し、loop()ごとにNPWM()を実行して出力と完了処理を行います。 delay()は入れないでください。 D5・D2・D3はTimer3、D6・D7・D8はTimer4を共有します。同じタイマの他の出力と併用しないでください。+NPWM_BEGIN()でD5に1kHz・50%のパルス100個を準備し、loop()ごとにNPWM()を実行して出力と完了処理を行います。delay()は入れないでください。D5・D2・D3はTimer3、D6・D7・D8はTimer4を共有します。同じタイマの他の出力と併用しないでください。
  
 <code cpp> <code cpp>
行 604: 行 633:
 </code> </code>
  
-PWMOFF(pin, true)はチャンネル停止フラグを設定し、falseは解除します。 設定直後にFDPWM()を呼び出し、出力接続に反映します。 D5を2秒間ON、2秒間OFFにし、停止後はdigitalWrite()でLOWを維持します。 この停止フラグはNPWM()には適用されません。+PWMOFF(pin, true)はチャンネル停止フラグを設定し、falseは解除します。設定直後にFDPWM()を呼び出し、出力接続に反映します。D5を2秒間ON、2秒間OFFにし、停止後はdigitalWrite()でLOWを維持します。この停止フラグはNPWM()には適用されません。
  
 <code cpp> <code cpp>
行 631: 行 660:
 </code> </code>
  
-PWM_RESET()はTimer1・Timer3・Timer4・Timer5の制御レジスタとカウンタを初期化します。 D5に1kHzを2秒間出力した後、全タイマを停止します。 同じタイマのPWM・カウンタにも影響します。 PWMOFF()の停止フラグまでは解除しません。+PWM_RESET()はTimer1・Timer3・Timer4・Timer5の制御レジスタとカウンタを初期化します。D5に1kHzを2秒間出力した後、全タイマを停止します。同じタイマのPWM・カウンタにも影響します。PWMOFF()の停止フラグまでは解除しません。
  
 <code cpp> <code cpp>
行 656: 行 685:
 | I²C | D20(SDA), D21(SCL) | ''Wire'' | ::: | | I²C | D20(SDA), D21(SCL) | ''Wire'' | ::: |
  
-プログラムの書き込みにはMPダウンロードケーブルを使用します。 RS-485は自動方向制御方式のため、送受信方向を切り替えるための別の制御ピンは不要です。+プログラムの書き込みにはMPダウンロードケーブルを使用します。RS-485は自動方向制御方式のため、送受信方向を切り替えるための別の制御ピンは不要です。
  
 ==== プログラム例・基本通信 ==== ==== プログラム例・基本通信 ====
  
-Serial(115200bps)とRS-232 Serial1(9600bps, 8-N-1)の間で文字を転送します。 availableForWrite()で送信バッファの空き容量を確認します。 Serial2はRS-485、Serial3はTTL UARTです。該当端子を使用する場合は、例のSerial1を対応するオブジェクトに変更します。+Serial(115200bps)とRS-232 Serial1(9600bps, 8-N-1)の間で文字を転送します。availableForWrite()で送信バッファの空き容量を確認します。Serial2はRS-485、Serial3はTTL UARTです。該当端子を使用する場合は、例のSerial1を対応するオブジェクトに変更します。
  
 <code cpp> <code cpp>
行 682: 行 711:
 ==== プログラム例・I²C通信 ==== ==== プログラム例・I²C通信 ====
  
-Wireでアドレス0x08~0x77を検索し、応答したアドレスを3秒ごとに表示します。 SDA・SCLを使用するエンコーダ・割り込みの例と同時に実行しないでください。+Wireでアドレス0x08~0x77を検索し、応答したアドレスを3秒ごとに表示します。SDA・SCLを使用するエンコーダ・割り込みの例と同時に実行しないでください。
  
 <code cpp> <code cpp>
行 729: 行 758:
 D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、相手機器から読み取ります。RS-232(Serial1)、局番1、9600bps、8N1に設定します。M[0]はFC01・開始アドレス0・1ビット、D[0]はFC03・開始アドレス0・1ワードで読み取ります。アドレスは0から始まる実際の通信アドレスです。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。 D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、相手機器から読み取ります。RS-232(Serial1)、局番1、9600bps、8N1に設定します。M[0]はFC01・開始アドレス0・1ビット、D[0]はFC03・開始アドレス0・1ワードで読み取ります。アドレスは0から始まる実際の通信アドレスです。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。
  
-MとDはコアが提供する共有グローバルメモリです。このスケッチは単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。 RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。+MとDはコアが提供する共有グローバルメモリです。このスケッチは単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。
  
 <code cpp> <code cpp>
行 769: 行 798:
 </code> </code>
  
-RS-232(Serial1)で相手スレーブのホールディングレジスタ1個を1秒ごとに読み取ります。相手機器は局番1、9600bps、8N1、FC03・実際の開始アドレス0に設定します。応答はreceived[0]へ保存し、成功した場合だけ表示します。エラーコードは16進数で表示します。上のスレーブ例とは別のスケッチで、M/Dメモリの代わりに受信配列を使用します。 RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。+RS-232(Serial1)で相手スレーブのホールディングレジスタ1個を1秒ごとに読み取ります。相手機器は局番1、9600bps、8N1、FC03・実際の開始アドレス0に設定します。応答はreceived[0]へ保存し、成功した場合だけ表示します。エラーコードは16進数で表示します。上のスレーブ例とは別のスケッチで、M/Dメモリの代わりに受信配列を使用します。RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。
  
 <code cpp> <code cpp>
行 800: 行 829:
 **関連する内蔵関数** **関連する内蔵関数**
  
-=== 関数例・LS産電Cnet SLave:ICnetMem()、ICnetAdr()、ICnetInit()、ICnet() ===+=== 関数例・LS産電Cnet Slave:ICnetMem()、ICnetAdr()、ICnetInit()、ICnet() ===
  
 **関数プロトタイプ** **関数プロトタイプ**
行 813: 行 842:
 D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、HMIから読み取ります。相手機器はLS産電Cnet、RS-232、局番1、9600bps、8N1に設定します。ビットは%MX00000(M[0])、ワードは%DW0(D[0])を読み取ります。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。 D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、HMIから読み取ります。相手機器はLS産電Cnet、RS-232、局番1、9600bps、8N1に設定します。ビットは%MX00000(M[0])、ワードは%DW0(D[0])を読み取ります。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。
  
-M・D・Rはコアが提供する共有グローバルメモリで、この例ではRを使用しません。Modbusの例とは別に単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。 RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。+M・D・Rはコアが提供する共有グローバルメモリで、この例ではRを使用しません。Modbusの例とは別に単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。
  
 <code cpp> <code cpp>
行 843: 行 872:
 } }
 </code> </code>
 +
 +[[https://www.ilogics.net/ja-jp/products/mpino-8a8r|MPINO-8A8R の価格・購入情報を見る]]
  
 [[:ja-jp_products:mpino_series|← MPINO Series比較表(韓国語)]] [[:ja-jp_products:mpino_series|← MPINO Series比較表(韓国語)]]
  
ja-jp_products/mpino_8a8r.1789436246.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki