月: 2017年6月

LabviewでのRS232C通信3

前回までのダイアグラムに助言をいただいたのでデータを書き換えた。

前回まではループからデータを戻すことができなかったためループ回数の指定ができず、データが常に送信されている状態だった。

今回、シフトレジスタを使用することでループ時のプリセットの値を戻し、現在のプリセットの値と操作した値が異なる場合のみデータを送信し、値が等しい場合はすでに1度データを送信したものとみなし何もしない動作に変更した。その結果、1度の操作で無事データを1度だけ送信することに成功した。

さらに、実験機の仕様に合わせるため、データを16進数文字に変換し、送信データを”0x30″から”0x34″の5つのデータに変更した。プリセットの操作バーからは数値しか送信することはできないので、操作バーからの数値と”0x3″という文字列を結合したものを送信している。今回成功したブロックダイアグラムと完成版のフロントパネルを以下に示す。

Labviewダイアログ20170629
ブロックダイアグラム

今回のダイアグラムでは、シーケンスストラクチャが含まれるwhileループは1度目(カウンタ上では0回目)でループを抜け、値を返すようになっている。

Labviewフロントパネル20170629
フロントパネル

今回の実験で研究に使用するPC上のユーザーインターフェースが大まかに完成した。今後は、データ通信をFPGAで行うために、高速通信インターフェースIC「SERDES(SN75LVDT1422)」とPapilioを用いた実験を行っていく。具体的には、

・SERDESを2.54mmピッチに変換する基板のフットプリントをKiCAD上で作成

・Papilio用のSERDES拡張ボードの作成

・拡張ボードを使用した回路のVHDL記述

を行う。

広告

LabviewでのRS232C通信2

前回に引き続き選択した数値をRS232Cにて送るダイアグラムの作成。

前回のダイアグラムとシーケンスの待機場所を変更したところ、1度の通信(正確には1度の単クリック)で送られるデータ量が3つから2つに減少した。クリックされている時間分データが送信されていることがループ回数カウンタからも読み取ることができたので、今度はフラグを設け、ケースストラクチャ内でフラグの数によって送信するか値を捨てて待機するかを選択できるようにしてみる。

ただ、実際の実験装置での仕様によっては複数回同データが送信されて問題ないことになるので、その場合はこの改変はしないことになると思われる。

Labviewダイアログ20170627
ブロックダイアグラム

LabviewでのRS232C通信1

先日のPapilioでのRS232C通信はの続きを行った。受信コマンドに読み取り可能バイト数を検出するコマンドから取得した値を入れるとうまく動作しないが、直接値を指定すると正常に受信することが判明した。

また、読み取るバイト数を指定すると、「文字列の奇数番目をバイト数分」読み取るという動作をした。例えば、5バイト読み取りを指定すると、「0123456789」という10文字分の文字列のうち「02468」という読み取りが行われた。また読み取りバイトの2倍以下の文字数だとタイムアウトエラーが発生し、また読み取りバイト数の2倍以上の文字列ではオーバーフロー分のデータは読み込まなかった。

Labviewダイアログ20170622_1
LabviewとPapilioの通信ダイアグラム
Labviewフロントパネル20170622_1
PCとPapilioの通信パネル

おそらく、Labview側で文字列の終端または文字列1つ分の検知がされていないか、設定不良でデータをしっかり読み込んでいないものと思われる。しかし、TeraTermでデータを確認すると送信が正常に行われていることが判明しているため、一旦この実験は終了し、次の実験を行うことにする。

 

次の実験では、PCにRS232Cケーブルを2本接続し、それぞれを変換コネクタでピンを変更(クロスケーブル化)しつつ接続した。変換時のピン配置は図の通り。(RS232Cについての詳細はこちらを参照のこと。)

OLYMPUS DIGITAL CAMERA
RS232C変換コネクタ
RS232C変換ピン
RS232C変換コネクタピン配置

