RS232Cによる計測器の制御 の変更点


#author("2024-03-11T07:27:23+09:00","default:masami","masami")
*Mac, PCにおいて計測器をRS-232Cで制御する [#qc9a32db]
(これは古い話、現在はpythonで制御することが多いです。pythonでの制御に関しては[[SHOT-602をPythonで制御]]や[[ELL14をpythonで制御する]]をご覧ください。)
#author("2024-03-11T11:36:51+09:00","default:masami","masami")

 追記(2014/06/23)最近久しぶりに使ってみたところ、最新のOSX 10.9.3ではシリアルーUSB変換ケーブルのドライバーが動かないことが分かった。ATEN社からダウンロードできるドライバーは10.9.3では動かなかった。また、チップ製造元のProlific Technology社からのドライバーでもうまくいかなかった。ArvelのSRC06-USBは、販売元にはWindowsのドライバーしかないが、チップの製造会社のFTDI社からMac用ドライバーをダウンロードしたら、動作した。今はArvelのものを使っている。
 研究でRS-232C(シリアル)の付いた測定機器や制御装置を扱う必要がよくある。しかしレガシーI/OであるRS-232Cをもつパソコンは珍しくなった。そのためUSB-serialの変換ケーブルを使ってRS232Cへインターフェースするのが一般的になっている。最近REALbasic(現在はXojoになっている)のMac, Windows両方を使っているので(Macbook内で共存してる)、ごくわずかの手直しで同じプログラムをMac, Windows両方で動かせるようになった。RS232Cを制御するプログラムはWindows用は作ったことはあるが、Macではハードルが高そうだったのでこれまでやらなかったが、結局Windows, MacどちらもUSB-serial変換ケーブルを使う点で全く同じ状況になっていることに気づいた。Xojoなら共通に使えるプログラムが作れそうだ。またUSB-serial変換のドライバーがMac用にも用意されているケースがあることも偶然発見した。そこで半日ほどXojoで遊んでみたところ、意外に簡単にMacからも計測器/制御装置を動かす事ができることが分かった。Windowsでも同じプログラムが動く。
 まずUSB-serial変換器が必要。Mac用ドライバーも提供されていることが重要だが、前にRSから数個買った手持ちのATEN社製のUC-232Aは調べたところMac用ドライバーが提供されていた。ドライバーはhttps://www.atenjapan.jp/からダウンロードできる。このドライバーをインストールした。同様にWindows用もダウンロードして、インストール。アマゾンでちょっと調べてみたところ、Mac用ドライバーを提供している製品はこれ以外にも結構ある。Windowsの場合はUSB-serial変換器をUSBポートに差して、コントロールパネル->システム->ハードウェア->デバイスマネージャ->ポートからUSB-シリアル変換器がどのポートにアサインされているかが確認できる。またプロパティからボーレートやパリティの設定もここで出来る。計測/制御器で指定されている値に設定しておく(実際はプログラムから変えることはできるが念のため)。私の場合はCOM3となっていた.ポート番号はプロパティの詳細から強制的に変えることもできる。
 テストにはシグマ光機のSHOT-6022軸ステージコントローラを使った。同じシグマ光機のXYステージのマイクロメーターヘッド部分をパルスモーターのついたアクチュエータで置き換えたものをコントロールする。これは顕微ラマンのマッピングで試料位置をXY方向にスキャンするために使われている。1パルスで0.5micron移動する。これの設定は9600bps(デフォルト,max 19200pbsまで可)、パリティ無、1stop bit。 フロー制御はハードウエア、またCR+LFをコマンドの最後に付ける必要がある。
 プログラム作成にはXojoを使用した。serialのコントロールは標準で用意されている。serialコントロールをフォーム上に置いて、インスペクターで速度、パリティなどの設定を行う。WindowsもMacも全く同じ。
 Windows側は今の場合COM3なので
 Serial1.SerialPort = System.SerialPort("COM3")
 if Serial1.Open then