Version 6 (modified by hig-iitk, 10 years ago) (diff) |
---|
transferArrayレコードについて
transferArrayとは
waveformをベースにしたレコードで、あるレコードの任意の範囲を、異なるレコードの任意位置に転送する機能をもつレコードです。
自身の内容は、基本的に転送する領域と同じ内容になります。
また、オプションの指定で、転送領域以降を0クリアすることも可能です。
transferArrayレコードの使用方法について
waveformに対して追加されるパラメータフィールドは下表の通りです。
Field | Summary | Type | DCT | Initial | Access | Modify | Rec Proc Monitor | PP |
OUT | 出力先のレコード | OUTLINK | Yes | 0 | No | No | N/A | No |
TASI | 転送元の要素番号 | ULONG | Yes | 0 | Yes | No | No | No |
TADI | 転送先の要素番号 | ULONG | Yes | 0 | Yes | No | No | No |
TATC | 転送する要素数 | ULONG | Yes | 0 | Yes | No | No | No |
TAZF | Zero-fillフラグ | ULONG | Yes | 0 | Yes | No | No | No |
- OUTフィールドで、転送先のレコードを指定します。
- TASIフィールドで、転送元レコードのどこから転送を開始するかを、要素番号で指定します。指定は0オリジンですので、先頭の要素であれば、0を指定します。転送元レコードの要素数を超える値を指定することはできません。指定するとエラーとなり転送は行われません。
- TADIフィールドで、転送先レコードのどこに転送するかを、要素番号で指定します。TASIフィールドと同様に0オリジンでの指定になります。転送先レコードの要素数を超える値を指定することはできません。指定するとエラーとなり転送は行われません。
- TATCフィールドで、転送する要素数を指定します。転送元レコードや転送先レコードの領域を超えるような転送数を指定した場合、超えた分を無視して可能な分だけ転送を行います。この場合、レコードにLINK_ALARM/ALARM_MINORがセットされます。
サンプル.dbファイル
record(waveform, "hig-iitk:src") { field(NELM, "10") field(FTVL, "LONG") } record(waveform, "hig-iitk:dst") { field(NELM, "10") field(FTVL, "LONG") } record(transferArray, "hig-iitk:ta") { field(NELM, "10") field(FTVL, "LONG") field(INP, "hig-iitk:src") field(OUT, "hig-iitk:dst") field(TASI, "0") field(TADI, "0") field(TATC, "5") field(TAZF, "0") }
上記.dbファイルでhig-iitk:taをプロセスした場合の動作イメージ
make方法
- makeBaseApp.plで作成された<TOP>/yourIocApp/src/Makefileを編集します。
#---------------------------------------- # ADD MACRO DEFINITIONS AFTER THIS LINE #============================= DBDINC += transferArrayRecord ←追加 <中略> # yourIoc.dbd will be made up from these files: yourIoc_DBD += base.dbd yourIoc_DBD += transferArrayRecord.dbd ←追加 yourIoc_DBD += devTransferArrayRecord.dbd ←追加 <中略> # yourIoc_registerRecordDeviceDriver.cpp derives from yourIoc.dbd yourIoc_SRCS += transferArrayRecord.c ←追加 yourIoc_SRCS += devTransferArrayRecord.c ←追加 yourIoc_SRCS += yourIoc_registerRecordDeviceDriver.cpp
- <TOP>ディレクトリでmakeを実行します。
Attachments (1)
-
ta-image01.png
(20.6 KB) -
added by hig-iitk 10 years ago.
transferArray動作イメージ01
Download all attachments as: .zip