環境構築
- PC & DSPボード
Messia5を搭載するBittware社の
DSPボード(Hammerhead-PCI, ADSP-21160)が使用できるパソコンが必要
具体的な条件としては
3.3Vの電源がPCIバスから供給されること (この条件からCPUはXeonになる
らしい)
12.3"×4.8"のADSP-21160が物理的に入ること (full-sizeのPCIボードの規格
よりもさらに大きいらしい)
PCはぷらっとホームで購入した。
上記の条件を伝えれば、合うものを探してくれる。
KOOLS用に購入したものは
ケース : SuperMICRO SC742i-450
ラックマウントキット : SUPERMICRO CSEPT-26
マザーボード : SUPERMICRO X5DAL-TG2
CPU : Intel CPU Xeon-2.8GHz (×2)
他
※詳細は購入関係のページで
DSPボードについては、現在はISLE用として(旧バージョンとは知らずに)購入した
ボードを使用しているが、低温下では動作に支障があるので、できれば新しい
バージョンのボードを購入したい
購入先は株式会社スターブリッジ
(2005年2月に株式会社ロッキーより
移動)
見積、連絡先等についてはこちら。
- Messia5
Messia5 HPのInstallation How-toに従ってインストール
前準備は
WD603LN.tgz (*)
dsp21ksf702_gcc3.tgz (*)
messia040129.tgz (*)
cfitsio2490.tar.gz
kernel-source-2.4.20-8 (2004年12月に 2.4.20-31.9にupdate)
*のついた3つはHIDESで使っていたものを柳澤さんからもらった。
messia040129.tgzはDSP→PCの転送スピードが遅い旧バージョンのDSPボードに
対応させたものになっている。
cfitsioはインストール当時(2004/3)の最新版
/usr/src/linuxをkernel-source(/usr/src/linux-2.4.20-31.9 等)にリンク。
後は上記How-toに従う
2005年2月現在、sanjigenでの各種ソースの在処は
/usr/local/WinDriver/
/usr/local/dsp21ksf720_gcc3/
/usr/local/src/cfitsio/
/home/hattori/messia/
- GPG-7400 (モーター制御)
PCI-7414VのページからGPG-7400を落として来る(最初は登録が必要)
Messia5と同様 kernel-source (/usr/src/linux or /usr/src/linux-2.4)が
必要
変なインストーラが付いて来るが、自分でcommon.tgzとlgpg7400.i386.tgzを
展開して、必要なファイルを/usr/local/のbin,lib,includeにコピーする
方が良いかもしれない
※インストーラを使うと/usr/bin/dpg0101, /usr/lib/libgpg*,
/usr/include/fbimtn.h,dpg0100.hがインストールされる
※ソースは/usr/local/src/interface/にインストールした
interface/の
common/dpg0100/src、common/dpg0101/src、gpg7400/i386/linux/drivers/src
でmake; make install
/lib/modules/(kernel ver.)/miscにcp7400.o、dpg0100.o、dpg0101.oが
インストールされる
PC起動時に読み込まれるように、Messia5に倣って/etc/rc.localに
insmod /lib/modules/2.4.20-31.9smp/misc/dpg0100.o
insmod /lib/modules/2.4.20-31.9smp/misc/cp7400.o
を追加した
最初にボードを取り付けた時はdpg0101を実行して認識してやる必要がある
やり方はinterface/gpg7400/i386/linux/help/help.pdfを参照。設定変更は
特に必要なし。
- Java
J2SE 1.4.2 SDK
(入手先)
※sanjigenには2004/10に1.4.2_5 (j2sdk-1_4_2_05-linux-i586-rpm.bin)を
インストール
- 動作テスト(2004/3/16)
DSPボード単体(ISLE用に購入した旧バージョンのボード、2004/10の観測で使用)
/usr/local/dsp21ksf/bin/dspbad -d0 -i1
/usr/local/dsp21ksf/bin/dspbad -d0 -i2
/usr/local/dsp21ksf/bin/dspbad -d0 -i3
/usr/local/dsp21ksf/bin/dspbad -d0 -i4
のコンソール出力
→異常なし
Messia5搭載
テストのログ
「###server」とあるのがmessiaサーバーを立ち上げている端末、
「###client」とあるのがmコマンド等でサーバーと通信をしている端末の出力
→異常なし
※旧ver.ボードなので転送スピードが2.455MB/sと、Messia5 HPの記述=161.2MB/s
に比べて遅い
- msa_user_com.c
設定ファイル等 (全てmessia/local/に)
FITS_COMMENT.txt : fitsヘッダーのコメント
SPV.dat : Messiaのspvコマンドとフォーマットの一覧
STATUS.KOL.txt : Java GUIとの通信で取得するステータス一覧
filenumber.log : ファイル番号
control.c : 雑関数
socketio.c : Socket通信部分
使用方法についてはマニュアルを参照。
Notes
messia/system/msa_server.cでシグナルハンドラ(Msa_SignalHandler())が
定義されているので、露出の中断にはそれ(のSIGINTかSIGTERM)を利用して
いる。使い方はmessiaサーバーのターミナルでCtrl-c (2005/2/8現在 未動作
確認)。
- mコマンド
ステータス管理、UI、Cont74IIとの通信を行うメインプログラムはJavaで作成して
いるが、その中ではCCDの制御を行うMessiaサーバーとの通信にMessia5提供の
mコマンドを使用している。
mコマンドでは2番目の引数(argv[2])をコマンドとしてMessiaサーバーに送って
いるので、スペースを含むコマンドは「'」で囲んでやる必要がある。
が、JavaのRuntime.getRuntime().exec()ではshellの場合とは違ってうまく引数
を与える事ができなかったので、mコマンドの方を書き換えて(msa_m.c)、複数の
引数に対応するような形にした。
sprintf(command,"%s",argv[2]);
for(i=3;i<argc;i++)
{
sprintf(tbuf," %s",argv[i]);
strcat(command,tbuf);
}
error = Msa_Msa5_Command( argv[1], command );
という感じ。shスクリプトで対応しても良かったかもしれない。
本来なら手を抜かずにJavaでクライアント用のクラスを作るべきか。
モーター制御
- 現状
とりあえず動かすという目的で始めてしまったので、かなり手を抜いている。
一番の問題は動かす度に(Javaプログラムから)コマンドを起動している点。
このため普段はボードから何も信号が出ておらず、Hold off信号も出ないので
モーターに電流が流れっ放しになっている。
12月〜1月の観測では支障はなかったけれど、暖かくなってくるとモーターの
温度が上がって問題となる可能性もある。
FITS
- WCS
FITSファイルのWCSに関して。
CDi_jを用いる。2次元の場合の定義は以下のとおり(撮像モード)。
dα | = |
CD1_1 | CD1_2 | × |
dX |
dδ | CD2_1 | CD2_2 |
dY |
CCD上での方角は上のようになっているので、(X,Y)から(α,δ)への変換は、
X座標の反転と-PAの回転の重ね合わせになっている。
| | |
-PA回転 | | X反転 |
| ピクセルスケール |
| |
CD1_1 | CD1_2 | = |
cos(-PA) | -sin(-PA) | × |
-1 | 0 | × |
9.27778e-5 XBIN | 0 |
= |
-XBIN cos(PA) | YBIN sin(PA) |
× 9.27778e-5 |
CD2_1 | CD2_2 |
sin(-PA) | cos(-PA) |
0 | 1 |
0 | 9.27778e-5 YBIN |
XBIN sin(PA) | YBIN cos(PA) |
※XBIN,YBINはX,Y方向のbinning。1pixel = 0".334 = 9.27778e-5 degree