Arduino Nano Every と ENC28J60 を用いた、GPIB(IEEE-488)- Ethernet 変換アダプタ(GPIBコントローラ)のファームウェアです。
ホスト PC 等から Ethernet(TCP ソケット通信)経由でコマンドを送信し、GPIB 接続された各種測定機器・装置の制御およびデータ送受信を行います。
- Arduino Nano Every 専用設計
標準の Arduino Nano(ATmega328P)では、SPI イーサネットモジュールと GPIB の全信号線(16本)を同時接続するためのピン数および Flash 容量が不足します。そのため、アナログピン A6・A7 を汎用デジタル入出力ピン(D20, D21)として使用できる Arduino Nano Every(ATmega4809) を採用しています。 - 独立した Ethernet 待ち受けポート(2345)
市販の Prologix 製 GPIB-Ethernet コントローラ等のデフォルトポート(1234)との衝突・誤接続を防ぐため、待ち受けポートには2345を割り当てています。 - 不揮発メモリ(EEPROM)による設定保持
IP アドレス、MAC アドレス、デフォルトターゲット GPIB アドレス、デリミタ設定、自動制御フラグ等は内蔵 EEPROM に保存され、電源再投入後も保持されます。
- 制御マイコン: Arduino Nano Every(※ATmega328P 版 Arduino Nano では動作しません)
- イーサネットモジュール: Arduino Nano 用 Ethernet シールド(Microchip 製 ENC28J60 搭載)
- GPIB コネクタ: アンフェノール フルピッチ 24ピン プラグ(オス)
- 電源: マイクロ USB Type-B コネクタ経由で 5V / 1A 以上を供給
| 信号種別 | 信号名 | Arduino Nano Every ピン | GPIB 24ピンコネクタ | 備考 |
|---|---|---|---|---|
| Ethernet | CS | D10 | - | SPI チップセレクト (ENC28J60) |
| MOSI | D11 | - | SPI MOSI (SI) | |
| MISO | D12 | - | SPI MISO (SO) | |
| SCK | D13 | - | SPI SCK | |
| GPIB データ線 | DIO1 | D2 | 1番ピン | ※シールド側のパターンカットが必要 |
| DIO2 | D3 | 2番ピン | ||
| DIO3 | D4 | 3番ピン | ||
| DIO4 | D5 | 4番ピン | ||
| DIO5 | D21 (A7) | 13番ピン | ||
| DIO6 | D20 (A6) | 14番ピン | ||
| DIO7 | D19 (A5) | 15番ピン | ||
| DIO8 | D18 (A4) | 16番ピン | ||
| GPIB ハンドシェイク線 | DAV | D7 | 6番ピン | Data Valid |
| NRFD | D16 (A2) | 7番ピン | Not Ready For Data | |
| NDAC | D8 | 8番ピン | Not Data Accepted | |
| GPIB バス管理線 | EOI | D6 | 5番ピン | End Or Identify |
| ATN | D14 (A0) | 11番ピン | Attention | |
| IFC | D15 (A1) | 9番ピン | Interface Clear | |
| SRQ | D9 | 10番ピン | Service Request | |
| REN | D17 (A3) | 17番ピン | Remote Enable | |
| 接地 | GND | GND | 12, 18-24番ピン | 信号グラウンド / シールドグラウンド |
多くの Arduino Nano 用イーサネットシールドでは、搭載されている ENC28J60 の割り込み信号(/INT)がレベルコンバータを介して Arduino の D2 ピン に接続されています。
本アダプタでは D2 ピンを GPIB データ線(DIO1)として使用するため、シールド上の D2 ピンへ繋がる配線パターンをカット(切断)する必要があります。
詳細は docs/everGPIB_NanoV3Ethernetシールド_パターンカット説明図.pdf を参照してください。
- 開発環境: Arduino IDE 2.x 以降を推奨
- ボード設定:
- ボード:
Arduino Nano Every - Registers emulation:
None (ATMEGA4809)
- ボード:
- 必要ライブラリ:
EthernetENC(Microchip ENC28J60 用ライブラリ)
※Arduino 標準のEthernet.h(WIZnet 系専用)ではなく、ライブラリマネージャからEthernetENCをインストールしてください。
- 書き込み:
- everGPIB.ino を開き、Arduino Nano Every を USB 接続して書き込みを実行します。
PC と everGPIB をデータ通信用 USB ケーブルで接続し、シリアル通信ソフト(Tera Term 等)を用いて内部パラメータの設定を行います。
- シリアルポート通信条件:
- ボーレート:
9600 bps - データ長:
8 bit - パリティ:
なし - ストップビット:
1 bit - フロー制御:
なし - 改行コード: 送受信ともに
CR+LF
- ボーレート:
コマンドは大文字小文字を区別しません。オプション値とは1文字以上の空白で区切ります。
| コマンド | 書式・オプション | 説明・例 |
|---|---|---|
| ヘルプ | ? または ?HEL / HELP |
コマンド一覧と使用例を表示します。 |
| IP アドレス表示 | ?IPA |
設定されている IP アドレスを表示します。 |
| IP アドレス設定 | !IPA %d.%d.%d.%d |
本体の IP アドレスを設定します(例: !IPA 192.168.0.1)。 |
| MAC アドレス表示 | ?MAC |
設定されている MAC アドレスを表示します。 |
| MAC アドレス設定 | !MAC %02X:%02X:%02X:%02X:%02X:%02X |
本体の MAC アドレスを設定します(例: !MAC FE:FF:00:00:00:01)。 |
| デフォルト TAD 表示 | ?TAD |
デフォルトのターゲット GPIB アドレスを表示します。 |
| デフォルト TAD 設定 | !TAD %d |
デフォルトターゲット GPIB アドレスを設定します(範囲: 1〜30、例: !TAD 12)。 |
| デフォルトデリミタ表示 | ?TER |
デフォルトのデリミタおよび EOI アサート設定を表示します。 |
| デフォルトデリミタ設定 | !TER [%d][+%d][.] |
デフォルトデリミタ(ASCIIコード10進数)と EOI アサートを設定します。 ・ !TER 13+10. (CR+LF、EOIあり)・ !TER 10. (LF、EOIあり)・ !TER 13+10 (CR+LF、EOIなし)・ !TER . (デリミタなし、EOIあり) |
| 自動 IFC 表示 | ?AIC |
コマンド実行前の自動 IFC 実行設定(Y/N)を表示します。 |
| 自動 IFC 設定 | !AIC [Y|N] |
TAL/LIS/CHA コマンド実行前の自動 IFC(Interface Clear)を設定します。 |
| 自動 REN 表示 | ?ARE |
コマンド実行前の自動 REN 実行設定(Y/N)を表示します。 |
| 自動 REN 設定 | !ARE [Y|N] |
TAL/LIS/CHA コマンド実行前の自動 REN(Remote Enable)を設定します。 |
Note
IP アドレスおよび MAC アドレスの変更は、マイコン起動時のイーサネット初期化処理で読み込まれるため、設定後に一度電源を切って再起動を行うことで有効になります。
everGPIB は TCP ポート 2345 で接続を待ち受けます(1クライアント排他接続)。
電文形式は ASCII テキストで、行終端は CR+LF(LF のみも許容)です。
| コマンド | 説明 | 応答 |
|---|---|---|
STA |
各バスラインの現在状態(HIGH / LOW)を取得します。 | ライン状態文字列 |
IFC |
GPIB バスの IFC(Interface Clear)を実行します。 | OK |
REM / REN |
GPIB バスの REN ラインをアサート(LOW)にし、リモートモードに移行します。 | OK |
LOC |
GPIB バスの REN ラインをネゲート(HIGH)にし、ローカル状態へ復帰します。 | OK |
DCL |
GPIB バス上の全機器へ Device Clear を発行し、初期状態にします。 | OK |
SDC:[addr]CLE:[addr] |
指定した GPIB アドレスの機器へ Selected Device Clear(SDC)を発行します。 ※アドレス省略時はデフォルト TAD の機器が対象になります。 |
OK / ERROR |
SRQ |
SRQ ラインの状態を取得します。負論理のため、機器が要求を出している場合は LOW が返ります。 |
HIGH / LOW |
SPO |
シリアルポールを実行し、SRQ を発信している機器のアドレスとステータスバイトを取得します。 | 発信時: addr:status未発信時: NONE |
TIM [ms] |
通信タイムアウト時間(ミリ秒)を取得または設定します。数値なしで現在値を取得します。 | タイムアウトミリ秒 |
BYE / QUI / EXI |
everGPIB との TCP 接続を切断・解放します。 | (切断) |
コマンド書式中の各パラメータはコロン : で区切ります。アドレスやデリミタを省略した場合は、EEPROM に設定されているデフォルト値(TAD / TER)が自動補完されます。
- TAL(送信): 指定した機器をリスナに設定し、コマンド文字列を送信します。
TAL:[addr]:[ter] <data>- 例:
TAL:12:13+10. *RST(アドレス12へ CR+LF 付加および EOI アサートで送信) - 例:
TAL *IDN?(デフォルトアドレス・デフォルトデリミタで送信) - 応答: 送信成功時
OK、タイムアウト等の失敗時ERROR
- 例:
- LIS(受信): 指定した機器をトーカに設定し、データ文字列を受信します。
LIS:[addr]:[ter]- 例:
LIS:12:13+10.(アドレス12から CR+LF または EOI 検出まで受信) - 例:
LIS(デフォルトアドレス・デフォルトデリミタで受信) - 応答: 受信したデータ文字列(タイムアウト時は受信途中までの文字列または空応答)
- 例:
- CHA(クエリ / 送受信): TAL と LIS を連続実行します(コマンド送信後に続けて応答を受信)。
CHA:[addr]:[ter] <data>- 例:
CHA:12:13+10. *IDN?(アドレス12へ*IDN?を送信し、機器からの応答を受信) - 応答: 受信したデータ文字列
- 例:
- 接続機器との互換性と事前の動作確認
GPIB(IEEE-488.1)規格は機器メーカーや設計年代によってバスコマンドの処理シーケンスや応答タイミングに独自の仕様・癖が存在します。そのため、本アダプタですべての GPIB 機器の正常動作を保証するものではありません。実システムへの導入や重要な測定に用いる前に、対象機器との間で必ず十分な動作試験・通信確認を行ってください。 - 連続制御時は事前に
REMコマンドを発行する推奨運用
本体の「自動 REN 機能(!ARE Y)」を有効にしている場合、事前にREMコマンドを発行していないと、TAL/LIS/CHAコマンド完了後に自動でローカル状態(REN ネゲート)へ復帰します。機器によってはローカル復帰に伴い出力停止やモード初期化等が生じる場合があるため、一連の制御を行う際は制御開始前に明示的にREMコマンドを発行してリモート状態を維持することを推奨します(事前にREMを発行しておけば自動ローカル復帰は行われません)。 - デリミタおよび EOI アサートの設定
GPIB 送受信において終端判定を行うため、制御対象機器の仕様に合致したデリミタまたは EOI アサートの設定が必須です。デリミタが空かつ EOI アサートなしの状態で送信コマンドを発行した場合はERRORが返されます。 - 切断時は必ず
BYEコマンドを使用する
TCP 接続を終了する際は、クライアント側からソケットを一方的に切断せず、必ずBYE(またはQUI,EXI)コマンドを送信してください。一方的な切断を行うと、イーサネットコントローラ側でソケットが解放されずデッドロックに陥る可能性があります(解除には本体のリセットまたは電源再投入が必要となります)。 - 電源投入時の給電電圧ドロップとリセットボタン
使用する USB 充電器や給電環境によっては、接続時に電圧が一瞬低下してイーサネットボードが正常に初期化されない場合があります(Link ランプは点灯するが ping が通らない等)。その場合は、本体のリセットボタン穴からプラスドライバ等で内部のプッシュボタンを 0.2 秒以上押してリセットを行ってください。 - 発熱と通風
通電使用中は内部のイーサネット基板が熱を持ちます。極端に通風の悪い密閉箇所での連続使用は避けてください。
各種設計資料および詳細な取扱説明書は docs ディレクトリに収録されています。
- docs/Manual_everGPIB.docx: 取扱説明書(詳細仕様、機器外観、トラブルシューティング、改訂履歴)
- docs/everGPIB_電気回路図.pdf: 電気回路図
- docs/everGPIB_結線図.pdf: 配線・結線図
- docs/everGPIB_NanoV3Ethernetシールド_パターンカット説明図.pdf: イーサネットシールドのパターンカット箇所指示図
本プロジェクトは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンス(CC BY-SA 4.0) の下で公開されています。
ライセンサー: mas-ka
詳細なライセンス条文は LICENSE を参照してください。