Differences between revisions 1 and 113 (spanning 112 versions)
Revision 1 as of 2017-05-31 17:52:05
Size: 29
Editor: KokiOkutomi
Comment:
Revision 113 as of 2021-11-03 18:42:06
Size: 23325
Editor: satoru.ikeda
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

<<TableOfContents(3)>>
------

== コンセプト ==
 * メンテナンスの手間を減らすために、各サスペンションで使うステージのブロックは共通化する。
 * 共通化で生じたステージブロックの不要な入出力は終端処理しておく。
 * サスペンションモデルは”制御方法の違い"ごとに、ブロックを分ける。

== サスペンションモデル ==
防振装置の役割に応じて、サスペンションのRTモデルを2つに分ける。
 * まず、LIGOの防振がSEIとSUSで分かれているように、KAGRAも分ける。
 * 慣習に従って、TowerとPayloadの2つのRTモデルに分ける。
 * ただし、例外として、Type-CはPayloadのみにする。

Towerモデル
 * TowerはLIGOのSEIに相当し、Pre-isolator、BFダンパー、GASを含むモデル。
 * Towerモデルは、1種類のブロックを用意する。
 * (追記:TypeA,B,Bpでタワー部分の制御方法が違うので、3種類にするかもしれない。)

Payloadモデル
 * PayloadはLIGOのSUSに相当し、BF以下の振り子を含むモデル。
 * Payloadモデルは、4種類のブロックを用意する。
  * Type-A用のモデル
  * Type-BとBp用のモデル
  * Type-CのIMC用のモデル
  * Type-CのOMC用のモデル

== ファイル ==

ライブラリモデル (/opt/rtcds/userapps/release/vis/common)
 * ./VIS_LIB.mdl : 共通で使うブロックを置く場所。
  * たくさんあるので省略。
 * ./TOWER_MASTER.mdl
  * ./PI(旧TOWER_MASTER) : TypeA,B,Bp用
 * PAYLOAD_MASTER.mdl
  * ./CRY(旧CRYOPAYLOAD_MASTER) : TypeA用
  * ./PAY(旧PAYLOAD_MASTER) : TypeB,Bp用
  * ./IMC(旧TYPEC_MASTER/IMC) : IMCの3つ,IMMT1,2用
  * ./OMC(旧TYPEC_MASTER/OMC) : OSTM,OMMT1,2用

サスペンションモデル (/opt/rtcds/userapps/release/vis/k1)
 * ./
  * k1vis{optics}t.mdl : TypeA,B,Bpのすべてのサスペンション
  * k1vis{optics}p.mdl : TypeA,B,Bpのすべてのサスペンション
  * k1vis{optics} : TypeCのすべてのサスペンション


== RTM Status ==
2021/04/05 updated