TeraTermで動作を確認後、Labviewにて、4段階のデータを送信するダイアグラムを作製した。動作は確認できたが、段階切り替え時、複数のデータが送信されてしまう。対策として、何らかの操作が行われるまで待機させるコマンドを追加したが、1度に2~3データは送信されてしまっている。次回以降対策を考えることにする。

Labviewダイアログ20170622_2
4段階データ送信ダイアグラム
Labviewフロントパネル20170622_2
4段階データ送信パネル

 

Labview動作テストと基礎学習2

先日に引き続きLabviewの動作テストを行った。

RS232Cでの通信をし、送られたデータをそのまま返す回路が組まれたPapilioを使用し、Labviewを介しての通信を行った。

先日作成したダイアグラムのままだと、読み取り可能バイト数が0となり、値が返ってこなかった。毎回読み取りバイト数を変更してみたが、処理がタイムアウトで終了してしまう。おそらく送信したデータの読み取りがダイアグラム上でできていないと思われる。

TeraTermを用いてPapilioと接続したところ、送受信の動作を確認することができた。Papilio自体の動作は正常であるため、一度ダイアグラムを見直してみることにする。

 

次回以降はこの作業と並行して、基礎学習の一環としてRS232Cケーブルを2本使用し、PC内でデータ通信の実験を行う。またRS232Cでのデータ送信の波形を確認してみる。

 

Labview動作テストと基礎学習

研究の最終目標となるNMRの観測システムについての基礎学習を開始した。基礎学習の内容については予備知識ページにて随時更新を行う。

また、Labviewを用いてRS232Cでの通信を行うダイアグラムの作成を行った。まだ試験段階なため、実験機が確保でき次第、動作実験を行ってみることにする。

Labviewダイアログ20170615.PNG
Labviewダイアグラム

 

Papilioの動作テスト2

昨日行っていたPapilioの動作テストの続き。miniUSBケーブルが確保できたので、昨日作成したサンプルコードの動作を確認した。下記の画像はそのソースコードである。Papilioに搭載されているLEDを点滅させるプログラムなので、ハード側の画像は省略する。

ソース20170613
図1 サンプルプログラムのソースコード

Papilioの動作が確認できたので、次はPapilio内の回路をVHDLにて変更し、動作を確認する。先行研究者から過去にPapilioの内部コードを変更した際のデータをもらった。このコードを見つつVHDLを学習し、内部回路の変更を行う。

 

また今後の予定として、Papilioを仮想COMポートではなくRS232Cケーブルを用いて接続しデータの取得を行えることを目標とする。PC側のデータ確認はLABViewを用いて行う。

 

Papilioの動作テスト1

Papilioを用いた動作テストを開始した。

まず、CQ出版社「Papilioで作るディジタル・ガジェット」に記載されている簡単なテストスケッチを作製した。Papilioに搭載されているLEDを点滅させるためのスケッチである。本のソースをそのまま記述したため、特に問題なくコンパイルが通ったが、PapilioとPCを接続するminiUSBケーブルが見当たらず、書き込みができていない。明日ケーブルを持参することにする。

 

それと同時に、同書を読み進め、Papilio内の回路構成を変更するための方法を確認した。先行研究社はVHDL(VHSIC Hardware Description Language, 超高速論理回路説明言語)というVHSIC(Very High Speed Intergrated Circuit,超高速論理回路)の開発のための言語を用いて作成している。VHDLに関してはインターネット上に詳細を記述したサイトを発見したので参考にする。

http://www.arch.cs.kumamoto-u.ac.jp/project/kite/3days/explain/VHDL/vhdl_tutorial.html

熊本大学自然科学研究科、末吉、久我、飯田研究室の学習サイトらしい。

 

それと並行して、Papilio Schematic Libraryという、ZAPIDEと同時にインストールされたGUI型の回路エディタの使用法も学ぶことにする。サンプルデータを動かそうとしたが、ライブラリデータが読み込めなかった。おそらくZAPIDEの保存先のパスに日本語が使用されているため、ソフトが認識してくれなかったことが原因と思われる。保存先を変更して試してみることにする。