Skip to content

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

everGPIB

Arduino Nano Every と ENC28J60 を用いた、GPIB(IEEE-488)- Ethernet 変換アダプタ(GPIBコントローラ)のファームウェアです。
ホスト PC 等から Ethernet(TCP ソケット通信)経由でコマンドを送信し、GPIB 接続された各種測定機器・装置の制御およびデータ送受信を行います。


1. 概要・特徴

  • 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 に保存され、電源再投入後も保持されます。

2. ハードウェア構成とピン配置

主要コンポーネント

  • 制御マイコン: 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 を参照してください。


3. ファームウェアの書き込み

  1. 開発環境: Arduino IDE 2.x 以降を推奨
  2. ボード設定:
    • ボード: Arduino Nano Every
    • Registers emulation: None (ATMEGA4809)
  3. 必要ライブラリ:
    • EthernetENC(Microchip ENC28J60 用ライブラリ)
      ※Arduino 標準の Ethernet.h(WIZnet 系専用)ではなく、ライブラリマネージャから EthernetENC をインストールしてください。
  4. 書き込み:
    • everGPIB.ino を開き、Arduino Nano Every を USB 接続して書き込みを実行します。

4. 本体初期設定(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 アドレスの変更は、マイコン起動時のイーサネット初期化処理で読み込まれるため、設定後に一度電源を切って再起動を行うことで有効になります


5. TCP/IP 制御プロトコル

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? を送信し、機器からの応答を受信)
    • 応答: 受信したデータ文字列

6. 運用上の注意点

  • 接続機器との互換性と事前の動作確認
    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 秒以上押してリセットを行ってください。
  • 発熱と通風
    通電使用中は内部のイーサネット基板が熱を持ちます。極端に通風の悪い密閉箇所での連続使用は避けてください。

7. 関連ドキュメント

各種設計資料および詳細な取扱説明書は docs ディレクトリに収録されています。


8. ライセンス

本プロジェクトは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンス(CC BY-SA 4.0) の下で公開されています。
ライセンサー: mas-ka

詳細なライセンス条文は LICENSE を参照してください。

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages