transferArrayレコードについて
transferArrayとは?
subArrayを改良したレコードで、「あるwaveformの任意の範囲を、異なるwaveformの任意の位置にコピーする」機能をもつレコードです。
自身へは、コピーする内容が格納されます。
また、オプションで転送先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フラグ | menuYesNo | Yes | "NO" | Yes | No | No | No |
- OUTフィールドで、転送先のレコードを指定します。
- TASIフィールドで、転送元レコードのどこから転送を開始するかを、要素番号で指定します。指定は0オリジンですので、先頭の要素であれば、0を指定します。転送元レコードの要素数を超える値を指定することはできません。指定するとエラーとなり転送は行われません。
- TADIフィールドで、転送先レコードのどこに転送するかを、要素番号で指定します。TASIフィールドと同様に0オリジンでの指定になります。転送先レコードの要素数を超える値を指定することはできません。指定するとエラーとなり転送は行われません。
- TATCフィールドで、転送する要素数を指定します。転送元レコードや転送先レコードの領域を超えるような転送数を指定した場合、超えた分を無視して可能な分だけ転送を行います。この場合、レコードにLINK_ALARM/ALARM_MINORがセットされます。
- TAZFフィールドで、転送領域以降のZeroクリアをするかどうかを指定します。"NO"を指定するとZeroクリアをせずに、"YES"を指定するとZeroクリアを実施するようになります。
サンプル.dbファイル
record(waveform, "hig-iitk:db:src") { field(NELM, "10") field(FTVL, "LONG") } record(waveform, "hig-iitk:db:dst") { field(NELM, "10") field(FTVL, "LONG") } record(transferArray, "hig-iitk:ta:sample01") { field(NELM, "10") field(FTVL, "LONG") field(INP, "hig-iitk:db:src") field(OUT, "hig-iitk:db:dst") field(TASI, "2") field(TADI, "2") field(TATC, "5") field(TAZF, "NO") } record(transferArray, "hig-iitk:ta:sample02") { field(NELM, "10") field(FTVL, "LONG") field(INP, "hig-iitk:db:src") field(OUT, "hig-iitk:db:dst") field(TASI, "2") field(TADI, "2") field(TATC, "5") field(TAZF, "YES") }
上記.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_registerRecordDeviceDriver.cpp derives from yourIoc.dbd yourIoc_SRCS += transferArrayRecord.c ←追加 yourIoc_SRCS += yourIoc_registerRecordDeviceDriver.cpp
- <TOP>ディレクトリでmakeを実行します。
入手方法
ここからダウンロードできます。
Last modified 10 years ago
Last modified on 09/16/14 16:00:52
Attachments (1)
-
ta-image01.png
(20.6 KB) -
added by hig-iitk 10 years ago.
transferArray動作イメージ01
Download all attachments as: .zip