2018年11月18日日曜日

NI-VISA install

CentOSのセットアップ
 ラズパイでGPIBのドライバが簡単にインストールできないことが、この小型PCの導入の目的でした。NI社のドライバはCentOSに対応していると書かれています。ラズパイDebian系のディストリビューションがメインです。CentOSのコードはありますが、とても古いです。
 この小型PCにCentOSの最新版をインストールします。ダウンロードのページに入って、三つある中でDVD ISOを選びました。ダウンロードしたら、書き込みツールrufusでUSBメモリにISOファイルを書き込みます。
  http://mirror.fairway.ne.jp/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso

BIOSでインストール・メディアを選ぶ

 ブート時にF10を押すとブート・デバイスの選択画面に入れます。USBメモリを選択します。
  インストール先はSSDですが、すでにWindowsがインストールされているので、選択してDoneを押すと、空きがないとのメニューが出るので、再選択を選び、どこかのパーティションを選んで全削除を実行します。
 KDEのGUI、開発ツールを追加してインストールしました。

 リブート後に、ネットワークを有効にしてリブートすれば、インストールは終わります。

 アイコンFavoritesを選んだ時にSearchの欄にterminalを入れ、出てきたKonsoleを選びます。Xtermではありません。こちらはコピペができません。

NI-VISAのインストール step1
 Webブラウザを起動し、NI-VISA Linuxで検索し、
 NI-VISA-17.0.0.iso Downloadsに落としてきます。ユーザ登録が必要です。ファイル名をクリックしてもダウンロードしてきません。画面下にクッキーのアラートが出ています。リンクをクリックして出てくるページで、OKボタンが出ることがあるので、押します。戻ってきてもダウンロードできないときは、ファイル名を選んで別のタブを開くを選び、そのタブに移るとダウンロードできることがあります。
 Konsoleに入り、
mkdir NI
sudo mount -o loop Downloads/NI-VISA-17.0.0.iso NI
cd NI
sudo ./INSTALL
を実行します。3回yを入れるところがあります。17.0.0f1というバージョンが今日の時点でインストールされています。
エラーが出てアボートします。
error: Failed dependencies:
libstdc++.so.6 is needed by ni-pal-17.0.0.49152-0+f0.i386
libstdc++.so.6 is needed by ni-orb-nikalmod-17.0.0.49152-0+f0.x86_64
avahi is needed by nisyscfgi-17.0.0-f0.x86_64
Error installing NI-VISA for Linux 17.0.0f1.
Installer is aborted.
 mDNSのavahiをインストールします。
sudo yum install avahi
libstdc++.so.6 is needed by ni-pal-17.0.0.49152-0+f0.i386というメッセージで必要だといわれているファイルを探します。
yum provides */libstdc++.so.6
で、
 i686というのが32ビット用です。libstdc++-4.8.5-28.e17.i686が該当するようです。
sudo yum install libstdc++-4.8.5-28.el7.i686
でインストールします。もう一つの64ビット版のx86_64も同時に入ります。再度インストールします。
sudo ./INSTALL
 最後にrebootするかと聞かれるので、yesで答えます。

Step2
 左下のApplicationsからNational Insutrumentsを選び、NI-VISAのRemoteServerを起動します。エラーが出ます。updateNIDriversを動かすようにメッセージが出ています。


 sudo /usr/local/bin/updateNIDrivers
 nikalのビルドに失敗したと出ます。ソースを次のURLからダウンロードします。
http://www.ni.com/download/ni-kal-15.1/6549/en/
 Downloadsフォルダに保存します。NIKAL151.iosというファイルでした。このファイルをダブルクリックするとArkというユーティティが立ち上がるのでExractで解凍します。解凍した中にnikal-15.1.0f2.tar.gzがあるので、これも同じ場所に解凍します。
cd Downloads/NIKAL151
sudo ./INSTALL
 最後にrebootするかと聞かれるので、yesで答えます。

Step3
 RemoteServerを起動しますが、同じエラーが出ます。ソースの3か所を修正します。ファイル・ビューワで、
 /var/lib/nikal/3.10.0-862.el7.x86_64/nikal/
にあるnikal.cをダブルクリックすると、エディタのKWriteが立ち上がります。

#define NLNIKAL_CMD_SENDで検索したその次の行に1行追加します。
#define GENL_ID_GENERATE 0 // add

#ifdef nNIKAL1400_kHasFamilyGenlOpsGroupsで検索した2行をコメントアウトします。
#ifdef nNIKAL1400_kHasFamilyGenlOpsGroups
// if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops))) return status;
#else
// if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops, 1))) return status;
#endif

return do_munmap(mm, addr, len);で検索したその行の引数にNULLを追加します。
return do_munmap(mm, addr, len, NULL);
 Homeへ保存します。sudo cp nikal.c /var/lib/nikal/3.10.0-862.el7.x86_64/nikalで元の場所にコピーします。
 もう一度ドライバのアップデートを行います。時間がかかります。
sudo /usr/local/bin/updateNIDrivers
 最後にrebootするかと聞かれるので、yesで答えます。

Python3とpipのインストール
 もともとPython2が入っていました。pipは見当たりません。Python3を最初に入れます。次の二つでインストールします。
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y python36u python36u-devel python36u-libs
 実行は、
python3.6
です。
 ライブラリ管理のpipのインストールをします。
sudo python3 -m ensurepip
python3 -m ensurepip --upgrade
sudo pip3 install upgrade pip
実行は、
pip3



です。

2018年11月15日木曜日

SCPI言語を話す測定器をPythonでコントロールしたい

HPがHP-IBを作って、測定器を自動制御する規格を広めました。ヤフオクで購入できるディジタル・マルチメータ、オシロスコープ、スペアナ、電源など、ほとんどがGPIBを備えています。
 GPIBのケーブルだけでも高価です。
 PCのGPIBボードも高価です。
 Agilent 82357BはGPIBをUSBに変換してくれます。1万円ちょっとで購入できます。

visa
 GPIBは物理層です。USBやLAN(TCP/IP)、RS-232Cも物理層です。VXIとかいうバスも物理層です。
 これらをまとめて扱えるのがvisaです。話す言語はSCPIです。GPIBの基本的なコマンド以外に、機器独自なコマンドが用意されています。

Python
 世の中で一番学びたい言語がPythonなんだそうです。たぶん、IT系の人たちでしょう。
 Pythonにはvisaのライブラリがあるので、importするだけで通信ができます。もちろん条件はあります。
 RS-232Cは、WindowsならCOMドライバが必要です。UNIX系なら/dev/ttyUSB0とかができていると通信できるかもしれません。接続自体はUSBの口ですが。
 USBは測定器がUSBTMCの規格をサポートしていると、そしてGPIBのドライバが入っていると通信できます。GPIBのドライバは、KeysightとNIが用意しています。どちらも無償で利用できます。
 LANは条件はないようです。が、Windowsではつながりますが、ラズパイだと見つけられないとか、がおこりますが。
 LANはソケットでつなぐこともできます。

連載、まだ途中です。


(1) DMM 34461A-① LAN ソケット通信
(2) DMM 34461A-② USB usbtmc
(3) 電源 E3631    USB(GPIB) visa
(4) DMM 34461A-③ USB/LAN visa

(5) DMM VOAC7602 USB-シリアル変換 visa

(6) DMM 2000 ① RS-232C
(7) 温度計おんどとり ソケット
(番外編 ) 小型PCのセットアップ
(8) DMM 2000 ② visa(GPIB)