||optic ||Tower ||Payload ||Memo ||
||ETMX ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visetmxt/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visetmxp/webview.html#1|CRY]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15611|#15611]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15672|#15672]] ||
||ETMY ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visetmyt/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visetmyp/webview.html#1|CRY]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15611|#15611]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15662|#15662]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15669|#15669]] ||
||ITMX ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visitmxt/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visitmxp/webview.html#1|CRY]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15611|#15611]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15675|#15675]] ||
||ITMY ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visitmyt/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visitmyp/webview.html#1|CRY]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16217|#16217]] ||
||BS ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visbst/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visbsp/webview.html#1|PAY]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r= 16447|#16447]] ||
||SRM ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vissrmt/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vissrmp/webview.html#1|PAY]] ||[[https://klog.icrr.u-tokyo.ac.jp/?r=15632|#15632]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15660|#15660]] ||
||SR2 ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vissr2t/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vissr2p/webview.html#1|PAY]] ||[[https://klog.icrr.u-tokyo.ac.jp/?r=15632|#15632]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15937|#15937]] ||
||SR3 ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vissr3t/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vissr3p/webview.html#1|PAY]] ||[[http://klog.icrr.u-tokyo.ac.jp/osl/?r=15632|#15632]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15938|#15938]] ||
||PRM ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visprmt/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visprmp/webview.html#1|PAY]] ||[[https://klog.icrr.u-tokyo.ac.jp/?r=15632|#15632]] ,[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15636|#15636]] ,[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]] ,[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15652|#15652]] ,[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15659|#15659]] ||
||PR2 ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vispr2t/webview.html#1|PI]]||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vispr2p/webview.html#1|PAY]] ||[[https://klog.icrr.u-tokyo.ac.jp/?r=15632|#15632]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15636|#15636]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15677|#15677]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15938|#15938]] ||
||PR3 ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vispr3t/webview.html#1|PI]] ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vispr3p/webview.html#1|PAY]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15636|#15636]], [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=15641|#15641]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r= 16391 |#16391]] ||
||MCI ||--- ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vismci/webview.html#1|IMC]]||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16234|#16234]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16261|#16261]] ||
||MCE ||--- ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vismce/webview.html#1|IMC]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16234|#16234]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16261|#16261]] ||
||MCO ||--- || [[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1vismco/webview.html#1|IMC]] ||[[http://klog.icrr.u-tokyo.ac.jp//osl/?r= 16234|#16234]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16261|#16261]] ||
||IMMT1 ||--- ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visimmt1/webview.html#1|IMC]] || [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16234|#16234]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16261|#16261]] ||
||IMMT2 ||--- ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visimmt2/webview.html#1|IMC]] || [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16234|#16234]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16261|#16261]] ||
||OMMT1 ||--- ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visommt1/webview.html#1|OMC]] || [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16252|#16252]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16262|#16262]] ||
||OMMT2 ||--- ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visommt2/webview.html#1|OMC]] || [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16252|#16252]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16262|#16262]] ||
||OSTM ||--- ||[[https://gwdet.icrr.u-tokyo.ac.jp/~controls/modelview/k1visostm/webview.html#1|OMC]] || [[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16252|#16252]],[[http://klog.icrr.u-tokyo.ac.jp//osl/?r=16262|#16262]] ||
||TMSX || VIS_TMS_LIB/TMS_VIS||--- ||[4,6] ||
||TMSX || VIS_TMS_LIB/TMS_VIS||--- ||[6] ||

 * [4] リンクを解除している。
 * [6] スケジュールにはTMSをやる時間がないが、一応モデルの場所は把握しておく。ほとんど触っていないし中身も知らない。

== モデル編集 ==
=== 作業の流れ ===
1.既存モデル編集時のみ:mdl、Foton、DAQファイルを一旦バックアップ
{{{
 $ userapps
 /opt/rtcds/userapps/release
 $ cd vis/common/models または cd vis/k1/models
 編集するモデルファイルのコピーを作成しておく(編集前の比較用)
 $ chans
 /opt/rtcds/kamioka/k1/chans
  K1VISxxx.txt : Foton File
 $ cd daq/
 /opt/rtcds/kamioka/k1/daq
 K1VISxxx.ini : DAQ File
}}}
2.MATLAB(mdlファイル)の編集
{{{
 Terminalを開き
 $ matlab &
}}}
{{{
新規モデルの場合は、DCU ID、CPUを他のモデルと重複しない番号に変更
}}}
3.ビルド前の確認
{{{
 [sitemap]-[VIS]-[VIS_OVERVIEW]
 サスペンションはSAFEにすること。
 SDFが0であること。
 GDSがオールグリーンであること。
}}}
3.RealTimeModelのPCへログイン、make ,make install,startを行う
{{{
 [sitemap]-[CDS]-[CDS]でPC名を確認
 $ ssh k1xx (ex.k1EX1)
 ビルドフォルダへ移動
 $ cdscode
 make実行
 $ make k1visXXX
 install実行
 $ make install-k1visXXX
 モデルの再起動
 $ startk1visXXX

 モデルの再起動時に条件を満たせば次のコマンドを使用して時間短縮が行えます。
 [条件]SDFのK1:FEC-xxx_SDF_DIFF_CNTが0の時
 cd /opt/rtcds/userapps/release/cds/common/scripts
 ./restart_slave_model.sh [モデル名]
 iopの場合は、コマンドが異なるので要注意です。

 モデルが起動したら次の作業を行う。
}}}
 別途[[https://gwdoc.icrr.u-tokyo.ac.jp/DocDB/0124/E2012415/001/AutoBuild.html|AutoBuild]]も使えます。

4.新規のモデルの場合のみ次の手順を実施する

K1:FEC-xx_BURT_RESTOREを0から1に変更
{{{
新規のモデルファイルの場合は
caput K1-FEC-xx_BURT_RESTORE 1
が成功するまで設定を行う。チャンネルがないなどでエラーになった場合は設定できるまで繰り返す。 
Shell Scriptで実施すると便利。
while:
do
caput K1-FEC-xx_BURT_RESTORE 1
sleep 0.5
done
}}}

K1:FEC-xx_STATE_WORDの状態確認
{{{
sitemap-CDS-CDS-!refreshを押下してモデル名が表示されるまでしばらく待つ(1min)。
1.sitemap-CDS-CDSのモデル名のボタンを押下して K1xxx_GDS_TP.adlを表示
2.STATE WORD-FEが赤表示の場合はモデルを再起動して
caput K1-FEC-xx_BURT_RESTORE 1を再度実施する。
FE-NETが赤,DCが白抜きは現状では無視して良い。
}}}

SDF(safe.snap)を新規に作成
{{{
1.sitemap-CDS-CDSのモデル名のボタンを押下して K1xxx_GDS_TP.adlを表示
2.SDF TABLE-SDF SAVE SCREENを開く
 SAVE TABLE OR EPICS DB: EPICS DB TO FILE
 FILE OPTINS SELECTION: SAVE AS
 SAVE AS FILE NAME: safe
 SAVE FILEボタンを押下して、safe.snapを保存する。
3.SDF RESTORE SCREEN-LOAD TABLEを押下してsafe.snapを読み込む
}}}

mx_streamにモデルを登録して再起動
{{{
FE-NET(K1:FEC-xxx_FB_NET_STATUS)が赤の場合行います。
1.k1bootにログインしてrtsystabを編集
$ ssh k1boot
$ sudo emacs /diskless/root/etc/rtsystab
モデルを適当なところへ追加
2.mx_streamの再起動
sitemap-DAQ Status-!mx_streamを押下、ログを見て更新されているか確認
うまく行かない場合は手動でmx_streamを再起動する
$ ssh k1xxx(RTCPCへログイン)
$ sudo /etc/init.d/mx_stream restart
}}}

5.SDFの設定
{{{
 [sitemap]-[VIS]-[VIS_OVERVIEW]
 CHANS NOT FOUND がある場合:[SDF RESTORE SCREEN]-[LOAD TABLE]を押す
 CHANS NOT INITがある場合:[MON]([ACCEST]を含む)にして、[CONFIRM]を押す
}}}
6.Trippe Monitorが赤の場合
{{{
  [sitemap]-[VIS]-[VIS_OVERVIEW]
   - [Trippe]-[WD],[DK]を押す
 押しても緑にならない場合は、WDに引っ掛かっている為、対象のEPICSチャンネルの閾値等へ値を設定する必要があると思われます。
}}}
7.GDSが赤の場合
{{{
  [sitemap]-[VIS]-[VIS_OVERVIEW]-[GDS]
  [IPC]が赤
   [Diag Reset]を押す
  [DAQ LOAD]に差分がある場合は押す。
  [DC]
    -[Status]が0x2000の場合はDAQの再起動を行う
    -[Status]が0xbadの場合、
    [CDS]-[DAQ Status]-[!mx_stream]を押す
   
  [AWG]が赤の場合
   [sitemap]-[CDS]-[CDS]のCFCの隣の黄土色のボタンから[Admin only]-[start awgtpan]を押す
  [CFC]が赤(黄)色の場合
   DAQされているチャンネルがモデルにない時に発生します。
   例えば、モデルのインストール(make XXXとmake installXXX)まで完了して、再起動(startXXX)せずにDAQを再起動すると発生します。
   この場合は、モデルの再起動(startXXX)のみを行えば改善します。
}}}
8.Fotonファイルの編集とロード

モデルを2つに分割する場合のみ次の手順を実施

safe.snapを分割したモデルに適用する方法
{{{
 [sitemap]-[VIS]-[VIS_OVERVIEW]-[SDF]
 元のモデルのsafe.snapファイルをsafeold.snapにリネーム
 新規モデルで
 1.[SDF SAVE SCREEN]-[FILE OPTIONS SELECTION]を[SAVE AS]にして[SAVE AS FILENAME]へ[safe]にする
 2.[SDF RESTORE SCREEN]からsafe.snapを[LOAD TABLE]
 3.NOT INITは全て[MON]-[CONFIRM]
 4.safeold.snapを[LOAD TABLE]
 5.[SETTING]-[REVERT]-[CONFIRM]
 6.safe.snapを選択[LOAD TABLE]
 7.全て[ACCEPT]-[CONFIRM]
}}}


Fotonファイルの確認
{{{
 Fotonファイルの整合性の確認
 $ foton
 Fileから対象のK1VISxxx.txtを選択
 [File]ボタンを赤くなったら編集が必要、色が変わらなければ作業不要
 赤の場合はFotonファイルをテキストエディタで開き、新、旧のモデルファイルで同じ意味を持つフィルタは名称の変更を、該当しない場合は削除する。
 $ emacs K1VISxxx.txt
 赤で無くなるまで続ける。
}}}

9.[sitemap]-[CDS]-[CDS}からGDSを開き[COEFF LOAD]を押す

10.新規モデル、またはモデル削除の際は、DAQへの登録、削除が必要
{{{
 /opt/rtcds/kamioka/k1/target/fb へ移動
 $ target
 $ cd fb
 masterファイルを編集
 $ emacs master
 /opt/rtcds/kamioka/k1/chans/daq/K1XXX.ini
 /opt/rtcds/kamioka/k1/target/gds/param/tpchn_xxx.par
 の2行セットで編集すること。不要になっても削除せず#にてコメントアウトにしておく。(他の人が見てわかるように)
 修正後はDAQを再起動する
}}}

11.Fotonファイルを/opt/rtcds/userapps/release/vis/k1/fotonfilesへコピー

12.不必要なファイルを削除

=== トラブルシュート ===
==== ビルドエラー ====
IPCx component (3) K1:xxx not found in IPCx parameter file /opt/rtcds/kamioka/k1/chans/ipc/K1.ipc
{{{
 モデル間でSHMEMが共通の場合、参照先をビルドするとエラーになります。その場合2回makeをする必要になるケースがあります。エラーになった場合再度makeすると改善します。
 相互参照している場合、4回ビルドが必要になるかもしれません。
 ex.
 k1visitmytとk1bisitmypの2つのモジュールがあり、K1:VIS-ITMY_ISC_MN_OUTがPayloadに定義されていてそれをTower側で使おうとして先にTowerをビルドすると次のエラーが発生します。これはK1.ipcにまだ定義がない為発生するのでこれを避けるためには、PayloadをビルドしてからTowerをビルドします。
 ### IPCx component (3) K1:VIS-ITMY_ISC_MN_OUT not found in IPCx parameter file /opt/rtcds/kamioka/k1/chans/ipc/K1.ipc
 ***ERROR: The following IPCx RECIVER module(s) not found in the file /opt/rtcds/kamioka/k1/chans/ipc/K1.ipc:
   K1:VIS-ITMYP_ISC_MN_OUT
 ***ERROR: Aborting (this code can only automatically and IPCx SENDER modules)

 $ make k1visXXXt
  エラーが出る
 $ make k1visXXXp
 もう一度makeをする
 $ make k1visXXXt

}}}
Faild to perse the MDL file merging referrences at SystemXX.
{{{
1つのファイルの中で名称が被ると発生します。
例えばPAYLOAD_MASTERでMN,IMとか単純な名称をつけてCRYO_PAYLOAD_MASTERの中でMN,IMをLibrary linkで名称を変更せずに使用するとSystemMNとかSystemIMのエラーが発生します。
Library linkする場合、元の名称は_(アンダースコア)なしの長めの名称にして、使用時に名称を変更することが必要です。
}}}
ERROR: IPCx type mis-match for IPCx component K1:xxx IRFM0 : IRFM0 vs. IRFM1
{{{
このエラーはcdsIPCx_RFMが使用されているが、参照元の定義がない場合に出ます。
参照元の名前がある場合は、参照先で参照元で定義されたcard番号等が記述を間違っている可能性があるので確認してみる。
分からなければ参照元をコピーして再度参照先に貼り付けると直ります。
}}}
Couln’t find a signal XXX in the bus

Available signals:YYY1,YYY2
{{{
XXXにあるYYY1,YYY2が見つからない。
例えばADC Selectorなどで名前を変更忘れなど???とか表示されている場合に発生するエラーです。
該当する名称の見直し、またはつけ直しをすることで解消できます。
}}}

Processing output port #XX name=YYYY

Disconnected output port
{{{
port #XX name=YYYYがその先接続がない時に出力されます。
接続先を確認、Terminateする等の修正が必要です。
}}}

*** ERROR: Can't find a Goto for a From XXX

*** ERROR: The Goto must be in the same subsystem
{{{
 Fromラベルはあるが、対応するGotoラベルがない時に発生するエラーです。
 From、Gotoラベルが必要なのか不要なのか見直しを行いましょう。
}}}

Part XXX needs a single MUX input, detected Filt
{{{
cdsMuxMatrixとcdsFiltやラベルで繋げようとすると発生します。
cdsMuxMatrixの両端にMux, Demuxを配置して接続すると解消します。
}}}
Bad DAQ channel rate specified: xxx, 16
{{{
DAQの最低レートは32のようです。
#DAQ Channels定義を見直す必要があります。
}}}
[[https://git.ligo.org/cds/advligorts/-/blob/master/src/epics/util/lib/Parser3.pm|Parser3.pm#L.1436]]

K1:XXX-YYY

Died at /opt/rtcds/rtscore/tags/advLigoRTS-3.1.1/src/epics/util/fmseq.pl line 1330.
{{{
EPICSチャンネル自体を、DAQ Channelsに記述した場合にこのエラーが発生します。
この場合は不要なので削除すると直ります。
}}}
==== SDF ====
モデルを新規に作成したがSDF SAVE SCREENのSAVE FILEボタンを押しても保存されない
{{{
モデルファイルの名称にepicsを含めるとSAVE FILEボタンが押せなくなります。
ex. k1sdfepics.mdlとかはNGです。
この場合は名称を変更しましょう。
}}}

==== Guardian ====
CONNECTION ERROR, see SPM DIFFS for dead channel.

EZCA CONNECTION ERROR: Could not connect to channel.
{{{
Guardianの中で使っているEPICSチャンネルをモデルから削除した、またはモデルに追加していない為見つからないエラーです。
前者の場合は、Guardian側の修正が必要になる。後者の場合は、モデル側の修正が必要です。
}}}

==== DAC ====
iopモデルのDACが赤になる
{{{
[sitemap]-[CDS]-[CDS}
k1iopXXXのDACが赤の場合に考えられる不具合

1.Timing jumpでDACが打刻タイミング見失うパターン
2.IO chassis内ケーブルの接触不良
3.DAC故障
4.ケーブル回りをメンテした場合も発生するかもしれない(2021-11-02)

[対策]
上記1,4はモデル再起動
2,3ならば再起動では治らないので修繕が必要

}}}

==== DAQ ====
DAQチャンネルのデータレート毎の個数などが知りたい。
{{{
/opt/rtcds/rtscore/release/src/epics/util/iniChk.plを
/opt/rtcds/kamioka/k1/chans/daq配下のファイルを指定して確認できる。

例:
$ chans
$ cd daq
$ /opt/rtcds/rtscore/release/src/epics/util/iniChk.pl K1VISPRMT.ini

}}}

==== その他 ====
DAQの増減があった場合は、DAQの再起動(DAQ Kill)を行う必要があるが、[DAQ_KILL]のまま[RUN_TEST]に復帰しない場合の復帰手順
{{{
 [sitemap]-[CDS]-[DAQ Status]-[SYS_DAQ]を押下
 [RUN_TESTS]になっている状態から[DAQ_KILL]を選択
 その際、OPが[EXEC]になっていなければ先に[EXEC]に変更
 
 上記[DAQ_KILL]状態で止まっていて、[SPM DIFFS]がある場合は、次の手順で[DAQ_KILL]を行う必要があります。
 特にDAQチャンネルを削除した場合に発生します。
 OP:[EXEC]→[STOP]に変更、[LOAD]を押す、[all]を押して、[MANUAL]に変更して[RUN_TESTS]にする。
 [RUN_TESTS]になったら[AUTO]に戻して、[STEP]から[EXEC]に変更する。
 ここで[DAQ_KILL]を選択。
 (RUN_TESTにならない、DAQが0xbadのままならば[!mx_stream]を押してみる。)
}}}


RealTimeModelのPCが落ちた場合の復旧方法
{{{
DolphinありのFEの場合は、1と2を実施
DolphinなしでRFMとかのFEは2から実施
1.該当するFEのDolphinをDisableする
コマンドラインでsitemapを開いてログが見られるようにする。
注意:後述する[!dxadmin]の状況で赤丸の表示になっているのは道連れになってDisableされているので再度Disableはしないこと!

$ sitemap
[sitemap]-[CDS]-[Dolphin]を開く
[README]を読む
[!dxadmin]を開いて状況を確認する。
該当するFEのスクリプトを実行する
ex.[!k1pr2]、パスワードはいつもの
この時、他のFEも道連れになることがある。
この場合は、坑内で復旧作業が必要です。

2.RFMとかのモデルのみはここから実施
nslookupでIPを見つける。またはWIKIからIPを探す。
ex. $ nslookup k1ey1 とか
このIPにログインして再起動を試す。
$ sudo shutdown -r now

ログインできない場合は、このIPアドレスを使いブラウザでアクセスしてみる。
その際のIPアドレスは次のように3番目を99にする
ex. 10.68.10.221 ならば10.68.99.221にしてブラウザで表示
ユーザー名、パスワードはCDSへ問い合わせ
Resetを押してみる。
あとは祈る。起動しなければ坑内作業へ。
}}}

== 参考 ==
[[https://dcc.ligo.org/LIGO-T080135|LIGO-T080135: AdvLigo CDS Realtime Code Generator (RCG) Application Developer’s Guide]]

[[https://dcc.ligo.org/public/0001/T080135/005/LIGO-T080135-v5.pdf|LIGO-T080135: Real-time Code Generator (RCG) Application Developer’s Guide]]

[[https://dcc.ligo.org/public/0092/T1200291/001/LIGO-T1200291-v1.pdf|LIGO-T1200291: Real-time Code Generator (RCG) Software Component Overview]]

[[https://dcc.ligo.org/public/0118/T1500115/005/LIGO-T1500115-v5.pdf|LIGO-T1500115: Real-time Code Generator (RCG) SDF Software]]

Real Time Model Development


コンセプト

  • メンテナンスの手間を減らすために、各サスペンションで使うステージのブロックは共通化する。
  • 共通化で生じたステージブロックの不要な入出力は終端処理しておく。
  • サスペンションモデルは”制御方法の違い"ごとに、ブロックを分ける。

サスペンションモデル

防振装置の役割に応じて、サスペンションのRTモデルを2つに分ける。

  • まず、LIGOの防振がSEIとSUSで分かれているように、KAGRAも分ける。
  • 慣習に従って、TowerとPayloadの2つのRTモデルに分ける。
  • ただし、例外として、Type-CはPayloadのみにする。

Towerモデル

  • TowerはLIGOのSEIに相当し、Pre-isolator、BFダンパー、GASを含むモデル。
  • Towerモデルは、1種類のブロックを用意する。
  • (追記:TypeA,B,Bpでタワー部分の制御方法が違うので、3種類にするかもしれない。)

Payloadモデル

  • PayloadはLIGOのSUSに相当し、BF以下の振り子を含むモデル。
  • Payloadモデルは、4種類のブロックを用意する。
    • Type-A用のモデル
    • Type-BとBp用のモデル
    • Type-CのIMC用のモデル
    • Type-CのOMC用のモデル

ファイル

ライブラリモデル (/opt/rtcds/userapps/release/vis/common)

  • ./VIS_LIB.mdl : 共通で使うブロックを置く場所。
    • たくさんあるので省略。
  • ./TOWER_MASTER.mdl
    • ./PI(旧TOWER_MASTER) : TypeA,B,Bp用
  • PAYLOAD_MASTER.mdl
    • ./CRY(旧CRYOPAYLOAD_MASTER) : TypeA用
    • ./PAY(旧PAYLOAD_MASTER) : TypeB,Bp用
    • ./IMC(旧TYPEC_MASTER/IMC) : IMCの3つ,IMMT1,2用
    • ./OMC(旧TYPEC_MASTER/OMC) : OSTM,OMMT1,2用

サスペンションモデル (/opt/rtcds/userapps/release/vis/k1)

  • ./
    • k1vis{optics}t.mdl : TypeA,B,Bpのすべてのサスペンション
    • k1vis{optics}p.mdl : TypeA,B,Bpのすべてのサスペンション
    • k1vis{optics} : TypeCのすべてのサスペンション

RTM Status

2021/04/05 updated

optic

Tower

Payload

Memo

ETMX

PI

CRY

#15611, #15641, #15672

ETMY

PI

CRY

#15611, #15641, #15662,#15669

ITMX

PI

CRY

#15611, #15641, #15675

ITMY

PI

CRY

#16217

BS

PI

PAY

#16447

SRM

PI

PAY

#15632, #15641, #15660

SR2

PI

PAY

#15632, #15641, #15937

SR3

PI

PAY

#15632, #15938

PRM

PI

PAY

#15632 ,#15636 ,#15641 ,#15652 ,#15659

PR2

PI

PAY

#15632, #15636, #15641, #15677, #15938

PR3

PI

PAY

#15636, #15641,#16391

MCI

---

IMC

#16234,#16261

MCE

---

IMC

#16234,#16261

MCO

---

IMC

#16234,#16261

IMMT1

---

IMC

#16234,#16261

IMMT2

---

IMC

#16234,#16261

OMMT1

---

OMC

#16252,#16262

OMMT2

---

OMC

#16252,#16262

OSTM

---

OMC

#16252,#16262

TMSX

VIS_TMS_LIB/TMS_VIS

---

[4,6]

TMSX

VIS_TMS_LIB/TMS_VIS

---

[6]

  • [4] リンクを解除している。
  • [6] スケジュールにはTMSをやる時間がないが、一応モデルの場所は把握しておく。ほとんど触っていないし中身も知らない。

モデル編集

作業の流れ

1.既存モデル編集時のみ:mdl、Foton、DAQファイルを一旦バックアップ

 $ userapps
 /opt/rtcds/userapps/release
 $ cd vis/common/models または cd vis/k1/models
 編集するモデルファイルのコピーを作成しておく(編集前の比較用)
 $ chans
 /opt/rtcds/kamioka/k1/chans
  K1VISxxx.txt : Foton File
 $ cd daq/
 /opt/rtcds/kamioka/k1/daq
 K1VISxxx.ini : DAQ File

2.MATLAB(mdlファイル)の編集

 Terminalを開き
 $ matlab &

新規モデルの場合は、DCU ID、CPUを他のモデルと重複しない番号に変更

3.ビルド前の確認

 [sitemap]-[VIS]-[VIS_OVERVIEW]
 サスペンションはSAFEにすること。
 SDFが0であること。
 GDSがオールグリーンであること。

3.RealTimeModelのPCへログイン、make ,make install,startを行う

 [sitemap]-[CDS]-[CDS]でPC名を確認
 $ ssh k1xx (ex.k1EX1)
 ビルドフォルダへ移動
 $ cdscode
 make実行
 $ make k1visXXX
 install実行
 $ make install-k1visXXX
 モデルの再起動
 $ startk1visXXX

 モデルの再起動時に条件を満たせば次のコマンドを使用して時間短縮が行えます。
 [条件]SDFのK1:FEC-xxx_SDF_DIFF_CNTが0の時
 cd /opt/rtcds/userapps/release/cds/common/scripts
 ./restart_slave_model.sh [モデル名]
 iopの場合は、コマンドが異なるので要注意です。

 モデルが起動したら次の作業を行う。

4.新規のモデルの場合のみ次の手順を実施する

K1:FEC-xx_BURT_RESTOREを0から1に変更

新規のモデルファイルの場合は
caput K1-FEC-xx_BURT_RESTORE 1
が成功するまで設定を行う。チャンネルがないなどでエラーになった場合は設定できるまで繰り返す。 
Shell Scriptで実施すると便利。
while:
do
caput K1-FEC-xx_BURT_RESTORE 1
sleep 0.5
done

K1:FEC-xx_STATE_WORDの状態確認

sitemap-CDS-CDS-!refreshを押下してモデル名が表示されるまでしばらく待つ(1min)。
1.sitemap-CDS-CDSのモデル名のボタンを押下して K1xxx_GDS_TP.adlを表示
2.STATE WORD-FEが赤表示の場合はモデルを再起動して
caput K1-FEC-xx_BURT_RESTORE 1を再度実施する。
FE-NETが赤,DCが白抜きは現状では無視して良い。

SDF(safe.snap)を新規に作成

1.sitemap-CDS-CDSのモデル名のボタンを押下して K1xxx_GDS_TP.adlを表示
2.SDF TABLE-SDF SAVE SCREENを開く
 SAVE TABLE OR EPICS DB: EPICS DB TO FILE
 FILE OPTINS SELECTION: SAVE AS
 SAVE AS FILE NAME: safe
 SAVE FILEボタンを押下して、safe.snapを保存する。
3.SDF RESTORE SCREEN-LOAD TABLEを押下してsafe.snapを読み込む

mx_streamにモデルを登録して再起動

FE-NET(K1:FEC-xxx_FB_NET_STATUS)が赤の場合行います。
1.k1bootにログインしてrtsystabを編集
$ ssh k1boot
$ sudo emacs /diskless/root/etc/rtsystab
モデルを適当なところへ追加
2.mx_streamの再起動
sitemap-DAQ Status-!mx_streamを押下、ログを見て更新されているか確認
うまく行かない場合は手動でmx_streamを再起動する
$ ssh k1xxx(RTCPCへログイン)
$ sudo /etc/init.d/mx_stream restart

5.SDFの設定

 [sitemap]-[VIS]-[VIS_OVERVIEW]
 CHANS NOT FOUND がある場合:[SDF RESTORE SCREEN]-[LOAD TABLE]を押す 
 CHANS NOT INITがある場合:[MON]([ACCEST]を含む)にして、[CONFIRM]を押す

6.Trippe Monitorが赤の場合

  [sitemap]-[VIS]-[VIS_OVERVIEW]
   - [Trippe]-[WD],[DK]を押す
 押しても緑にならない場合は、WDに引っ掛かっている為、対象のEPICSチャンネルの閾値等へ値を設定する必要があると思われます。

7.GDSが赤の場合

  [sitemap]-[VIS]-[VIS_OVERVIEW]-[GDS]
  [IPC]が赤
   [Diag Reset]を押す
  [DAQ LOAD]に差分がある場合は押す。
  [DC]
    -[Status]が0x2000の場合はDAQの再起動を行う
    -[Status]が0xbadの場合、
    [CDS]-[DAQ Status]-[!mx_stream]を押す
   
  [AWG]が赤の場合
   [sitemap]-[CDS]-[CDS]のCFCの隣の黄土色のボタンから[Admin only]-[start awgtpan]を押す
  [CFC]が赤(黄)色の場合
   DAQされているチャンネルがモデルにない時に発生します。
   例えば、モデルのインストール(make XXXとmake installXXX)まで完了して、再起動(startXXX)せずにDAQを再起動すると発生します。
   この場合は、モデルの再起動(startXXX)のみを行えば改善します。

8.Fotonファイルの編集とロード

モデルを2つに分割する場合のみ次の手順を実施

safe.snapを分割したモデルに適用する方法

 [sitemap]-[VIS]-[VIS_OVERVIEW]-[SDF]
 元のモデルのsafe.snapファイルをsafeold.snapにリネーム
 新規モデルで
 1.[SDF SAVE SCREEN]-[FILE OPTIONS SELECTION]を[SAVE AS]にして[SAVE AS FILENAME]へ[safe]にする
 2.[SDF RESTORE SCREEN]からsafe.snapを[LOAD TABLE]
 3.NOT INITは全て[MON]-[CONFIRM]
 4.safeold.snapを[LOAD TABLE]
 5.[SETTING]-[REVERT]-[CONFIRM]
 6.safe.snapを選択[LOAD TABLE]
 7.全て[ACCEPT]-[CONFIRM]

Fotonファイルの確認

 Fotonファイルの整合性の確認
 $ foton
 Fileから対象のK1VISxxx.txtを選択
 [File]ボタンを赤くなったら編集が必要、色が変わらなければ作業不要
 赤の場合はFotonファイルをテキストエディタで開き、新、旧のモデルファイルで同じ意味を持つフィルタは名称の変更を、該当しない場合は削除する。
 $ emacs K1VISxxx.txt
 赤で無くなるまで続ける。

9.[sitemap]-[CDS]-[CDS}からGDSを開き[COEFF LOAD]を押す

10.新規モデル、またはモデル削除の際は、DAQへの登録、削除が必要

 /opt/rtcds/kamioka/k1/target/fb へ移動
 $ target
 $ cd fb
 masterファイルを編集
 $ emacs master
 /opt/rtcds/kamioka/k1/chans/daq/K1XXX.ini
 /opt/rtcds/kamioka/k1/target/gds/param/tpchn_xxx.par
 の2行セットで編集すること。不要になっても削除せず#にてコメントアウトにしておく。(他の人が見てわかるように) 
 修正後はDAQを再起動する

11.Fotonファイルを/opt/rtcds/userapps/release/vis/k1/fotonfilesへコピー

12.不必要なファイルを削除

トラブルシュート

ビルドエラー

IPCx component (3) K1:xxx not found in IPCx parameter file /opt/rtcds/kamioka/k1/chans/ipc/K1.ipc

 モデル間でSHMEMが共通の場合、参照先をビルドするとエラーになります。その場合2回makeをする必要になるケースがあります。エラーになった場合再度makeすると改善します。
 相互参照している場合、4回ビルドが必要になるかもしれません。
 ex.
 k1visitmytとk1bisitmypの2つのモジュールがあり、K1:VIS-ITMY_ISC_MN_OUTがPayloadに定義されていてそれをTower側で使おうとして先にTowerをビルドすると次のエラーが発生します。これはK1.ipcにまだ定義がない為発生するのでこれを避けるためには、PayloadをビルドしてからTowerをビルドします。
 ### IPCx component (3) K1:VIS-ITMY_ISC_MN_OUT not found in IPCx parameter file /opt/rtcds/kamioka/k1/chans/ipc/K1.ipc
 ***ERROR: The following IPCx RECIVER module(s) not found in the file /opt/rtcds/kamioka/k1/chans/ipc/K1.ipc:
   K1:VIS-ITMYP_ISC_MN_OUT
 ***ERROR: Aborting (this code can only automatically and IPCx SENDER modules)

 $ make k1visXXXt
  エラーが出る
 $ make k1visXXXp
 もう一度makeをする
 $ make k1visXXXt

Faild to perse the MDL file merging referrences at SystemXX.

1つのファイルの中で名称が被ると発生します。
例えばPAYLOAD_MASTERでMN,IMとか単純な名称をつけてCRYO_PAYLOAD_MASTERの中でMN,IMをLibrary linkで名称を変更せずに使用するとSystemMNとかSystemIMのエラーが発生します。
Library linkする場合、元の名称は_(アンダースコア)なしの長めの名称にして、使用時に名称を変更することが必要です。

ERROR: IPCx type mis-match for IPCx component K1:xxx IRFM0 : IRFM0 vs. IRFM1

このエラーはcdsIPCx_RFMが使用されているが、参照元の定義がない場合に出ます。
参照元の名前がある場合は、参照先で参照元で定義されたcard番号等が記述を間違っている可能性があるので確認してみる。
分からなければ参照元をコピーして再度参照先に貼り付けると直ります。

Couln’t find a signal XXX in the bus

Available signals:YYY1,YYY2

XXXにあるYYY1,YYY2が見つからない。
例えばADC Selectorなどで名前を変更忘れなど???とか表示されている場合に発生するエラーです。
該当する名称の見直し、またはつけ直しをすることで解消できます。

Processing output port #XX name=YYYY

Disconnected output port

port #XX name=YYYYがその先接続がない時に出力されます。
接続先を確認、Terminateする等の修正が必要です。

*** ERROR: Can't find a Goto for a From XXX

*** ERROR: The Goto must be in the same subsystem

 Fromラベルはあるが、対応するGotoラベルがない時に発生するエラーです。
 From、Gotoラベルが必要なのか不要なのか見直しを行いましょう。

Part XXX needs a single MUX input, detected Filt

cdsMuxMatrixとcdsFiltやラベルで繋げようとすると発生します。
cdsMuxMatrixの両端にMux, Demuxを配置して接続すると解消します。

Bad DAQ channel rate specified: xxx, 16

DAQの最低レートは32のようです。
#DAQ Channels定義を見直す必要があります。

Parser3.pm#L.1436

K1:XXX-YYY

Died at /opt/rtcds/rtscore/tags/advLigoRTS-3.1.1/src/epics/util/fmseq.pl line 1330.

EPICSチャンネル自体を、DAQ Channelsに記述した場合にこのエラーが発生します。
この場合は不要なので削除すると直ります。

SDF

モデルを新規に作成したがSDF SAVE SCREENのSAVE FILEボタンを押しても保存されない

モデルファイルの名称にepicsを含めるとSAVE FILEボタンが押せなくなります。
ex. k1sdfepics.mdlとかはNGです。
この場合は名称を変更しましょう。

Guardian

CONNECTION ERROR, see SPM DIFFS for dead channel.

EZCA CONNECTION ERROR: Could not connect to channel.

Guardianの中で使っているEPICSチャンネルをモデルから削除した、またはモデルに追加していない為見つからないエラーです。
前者の場合は、Guardian側の修正が必要になる。後者の場合は、モデル側の修正が必要です。

DAC

iopモデルのDACが赤になる

[sitemap]-[CDS]-[CDS}
k1iopXXXのDACが赤の場合に考えられる不具合

1.Timing jumpでDACが打刻タイミング見失うパターン
2.IO chassis内ケーブルの接触不良
3.DAC故障
4.ケーブル回りをメンテした場合も発生するかもしれない(2021-11-02)

[対策]
上記1,4はモデル再起動
2,3ならば再起動では治らないので修繕が必要

DAQ

DAQチャンネルのデータレート毎の個数などが知りたい。

/opt/rtcds/rtscore/release/src/epics/util/iniChk.plを
/opt/rtcds/kamioka/k1/chans/daq配下のファイルを指定して確認できる。

例:
$ chans
$ cd daq
$ /opt/rtcds/rtscore/release/src/epics/util/iniChk.pl K1VISPRMT.ini

その他

DAQの増減があった場合は、DAQの再起動(DAQ Kill)を行う必要があるが、[DAQ_KILL]のまま[RUN_TEST]に復帰しない場合の復帰手順

 [sitemap]-[CDS]-[DAQ Status]-[SYS_DAQ]を押下
 [RUN_TESTS]になっている状態から[DAQ_KILL]を選択
 その際、OPが[EXEC]になっていなければ先に[EXEC]に変更
 
 上記[DAQ_KILL]状態で止まっていて、[SPM DIFFS]がある場合は、次の手順で[DAQ_KILL]を行う必要があります。
 特にDAQチャンネルを削除した場合に発生します。
 OP:[EXEC]→[STOP]に変更、[LOAD]を押す、[all]を押して、[MANUAL]に変更して[RUN_TESTS]にする。
 [RUN_TESTS]になったら[AUTO]に戻して、[STEP]から[EXEC]に変更する。
 ここで[DAQ_KILL]を選択。
 (RUN_TESTにならない、DAQが0xbadのままならば[!mx_stream]を押してみる。)

RealTimeModelのPCが落ちた場合の復旧方法

DolphinありのFEの場合は、1と2を実施
DolphinなしでRFMとかのFEは2から実施
1.該当するFEのDolphinをDisableする
コマンドラインでsitemapを開いてログが見られるようにする。
注意:後述する[!dxadmin]の状況で赤丸の表示になっているのは道連れになってDisableされているので再度Disableはしないこと!

$ sitemap
[sitemap]-[CDS]-[Dolphin]を開く
[README]を読む
[!dxadmin]を開いて状況を確認する。
該当するFEのスクリプトを実行する
ex.[!k1pr2]、パスワードはいつもの
この時、他のFEも道連れになることがある。
この場合は、坑内で復旧作業が必要です。

2.RFMとかのモデルのみはここから実施
nslookupでIPを見つける。またはWIKIからIPを探す。
ex. $ nslookup k1ey1 とか
このIPにログインして再起動を試す。
$ sudo shutdown -r now

ログインできない場合は、このIPアドレスを使いブラウザでアクセスしてみる。
その際のIPアドレスは次のように3番目を99にする
ex. 10.68.10.221 ならば10.68.99.221にしてブラウザで表示
ユーザー名、パスワードはCDSへ問い合わせ
Resetを押してみる。
あとは祈る。起動しなければ坑内作業へ。

参考

LIGO-T080135: AdvLigo CDS Realtime Code Generator (RCG) Application Developer’s Guide

LIGO-T080135: Real-time Code Generator (RCG) Application Developer’s Guide

LIGO-T1200291: Real-time Code Generator (RCG) Software Component Overview

LIGO-T1500115: Real-time Code Generator (RCG) SDF Software

KAGRA/Subgroups/VIS/RealTimeModel (last edited 2023-08-24 15:33:48 by satoru.ikeda)