87
ユニファイドコントローラ nv シリーズ 情報・制御ネットワーク TC-net 100 PCI Expressカードサポートソフトウェア Red Hat Enterprise Linux 5.2/6.4版 取扱説明書 6E8C5413

情報・制御ネットワーク TC-net 100 PCI Expressカードサ …...ユニファイドコントローラ nvシリーズ 情報・制御ネットワーク TC-net 100 PCI Expressカードサポートソフトウェア

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • ユニファイドコントローラ

    nvシリーズ 情報・制御ネットワーク TC-net 100 PCI Expressカードサポートソフトウェア Red Hat Enterprise Linux 5.2/6.4版

    取扱説明書

    6E8C5413

  • ご注意

    (1)本書に掲載してある技術情報は、製品の代表的動作・応用を説明するためのもので、その使用に際しての当社および第三者

     知的財産権その他の権利に対する保証または実施権の許諾を行うものではありません。

    (2)本書の内容の一部または全部を無断で転載することは禁止されています。

    (3)本書の内容については、お断りなく変更することがあります。

    (4)本書の内容については万全を期しておりますが、万一不可解な点や、誤り、お気づきの点がございましたら、ご一報くだ

     さいますようお願いいたします。

    PROSEC 、TOSLINE、TOSDIC、CIEMACは、株式会社 東芝の登録商標または商標です。

    Microsoft、Windowsは、米国Microsoft Corporationの米国および他の国における登録商標です。

    DeviceNetは、Open DeviceNet Vender Association Inc.の登録商標です。

  • 6E8C5413

    1

    はじめに

    本書は、情報・制御ネットワーク TC-net 100 接続用に産業用コンピュータに実装するPCI ExpressカードJTNI61/62のRed Hat Enterprise Linux版サポートソフトウェアについての説明書です。

    本サポートソフトウェアは、以下の組み合わせにて動作可能です。

    ・ コンピュータ:産業用コンピュータFR2100S model 300

    OS: Red Hat Enterprise Linux 5.2 (64bit) (kernel 2.6.18)

    サポートソフトウェア ドライバ(型式: SHNI6LDA): バージョン V01.0*

    サポートソフトウェア ライブラリ(型式: SHNI6LLA): バージョン V01.0*

    ・ コンピュータ:産業用コンピュータFR2100SS model 500

    OS: Red Hat Enterprise Linux 6.4 (64bit) (kernel 2.6.32)

    サポートソフトウェア ドライバ(型式: SHJTND6A): バージョン V01.1*

    サポートソフトウェア ドライバ(型式: SHJTNL6A): バージョン V01.1*

    関連資料

    統合コントローラVシリーズ model 3000 情報・制御ネットワーク TC-net 100 取扱説明書(6E8C4083)

    統合コントローラVシリーズ 情報・制御ネットワーク TC-net 100 光シェアードハブユニット取扱説明書(6E8C4084)

    統合コントローラVシリーズ 情報・制御ネットワーク TC-net 100 PCIバスカード JTNIシリーズ取扱説明書(6E8C4086)

    ユニファイドコントローラ 情報・制御ネットワーク TC-net 100 PCI Expressバスカード JTNI6取扱説明書(6E8C5396)

  • 6E8C5413

    2

    目次

    はじめに .............................................................................................................................................................. 1

    1. インストールについて ................................................................................................................................. 5

    1.1. 概要 ............................................................................................................................................................... 5 1.2. ドライバのインストール .............................................................................................................................. 6 1.3. ライブラリのインストール .......................................................................................................................... 7 1.4. システムの再立ち上げ .................................................................................................................................. 8 1.5. インストールの確認 ..................................................................................................................................... 8 1.6. アンインストール ......................................................................................................................................... 8 1.7. アップデート ................................................................................................................................................ 8 1.8. カスタマイズ ................................................................................................................................................ 9

    2. ソフトウェア全体構成 ............................................................................................................................... 10

    2.1. 提供機能 ................................................................................................................................................. 11 2.2. サポート枚数 .......................................................................................................................................... 11

    3. アプリケーション開発上の注意 ................................................................................................................. 12

    3.1. インストールディレクトリ .................................................................................................................... 12 3.2. インクルードファイル(TCNEXLIB.H) ................................................................................................. 12 3.3. ライブラリファイル(LIBJTNIEX.SO) .................................................................................................. 12 3.4. 関数の使用開始と終了 ........................................................................................................................... 13

    4. デバイスドライバ ...................................................................................................................................... 14

    4.1. イベント一覧 .......................................................................................................................................... 14

    5. ツールウィンドウ ...................................................................................................................................... 15

    6. 利用ガイド ................................................................................................................................................. 21

    6.1. ステーション制御 ................................................................................................................................... 21 6.1.1 論理リングへの参入 ......................................................................................................................... 21

    6.2. スキャン伝送 .......................................................................................................................................... 22 6.2.1 スキャン伝送セットアップ .............................................................................................................. 22 6.2.2 データ受信と読み出し ..................................................................................................................... 23 6.2.3 データ送信と書き込み ..................................................................................................................... 23 6.2.4 スキャン情報マップ ......................................................................................................................... 23

    6.3. ステーション情報の利用 ........................................................................................................................ 25 6.3.1. インリングマップ ............................................................................................................................ 25 6.3.2. 局別診断情報 ................................................................................................................................... 25 6.3.3. ネットワーク診断カウンタ .............................................................................................................. 25

  • 6E8C5413

    3

    7. 関数一覧 ..................................................................................................................................................... 26

    8. 関数リファレンス ...................................................................................................................................... 27

    ■TcnOpen ..................................................................................................................................................... 27 ■TcnClose ..................................................................................................................................................... 29 ■TcnScmRead .............................................................................................................................................. 30 ■TcnScmReadWithHealthy ........................................................................................................................ 31 ■TcnScmWrite ............................................................................................................................................. 33 ■TcnSccSetControl ...................................................................................................................................... 34 ■TcnSccGetControl ...................................................................................................................................... 35 ■TcnSccSetCycle .......................................................................................................................................... 36 ■TcnSccGetCycle ......................................................................................................................................... 38 ■TcnScmSetTalkerBlk ................................................................................................................................ 39 ■TcnScmGetTalkerBlk ................................................................................................................................ 42 ■TcnSccSetScanMonitor ............................................................................................................................. 44 ■TcnSccGetScanMonitor ............................................................................................................................. 45 ■TcnSccScanContinue ................................................................................................................................. 46 ■TcnSccSetPowerMonitor ........................................................................................................................... 47 ■TcnSccGetPowerMonitor .......................................................................................................................... 48 ■TcnScmGetTalkerMap .............................................................................................................................. 49 ■TcnScmClrTalkerMap ............................................................................................................................... 51 ■TcnScmGetHealthyMap ............................................................................................................................ 52 ■TcnScmClrUnHealthyMap ....................................................................................................................... 53 ■TcnSccGetInringMap ................................................................................................................................ 54 ■TcnScmGetStnInf ...................................................................................................................................... 56 ■TcnScmClrStnInf ....................................................................................................................................... 58 ■TcnSccGetDualInf ..................................................................................................................................... 59 ■TcnSccClrDualInf ...................................................................................................................................... 60 ■TcnSccSetLinkControl .............................................................................................................................. 61 ■TcnSccGetLinkControl .............................................................................................................................. 62 ■TcnGetCorrespondence ............................................................................................................................. 63 ■TcnScmReportRasUsage ........................................................................................................................... 64 ■TcnGetVer .................................................................................................................................................. 65 ■TcnGetVer2 ................................................................................................................................................ 67 ■TcnGetLastError ....................................................................................................................................... 69 ■TcnSccSetTime .......................................................................................................................................... 70 ■TcnSccGetTime .......................................................................................................................................... 71 ■TcnSccSetTimeControl .............................................................................................................................. 72 ■TcnSccGetTimeControl ............................................................................................................................. 73

  • 6E8C5413

    4

    ■TcnSccGetPowerStatus ............................................................................................................................. 74 ■TcnRstJtni ................................................................................................................................................. 75

    9. ドライバイベント詳細 ............................................................................................................................... 76

    10. トラブルシューティング ............................................................................................................................ 80

    10.1. トラブルシューティングガイド ............................................................................................................. 80 10.2. RAS 情報の収集 ..................................................................................................................................... 81

    付録 A リターンコード ................................................................................................................................... 82

  • 6E8C5413

    5

    1. インストールについて

    1.1. 概要

    本ソフトウェアは rpm パッケージとして CD-ROM で供給されます。ご利用いただくには、本ソフトウェアを以下の手順に従ってインストールしていただく必要があります。 なお、インストールの実行にはスーパーユーザの権限が必要ですので、必ず root でログインしてください。

    (1)ドライバのインストール (2)ライブラリのインストール (3)システムの再立ち上げ

  • 6E8C5413

    6

    1.2. ドライバのインストール

    (1)CD-ROM ドライブのマウント

    CD-ROM を使用するために、CD-ROM ドライブをマウントする必要があります。

    JTNI RedHat 版ドライバの CD-ROM を CD-ROM ドライブに差し込んだ後、以下のコマンドを実行してください。

    # mkdir -p /mnt/cdrom

    # mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom

    # cd /mnt/cdrom/

    これでインストールの準備が完了しました。

    (2)rpm コマンドによるインストール CD-ROM に格納されている rpm パッケージを確認します。 # ls ↵ JTNIEXdrv26-**.**-*.*.x86_64.rpm (*:バージョン番号) 確認したファイル名を用いて、以下のコマンドを実行します。 # rpm -Uvh JTNIEXdrv26-**.**-*.*.x86_64.rpm 必要なファイルが展開され、インストールは完了となります。

    最後に CD-ROM ドライブをアンマウントしてください。

    # cd

    # umount /mnt/cdrom/

    図 1-1 インストール実施例(ドライバ)

  • 6E8C5413

    7

    1.3. ライブラリのインストール

    (1)CD-ROM を使用するために、CD-ROM ドライブをマウントする必要があります。

    JTNI RedHat 版ライブラリの CD-ROM を CD-ROM ドライブに差し込んだ後、以下のコマンドを実行してください。

    # mkdir -p /mnt/cdrom

    # mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom

    # cd /mnt/cdrom/

    これでインストールの準備が完了しました。

    (2)rpm コマンドによるインストール CD-ROM に格納されている rpm パッケージを確認します。 # ls ↵ JTNIEXlib26-**.**-*.*.x86_64.rpm (*:バージョン番号) 確認したファイル名を用いて、以下のコマンドを実行します。 # rpm -Uvh JTNIEXlib26-**.**-*.*.x86_64.rpm 必要なファイルが展開され、インストールは完了となります。

    最後に CD-ROM ドライブをアンマウントした後、CD-ROM を取り出してください。

    # cd

    # umount /mnt/cdrom/

    図 1-2 インストール実施例(ライブラリ)

  • 6E8C5413

    8

    1.4. システムの再立ち上げ

    インストールが完了した後、システムを再起動してください。 本ソフトウェアはシステム起動時に有効になります。

    1.5. インストールの確認

    インストールの確認は、以下のコマンドを実行してください。正しくインストールされている

    場合、以下のようにパッケージ名が表示されます。 # rpm -q JTNIEXdrv26 JTNIEXdrv26-**.**-*.*.x86_64.rpm (*:バージョン番号) # rpm -q JTNIEXlib26 JTNIEXlib26-**.**-*.*.x86_64.rpm (*:バージョン番号)

    1.6. アンインストール

    本ソフトウェアのアンインストールは、以下のコマンドを実行してください。 # rpm -e JTNIEXdrv26 # rpm -e JTNIEXlib26 インストール時に展開したファイルはすべて削除され、アンインストールは完了となります。

    1.7. アップデート

    本ソフトウェアのアップデートは、現在インストールされているパッケージをアンインストー

    ルした後、新しいパッケージをインストールしてください。

  • 6E8C5413

    9

    1.8. カスタマイズ

    コンフィグレーションファイル /etc/jtniex/jtniex.conf に記述されているパラメータを変更することで、カスタマイズを行うことができます。 jtniex.conf の記述例

    DMA_READ_THRESHOLD = 8

    DMA_WRITE_THRESHOLD = 16

    COM_OPTION = 0

    =より左: パラメータ =より右: パラメータの設定値

    パラメータの内容、初期値は以下の通りです。

    設定名 設定内容 初期値

    DMA_READ_THRESHOLD スキャンメモリを読み込む方法(DMA、PIO)を決定するための閾

    値を 128 バイト単位で設定します。

    (設定可能範囲:0KB~257KB)

    (例: 1024 バイトの場合は 8 を設定)

    読み込むサイズが閾値未満の場合はPIO、閾値以上の場合はDMA

    が 選 択 さ れ ま す 。 本 パ ラ メ ー タ は TcnScmRead 、

    TcnScmReadWithHealthy にて参照されます。

    8

    DMA_WRITE_THRESHOLD スキャンメモリに書き込む方法(DMA、PIO)を決定するための閾

    値を 64 バイト単位で設定します。

    (設定可能範囲:0KB~257KB)

    (例: 1024 バイトの場合は 16 を設定)

    書き込むサイズが閾値未満の場合はPIO、閾値以上の場合はDMA

    が選択されます。本パラメータは TcnScmWrite にて参照されま

    す。

    16

    COM_OPTION アプリケーションから TCCN パラメータ(高速スキャン周期、中

    速スキャン周期、低速スキャン周期、最大ノード間距離、最大リ

    ピータ段数に関する変更要求があった場合に COM フレームを送

    信するかどうかを決定します。送信禁止のときはスキャン送信周

    期の設定を実施してもネットワーク中のパラメータに動作しま

    す。以下の数値を設定します。

    0:COM フレームを送信する

    1:COM フレームを送信しない

    1

  • 6E8C5413

    10

    2. ソフトウェア全体構成

    本章では本サポートソフトウェアの全体構成を示します。図 2-1 の網掛け部分が本サポートソフトウ

    ェアにより提供される機能です。

    Linux アプリケーション: ユーザの作成するプログラム(64bit)

    メンテナンスウィンドウ/コマンド: 動作確認用ウィンドウ/コマンドプログラム(64bit)

    ユーザ空間: アプリケーションが動作するモード

    アプリケーションインタフェースライブラリ: Fenix およびスキャンメモリアクセス用インタフェースライブラリ

    (64bit)

    Fenix API: Fenix(FPGA)アクセス用ライブラリ

    スキャンメモリ API: スキャンメモリアクセス用ライブラリ

    カーネル空間: デバイスドライバの動作するモード

    JTNI6*デバイスドライバ: JTNI6*アクセス用デバイスドライバ(64bit)

    JTNI**: TC-net 100 PCI Express カード

    図 2-1 ソフトウェア全体構成図

    アプリケーション インタフェースライブラリ スキャンメモリ API Fenix API

    JTNI**デバイスドライバ (モジュール) Linux カーネル(GPL 部)

    Linux アプリケーション

    ホスト PC

    メンテナンスウィンドウ/コマンド

    JTNI6* PCI Express バス

    カーネル空間

    ユーザ空間

  • 6E8C5413

    11

    2.1. 提供機能

    本ソフトウェアでは、アプリケーションプログラムに対して、以下の機能を提供します。それ

    ぞれの機能はライブラリでの提供となりますので、アプリケーションプログラム作成時はライ

    ブラリのリンクが必要です。

    スキャンメモリアクセス

    JTNI カードが提供するスキャンメモリ空間にアクセスするためのインタフェースです。スキャンメモリの読み書きに加え、スキャントーカーブロックの登録、スキャンヘルシーマップの

    クリア、スキャントーカーマップの読み出しなどが可能です。

    Fenix API Fenixにアクセスするためのインタフェースです。スキャン伝送の開始、終了、スキャン周期

    の設定、伝送路の設定などが可能です。

    その他 付加機能としてJTNIカードのソフトウェアリセット、デバイスドライバ、API、JTNIカードの

    リビジョン情報を読み出す機能を備えています。

    2.2. サポート枚数

    本ソフトウェアがサポートする JTNI カードは最大2枚です。3枚以上のカードを実装した場合、全てのカードを使用することができません。

  • 6E8C5413

    12

    3. アプリケーション開発上の注意

    3.1. インストールディレクトリ

    ・/etc/jtniex/drivers/ 本ソフトウェアは、デフォルトで上記のディレクトリにインストールされます。

    3.2. インクルードファイル(tcnexlib.h)

    アプリケーションプログラム作成時にプログラム中で参照するインクルードファイルは、

    /usr/include/ に置かれます。

    3.3. ライブラリファイル(libjtniex.so)

    アプリケーションプログラム作成時にアプリケーションプログラムとリンクするライブラリ

    ファイルは、/usr/lib64/に置かれます。 本ライブラリをリンクするためには、コンパイラオプションに“-ljtniex”を追加する必要があ

    ります。

  • 6E8C5413

    13

    3.4. 関数の使用開始と終了

    libjtniex.soに属するAPIを使用する場合 TcnOpen を呼び出して以降の関数が必要とするハンドルを取得し、処理の終了時に TcnClose

    でハンドルを解放します。

    図 3-1 関数発行順序

    (注)高速スキャン周期、中速スキャン周期、低速スキャン周期、最大ノード間距離、最大リ

    ピータ段数は、システム全体で同じ値を設定します。ネットワークは最後に設定された値を採

    用するため、誤った値を設定すると、システム全体に反映されてしまいますのでご注意くださ

    い。

    TcnOpen

    TcnScmRead 他

    TcnClose

    スキャン送信周期の設定(注)

    スキャントーカーブロックの登録 (自局から送信を行う場合のみ)

    スキャン送信開始 (自局から送信を行う場合のみ)

  • 6E8C5413

    14

    4. デバイスドライバ

    4.1. イベント一覧

    表 4-1 に本デバイスドライバが用意しているイベントの一覧を示します。発生したイベントは/var/log/messages ファイルに記録されます。イベントの詳細は 9 章の「ドライバイベント詳細」を参照してください。

    表 4-1 ドライバイベント一覧 カテゴリ メッセージ ID 内容

    情報 1000 デバイスドライバ起動情報 〃 1002 スキャン伝送スタート 〃 1003 デバイスドライバ削除情報 〃 1004 スキャン停止情報 〃 1005 DMA 最大転送サイズ情報 〃 1006 DMA 最大転送パケットサイズ情報 〃 1999 デバイスオブジェクト作成エラー

    エラー 2000 デバイスドライバ登録失敗 〃 2001 デバイスドライバ削除失敗 〃 2002 JTNI カード検出エラー 〃 2003 ISR 登録エラー 〃 2004 タイマハンドラ登録失敗 〃 2006 ステーションアドレス設定異常 〃 2007 ステーションアドレス重複 〃 2008 規程枚数以上の JTNI カード検出 〃 2009 デバイス情報エリア確保失敗 〃 2100 サポートしていない割込み発生 〃 2101 DMA Write 転送タイムアウトエラー 〃 2102 DMA Read 転送タイムアウトエラー

    警告 3000 DMA リソース不足警告情報

  • 6E8C5413

    15

    5. ツールウィンドウ

    本サポートソフトウェアには正常に機能が動作しているか確認するためのツールウィンドウソフト

    ウェア(/usr/sbin/TCnetExWin)があります。本ソフトウェアは API で提供される機能を一通り実行す

    ることができます。

    ① Exit ボタン ⑥ Get ボタン ② Reset JTNI ボタン ⑦ Clear ボタン

    ③ Register ボタン ⑧ データ設定、読み出しボタン

    ④ Save ボタン ⑨ スキャン伝送設定 ⑤ スキャンメモリリード・ライト ⑩ カード選択ボタン

    図 5-1 ツールウィンドウ外観

    ②③

  • 6E8C5413

    16

    ① Exit ボタン

    ツールウィンドウを終了します。

    ② Reset JTNI ボタン

    JTNI カードをリセットします。Fenix のレジスタ設定などが初期設定に戻ります。

    ③ Register ボタン

    Fenix のレジスタを読み出します。

    ④ Save ボタン

    出力画面の内容をすべてファイルに保存します。図 5-2のように出力結果を表示した状態で本ボタ

    ンを押すと、ファイル保存ダイアログが現れます。データはテキストファイルとして保存されます。

    図 5-2 レジスタ情報出力結果例

  • 6E8C5413

    17

    ⑤ スキャンメモリリード・ライト

    スキャンメモリのリード・ライトを行います。Write、Read のラジオボタンにより両者の選択を行

    います。“Access”ボタンを押すことで、リード・ライトが実行されます。

    Write を行う場合は、オフセットアドレスを“Address:”エディットボックスに16進で、書き込

    むデータを“data:”エディットボックスに16進で、書き込むサイズを“Size:”エディットボック

    スに10進で入力します。Read を行う場合は、オフセットアドレスを“Address:”エディットボッ

    クスに16進で、読み出すデータサイズを“Size:”エディットボックスに10進で入力します。書

    き込み、読み出しデータサイズとも4(バイト)の整数倍で入力してください。

    スキャンメモリ空間はオフセット C0000H から始まり、1スキャンブロック 128 バイトで 2048 ブ

    ロックとなっています。下記にスキャンブロック1番にアクセスする入力例を示します。

    入力例

    リード: Address: 0xC0080 ライト: Address: 0xC0080

    Data: ― Data: 0xFFFFFFFF

    Size: 256 Size: 4

    ⑥ Get ボタン

    ボタンラベルに記載されているデータを読み出します。ボタンラベルと読み出されるデータの対応

    は下記のとおりです。

    GetVersion: バージョン情報

    GetTalkerMap: スキャントーカーマップ

    GetInringMap: インリングマップ

    GetHealthyMap: スキャンヘルシーマップ

    GetDualInf: 二重化診断情報

    GetStnInf: 局別診断情報

    ⑦ Clear ボタン

    ラジオボタンで選択されたデータ領域をクリアします。ボタンラベルとクリアされるデータ領域の

    対応は下記のとおりです。

    UnHealthyMap: アンヘルシーマップ

    StnInf: 局別診断情報

    TalkerMap: スキャントーカーマップ

    DualInf: 二重化診断情報

  • 6E8C5413

    18

    ⑧ データ設定、読み出しボタン

    “Set”、“Get”ボタンにより、プルダウンリストで選択されたデータの設定、読み出しを行いま

    す。プルダウンリストで選択できる項目は、スキャン周期、スキャントーカーブロック、受信系選択

    の3つです。

    A. スキャン周期

    プルダウンリストから“Scan cycle”を選択してコマンドボタンをクリックすると図 5-3 のダ

    イアログボックスが表示され、スキャン周期の設定を行うことができます。

    図 5-3 スキャン周期設定ダイアログ

    各エディットボックスの設定内容は表 5-1 のとおりです。

    表 5-1 スキャン周期設定項目内容

    ラベル 設定内容

    HScanCyc 高速スキャン周期(1~160ms:0.1ms 単位)

    (例:10.5ms を設定する場合は、105 をセット)

    MScanCyc 中速スキャン周期(2~1000ms:1ms 単位)

    (例:155ms を設定する場合は、155 をセット)

    LScanCyc 低速スキャン周期(2~10000ms:1ms 単位)

    (例:1555ms を設定する場合は、1555 をセット)

    MaxNodeDist 最大ノード間距離:最も離れているノード間の距離を設定し

    ます。ただし、デフォルト値の8kmよりも短い場合には、

    そのまま8kmと登録します。

    MaxRepeater 最大リピータ段数:最もリピータの段数の多い経路の値を設

    定します。ただし、デフォルト値の3段よりも小さい場合に

    は、そのまま3段と登録します。

  • 6E8C5413

    19

    B. スキャントーカーブロック

    プルダウンリストから“Talker block”を選択してコマンドボタンをクリックすると図 5-4 のダ

    イアログボックスが表示され、スキャントーカーブロックの設定を行うことができます。

    図 5-4 スキャントーカーブロック設定ダイアログ

    “High”、“Middle”、“Low”のラジオボタンはそれぞれ高速、中速、低速スキャンを示し

    ています。“BlkNum”には設定するスキャントーカーブロックの個数を入力します。“Index”

    は登録するスキャントーカーブロックに対するインデックスを示します。“Scan block”には設

    定するスキャントーカーブロックの番号を設定します。“Set”ボタンは設定パラメータを一時

    的に保存します。登録するスキャントーカーブロックを変更するたびにクリックしてください。

    実際に設定値を反映させるには“OK”ボタンをクリックしてください。

    高速、中速、低速のスキャントーカーブロックを1度に登録することはできません。高速、中

    速、低速と3回に分けて設定する必要があります。設定例として高速スキャンに 150~152 のス

    キャントーカーブロックを割付ける場合の手順を示します。

    手順1.“High”のラジオボタンをクリック。

    手順2.“BlkNum”エディットボックスに 3 を入力。

    手順3.“Index”エディットボックスに 0 が入力されていることを確認。

    手順4.“Scan block”エディットボックスに 150 を入力。

    手順5.“Set”ボタンをクリック。

    手順6.続けてスキャンブロックを設定する場合は“Index”に“BlkNum”の値が加わっている

    ことを確認し、手順1~5を繰り返す。

    手順7.“OK”ボタンをクリック。

    中速、低速スキャンにも設定を行う場合はそれぞれ“Middle”、“Low”のラジオボタンをクリ

    ックして同様の手順を繰り返します。

  • 6E8C5413

    20

    C. 受信系選択

    プルダウンリストから“Link control”を選択してコマンドボタンをクリックすると図 5-5 のダ

    イアログボックスが表示され、受信系選択の設定を行うことができます。

    図 5-5 受信系選択設定ダイアログ

    “Automatic”で自動受信系選択、“Manual A”で A 系受信優先選択、“Manual B”で B 系受

    信優先選択となります。

    ⑨ スキャン伝送設定

    スキャン伝送の開始、停止を行います。スキャン伝送を開始するには必要な設定が行われていな

    ければなりません。設定手順は下記のとおりです。

    手順1.ドライバ起動(システム起動時に自動起動)

    手順2.スキャン周期の設定(⇒ ⑧A)

    手順3.スキャントーカーブロックの設定(⇒ ⑧B)

    手順4.受信系の選択(⇒ ⑧C デフォルトの受信系自動選択のままでも可)

    ⑩ カード選択ボタン

    JTNI カード 2 枚実装時にアクセスするカードを切り替えます。実装カードが 1 枚の場合には“jtni0”のみ

    表示されます。

  • 6E8C5413

    21

    6. 利用ガイド

    本章では産業用コンピュータを情報・制御ネットワーク TC-net 100 に接続するために、システム構築

    およびプログラム設計で考慮すべきことについて説明します。また、実際に JTNI カードを利用する場合

    にどのような手順でサポートライブラリを利用するかについて説明します。

    本文中に頻繁に現れる TcnXxxxYyyy という形式の英字は、すべてサポート関数名を表します。

    6.1. ステーション制御

    6.1.1 論理リングへの参入 TC-net 100 では、DOMA(Deterministic Ordered Multiple Access)という伝送路アクセス方

    式を採用しています。DOMA ではトークンパッシング方式に似た論理リングに参入することで、他のステーションとの伝送を行います。 論理リングに参入するには TcnSccSetCycle でスキャン伝送周期を設定します。本関数を実行

    すると高速、中速、低速のスキャン伝送周期が設定され、論理リングに参入します。JTNI カードをリセットすると論理リングから離脱しますので、リセット後は再度 TcnSccSetCycle を実行して論理リングに参入してください。

  • 6E8C5413

    22

    6.2. スキャン伝送

    6.2.1 スキャン伝送セットアップ スキャン伝送を利用するには、次の設定が必要です。 ・スキャン送信周期の設定 ・スキャンヘルシー周期の設定(設定したスキャン送信周期の4倍の値に自動設定し、3周期

    分の診断を行います) ・スキャントーカーブロックの登録(自局から送信を行う場合のみ) ・スキャン送信開始(自局から送信を行う場合のみ)

    ■スキャン送信周期 スキャン伝送には、優先度により高速、中速、低速の指定があります。これらの周期は、自局

    が送信するか否かに関らず、それぞれのレベルを考慮して設定する必要があります。前述のよ

    うにスキャン伝送周期の設定には TcnSccSetCycle を使用します。現在の設定値を読み出すには TcnSccGetCycle を実行します。

    ■スキャンヘルシー周期 スキャンヘルシー周期は、一度でも受信したスキャンブロックが、繰り返し受信されているか

    をチェックするためのパラメータです。スキャン送信周期の4倍の値が 500ms よりも小さい場合は 500ms を設定し、500ms よりも大きい場合はスキャン送信周期の 4 倍の値(10ms 単位に繰り上げ)を設定して、3周期分の診断を行います。スキャンヘルシー周期は、スキャン送信

    周期が設定されると自動的に設定されます。

    ■スキャントーカーブロック スキャン送信を行うステーションにて設定します。各スキャンブロックの送信を行うステーシ

    ョン(トーカー)は1スキャンブロックに対して1ステーションです。スキャントーカーブロ

    ックを複数のステーションが重複して設定すると、重複設定されたスキャンブロックは他のス

    テーションで正常に受信されませんので注意してください。スキャントーカーブロックの重複

    確認については、「6.2.4 スキャン情報マップ」を参照ください。 スキャントーカーブロックの登録は、TcnScmSetTalkerBlk により行います。同時に複数レベ

    ルのスキャントーカーブロックを設定することはできませんので、高速、中速、低速と三度に

    分けて設定して下さい。現在設定されているスキャントーカーブロックを読み出すには

    TcnScmGetTalkerBlk を実行します。設定の場合と同様に、スキャントーカーブロックを読み出す際にも高速、中速、低速と三度に分けて読み出す必要があります。

    以上で設定は終了です。TcnSccSetControl を実行して、スキャン伝送を開始します。ただし、次の点に注意してください。

    スキャンデータを参照するステーションでは、スキャンデータの有効性を該当スキャンブロッ

    クがヘルシーであるか否かによってのみ判断する場合があります。例えば、産業用コンピュー

    タから他ステーションのコントローラに設定値を送る場合、TcnSccSetControl を呼び出すと、すぐにコントローラ側では受信データが有効と判断して制御に利用します。 この場合、コントローラが異常な設定値を利用しないように TcnSccSetControl を呼び出す

    前に、トーカー指定しているスキャンブロックにデータを設定しておく必要があります。

  • 6E8C5413

    23

    また、スキャン伝送中は TcnSccSetCycle、TcnScmSetTalkerBlk は実行できません。実行してもエラーが返されることはありませんが、設定結果が反映される保証はなく、最悪の場合、スキャン伝

    送が正常に動作しなくなる恐れがあります。スキャン送信周期やスキャントーカーブロックの再設

    定を行う際には必ずスキャン伝送を停止して設定変更を行い、その後再スタートしてください。

    6.2.2 データ受信と読み出し 他ステーションから周期的に送信されるスキャンデータは、JTNI カード内部で自動的にスキ

    ャンメモリに格納されます。1スキャンブロックのサイズは、128 バイトです。 あるコントローラがトーカー設定しているスキャンブロックのデータにアクセスする場合を

    考えます。コントローラがスキャンブロック 100 番を送信している場合、このデータにアクセスするにはオフセット値 3200H(100×128)を指定します。 JTNI カードは論理リングに参入すると自動的にスキャンデータの受信を開始します。スキャンメモリを読み出すには TcnScmRead を実行します。読み出すスキャンメモリのオフセット値、サイズとも4バイトアライメントを守る必要があります。DMA アクセスを使用する場合では、オフセット値が8バイトアライメント制約に変わります。

    6.2.3 データ送信と書き込み スキャン伝送セットアップを完了し TcnSccSetControl を実行して送信を開始すると、設定し

    たスキャン周期毎にトーカー設定したスキャンブロックが送信されます。送信データを更新す

    るには、該当スキャンブロックに TcnScmWrite によりデータを書き込みます。読み出し時と同様に、スキャンアドレスのオフセット値、サイズとも4バイトアライメントを守ってください。 DMA アクセスを使用する場合では、オフセット値が8バイトアライメント制約に変わります。

    6.2.4 スキャン情報マップ スキャン伝送に関係するマップとして、スキャンヘルシーマップ、スキャンアンヘルシーマッ

    プ、スキャントーカーマップがあります。 スキャンヘルシーマップは、現在のスキャンブロックの受信状況を1ビットで表します。ヘル

    シーなブロックは1、アンヘルシーなブロックは0で表されます。 スキャンアンヘルシーマップは、いったんヘルシーになりその後一度でもアンヘルシーと判定

    したブロックを表します。アンヘルシーなブロックには1がセットされます。スキャンアンヘ

    ルシーマップはアプリケーションプログラムがクリアするまで値が保持されます。スキャンア

    ンヘルシーマップをクリアするには TcnScmClrUnHealthyMap を実行します。 スキャントーカーマップは、各スキャンブロックのトーカーの情報がセットされたマップです。

    各スキャンブロックに設定されたトーカーのステーションアドレスがセットされます。 スキャンブロックを複数ステーションから重複して登録した場合、該当スキャンブロックのス

    キャントーカーマップには High バイト側に重複しているステーションのステーションアドレスがセットされます。重複ブロックの解除を行うには、互いに重複登録しているステーション

    のスキャントーカーブロックを再登録します。スキャントーカーマップの High バイト側にセットされた重複ブロックの情報は、アプリケーションプログラムからクリアされるまで保持され

    ます。重複ブロックのクリアは TcnScmClrTalkerMap により行います。 各マップは図 6-1、図 6-2 のような構成を取ります。

  • 6E8C5413

    24

    F E D 2 1 0

    +0 H 15 14 13 2 1 0 +2 H 31 30 29 18 17 16 +4 H 47 46 45 34 33 32

    ・ ・ ・ ・

    +7E H 1023 1022 1021 1010 1009 1008

    +FE H 2047 2046 2045 2033 2032 2031

    図 6-1 スキャンヘルシー、アンヘルシーマップの構成

    SA:ステーションアドレス F 8 7 0

    +0 H スキャンブロック No.0 重複送信 SA スキャンブロック No.0 送信 SA +2 H スキャンブロック No.1 重複送信 SA スキャンブロック No.1 送信 SA +4 H スキャンブロック No.2 重複送信 SA スキャンブロック No.2 送信 SA

    ・ ・ ・ ・ ・ ・

    +FFE H スキャンブロックNo.2047 重複送信SA スキャンブロック No.2047 送信 SA

    図 6-2 スキャントーカーマップの構成

  • 6E8C5413

    25

    6.3. ステーション情報の利用

    6.3.1. インリングマップ 論理リングに参入しているステーションの状態を示します。論理リングには最大254ステー

    ションまで参入することができます。インリングマップを取得するには TcnSccGetInringMapを実行します。インリングマップの構造については関数リファレンスの TcnSccGetInringMapの項を参照してください。

    6.3.2. 局別診断情報 局別診断情報は、他ステーションが送信するフレームを受信した際に、その受信フレームの診

    断内容あるいは情報をステーション毎に記録したものです。局別診断情報の詳細については関

    数リファレンスの TcnScmGetStnInf の項を参照ください。

    6.3.3. ネットワーク診断カウンタ ネットワークの状態を診断する RAS カウンタです。カウンタは次の構成をとります。

    +0 H A 系正常受信カウンタ +4 H B 系正常受信カウンタ +8 H A 系 NCD 受信カウンタ +C H B 系 NCD 受信カウンタ

    +10 H A 系異常受信カウンタ +14 H B 系異常受信カウンタ

    図 6-3 ネットワーク診断カウンタの構成

    伝送路がシングルの場合、診断カウンタは次の構成をとります。

    +0 H 正常受信カウンタ +4 H アライメントエラーカウンタ +8 H キャリア検出カウンタ +C H ミニマムサイズエラーカウンタ

    +10 H CRC エラーカウンタ +14 H サイズオーバーエラーカウンタ

    図 6-4 二重化診断カウンタの構成(シングルの場合) の構成

  • 6E8C5413

    26

    7. 関数一覧

    表 1 libjtniex.so の関数一覧 TcnOpen アクセスハンドルの取得 TcnClose ハンドルの解放 TcnScmRead スキャンデータの読み出し TcnScmReadWithHealthy スキャンデータの読み出し(ヘルシーマップ付き) TcnScmWrite スキャンデータの書き込み TcnSccSetControl スキャン伝送の開始/停止設定 TcnSccGetControl スキャン伝送動作状態の読み出し TcnSccSetCycle スキャン送信周期の設定 TcnSccGetCycle スキャン送信周期の読み出し TcnScmSetTalkerBlk スキャントーカーブロックの設定 TcnScmGetTalkerBlk スキャントーカーブロックの読み出し TcnSccSetScanMonitor 自装置のスキャン送信継続要求監視設定 TcnSccGetScanMonitor 自装置のスキャン送信継続要求監視設定読み出し TcnSccScanContinue 自装置のスキャン送信継続要求 TcnSccSetPowerMonitor 自装置の電源監視設定 TcnSccGetPowerMonitor 自装置の電源監視設定の読み出し TcnScmGetTalkerMap スキャントーカーマップの読み出し TcnScmClrTalkerMap スキャントーカーマップ重複ブロックのクリア TcnScmGetHealthyMap スキャンヘルシーマップの読み出し TcnScmClrUnHealthyMap スキャンアンヘルシーマップのクリア TcnSccGetInringMap インリングマップの取得 TcnScmGetStnInf 局別診断情報の読み出し TcnScmClrStnInf 局別診断情報のクリア TcnSccGetDualInf ネットワーク二重化診断カウンタの読み出し TcnSccClrDualInf ネットワーク二重化診断カウンタのクリア TcnSccSetLinkControl 受信系選択の設定 TcnSccGetLinkControl 受信系選択状態の読み出し TcnGetCorrespondence ロータリースイッチ設定値とカード論理番号の対応取得TcnScmReportRasUsage スキャンRASブロック使用開始/停止設定 TcnGetVer バージョン情報読み出し TcnGetVer2 バージョン情報読み出し(FPGAバージョン情報付き) TcnGetLastError エラーコードの読み出し TcnSccSetTime TC-net 100 時刻情報の設定 TcnSccGetTime TC-net 100 時刻情報の読み出し TcnSccSetTimeControl TC-net 100 時刻情報送信開始/終了制御 TcnSccGetTimeControl TC-net 100 時刻情報送信設定状態の読み出し TcnGetPowerStatus 電源状態の読み出し TcnRstJtni JTNIカードリセット

  • 6E8C5413

    27

    8. 関数リファレンス

    ■TcnOpen 名前

    TcnOpen - アクセスハンドルの取得

    形式 #include

    HANDLE TcnOpen(IN DWORD mdlid, OUT TcnCardinfo *p);

    説明 本サポートソフトウェアで提供する関数を使用するために必要なファイルハンドルを取得しま

    す。 第一引数には、JTNI カードの論理番号を指定します。実装されている JTNI カードが 1 枚の場合には、UNI_TYPE を指定してください。 JTNI カードを 2 枚実装する場合には、TcnGetCorrespondenceにより JTNIカードのロータリースイッチの設定とカード論理番号との対応を取得し、アクセスしたい JTNI カードの論理番号(JTNI0 の時は MULT_TYPE_0、JTNI1の時は MULT_TYPE_1)を指定してください。

    TcnCardinfo は下記構造体です。

    typedef struct TcnCardInfo { DWORD return_code; WORD NumberOfCards; WORD cardNumber; WORD cardType;

    } TcnCardInfo;

    戻り値

    正常終了でファイルハンドルが返されます。

    同時に NumberOfCards に実装カード枚数、cardNumber にカード番号、cardType にカードタイプが格納されます。

    異常終了の場合、STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。return_code には TcnGetLastError ()で取得できるエラーコードと同じ値が格納されています。

    使用例 #include

    HANDLE hDev;

    TcnCardInfo cardInfo;

    BOOL result;

    hDev = TcnOpen( UNI_TYPE, &cardInfo);

    if( hDev == STATUS_ERROR ) {

    printf("File Create Error! Code=%ld",TcnGetLastError());

    return;

  • 6E8C5413

    28

    }

    printf("NumberOfCards = %ld, cardNumber = %d",

    cardInfo.NumberOfCards, cardInfo.cardNumber );

    result = TcnClose(hDev);

    関連事項

    TcnClose, TcnGetCorrespondence

  • 6E8C5413

    29

    ■TcnClose 名前

    TcnClose - ハンドルの解放

    形式 #include

    BOOL TcnClose(IN HANDLE hDevice);

    説明 本サポートソフトウェアで提供する関数の使用終了時に、TcnOpen で取得したハンドルを引数にして呼び出し、ハンドルを解放します。

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    TcnCardInfo cardInfo;

    BOOL result;

    hDev = TcnOpen( UNI_TYPE, &cardInfo);

    if( hDev == STATUS_ERROR ) {

    printf("File Create Error! Code=%ld",TcnGetLastError());

    return;

    }

    printf("NumberOfCards = %ld, cardNumber = %d",

    cardInfo.NumberOfCards, cardInfo.cardNumber );

    result = TcnClose(hDev);

    関連事項

    TcnOpen

  • 6E8C5413

    30

    ■TcnScmRead 名前

    TcnScmRead - スキャンメモリの読み出し

    形式 #include

    BOOL TcnScmRead(IN HANDLE hDevice,

    IN DWORD dwOffset, IN DWORD dwSize, OUT LPBYTE lpBuf);

    説明 スキャンメモリ上のデータを読み出します。 hDevice:TcnOpen で得たファイルハンドル dwOffset:読み込むスキャンメモリデータのオフセットをバイト単位で指定。指定の際、4 バ

    イトの境界を守らなければなりません。DMA アクセスを使用する場合は、8バイト 境界を守らなければなりません。 dwSize:読み込むスキャンメモリデータのサイズを 4 バイト単位で指定。

    最大 64K(256K バイト)。 lpBuf:読み込むデータの格納エリア。dwSize で指定した以上のエリアが必要。

    dwSize にて1と指定した場合、4バイト以上のエリアが必要です。

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例

    スキャンブロック1番のデータを読み出す例を示します。 #include

    HANDLE hDev;

    BOOL result;

    DWORD buf[32];

    result = TcnScmRead( hDev, 128, 32, (LPBYTE)buf );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnScmRead fail. Code = %ld\n",TcnGetLastError());

    return;

    }

    関連事項

    TcnOpen, TcnScmReadWithHealthy, TcnScmWrite

  • 6E8C5413

    31

    ■TcnScmReadWithHealthy 名前

    TcnScmReadWithHealthy - ヘルシーマップ付きスキャンメモリの読み出し

    形式 #include

    BOOL TcnScmReadWithHealthy(IN HANDLE hDevice,

    IN DWORD dwOffset, IN DWORD dwSize,

    OUT LPBYTE lpBuf, OUT LPBYTE lpHealthy);

    説明 スキャンメモリ上のデータをヘルシーマップと共に読み出します。 hDevice:TcnOpen で得たファイルハンドル dwOffset:読み込むスキャンメモリデータのオフセットをバイト単位で指定。

    指定の際、4 バイトの境界を守らなければなりません。DMA アクセスを 使用する場合は、8バイト境界を守らなければなりません。 dwSize:読み込むスキャンメモリデータのサイズを 4 バイト単位で指定。 最大 64K (256K バイト)。 lpBuf:読み込むデータの格納エリア。dwSize で指定した以上のエリアが必要。 dwSize にて1と指定した場合、4バイト以上のエリアが必要です。 lpHealthy:ヘルシーマップ格納エリア。ヘルシーマップサイズ以上のエリア が必要です。

    ヘルシーマップは次のような構造をしています。

    アドレス(バイト) 0

    スキャンヘルシーマップ (256 バイト)

    0x100

    ヘルシーマップの中でスキャンヘルシーマップが全体のスキャンエリアの状態を示しています。

    各ブロック単位に 1 ビットが該当します。スキャンヘルシーで ON となります。 アンヘルシーで OFF となります。

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例

    スキャンヘルシーマップと共にスキャンブロック1番のデータを読み出す例を示します。 #include

    HANDLE hDev;

  • 6E8C5413

    32

    BOOL result;

    DWORD buf[32];

    DWORD hMap[64];

    result = TcnScmReadWithHealthy( hDev, 128, 32, (LPBYTE)buf, (LPBYTE)hMap );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnScmReadWithHealthy fail. Code = %ld\n",TcnGetLastError());

    return;

    }

    関連事項

    TcnOpen, TcnScmRead, TcnScmWrite

  • 6E8C5413

    33

    ■TcnScmWrite 名前

    TcnScmWrite - スキャンメモリの書き込み

    形式 #include

    BOOL TcnScmWrite(IN HANDLE hDevice,

    IN DWORD dwOffset, IN DWORD dwSize, IN LPBYTE lpBuf);

    説明 スキャンメモリ上へデータを書き込みます。 hDevice:TcnOpen で得たファイルハンドル dwOffset:書き込むスキャンメモリデータのオフセットをバイト単位で指定。指定の際、4 バ

    イトの境界を守らなければなりません。DMA アクセスを使用する場合は、8バイト 境界を守らなければなりません。 dwSize:書き込むスキャンメモリデータのサイズを 4 バイト単位で指定。 1と指定すると4バイトのデータを書き込みます。 lpBuf:書き込むデータの格納エリア dwSize で指定したサイズ以上のエリアが必要。dwSize に

    て1と指定した場合、4バイト以上のエリアが必要です。

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例

    スキャンブロック1番にデータを書き込む例を示します。 #include

    HANDLE hDev;

    BOOL result;

    DWORD buf[32];

    result = TcnScmWrite( hDev, 128, 32, (LPBYTE)buf );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnScmWrite fail. Code = %ld\n",TcnGetLastError());

    return;

    }

    関連事項

    TcnOpen, TcnScmRead, TcnScmReadWithHealthy

  • 6E8C5413

    34

    ■TcnSccSetControl 名前

    TcnSccSetControl - スキャン伝送の開始/停止設定

    形式 #include

    BOOL TcnSccSetControl (IN HANDLE hDevice, IN DWORD dwMode);

    説明 スキャンの起動/停止を制御します。 hDevice:TcnOpen で得たファイルハンドル dwMode: SCAN_START でスキャン開始、SCAN_STOP でスキャン停止

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    // スキャン開始(スキャン送信周期、スキャントーカーブロックの設定が完了してから行う)

    result = TcnSccSetControl( hDev, SCAN_START );

    if( result != STATUS_OK ){

    printf("TcnSccSetControl fail. Code = %ld\n",TcnGetLastError());

    }

    関連事項

    TcnSccGetControl

  • 6E8C5413

    35

    ■TcnSccGetControl 名前

    TcnSccGetControl - スキャン伝送動作状態の読み出し

    形式 #include < tcnexlib.h>

    BOOL TcnSccGetControl (IN HANDLE hDevice, OUT LPDWORD lpdwMode);

    説明 スキャンの動作状態を読み出します。 hDevice:TcnOpen で得たファイルハンドル

    戻り値

    正常終了で STATUS_OK が返されます。

    同時に、lpdwMode に SCAN_START でスキャン開始、SCAN_STOP でスキャン停止情報が格納されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    DWORD data;

    result = TcnSccGetControl( hDev, &data );

    if( result != STATUS_OK ){

    printf("TcnSccGetControl fail. Code = %ld\n",TcnGetLastError());

    }

    関連事項

    TcnSccSetControl

  • 6E8C5413

    36

    ■TcnSccSetCycle 名前

    TcnSccSetCycle - スキャン送信周期の設定

    形式 #include

    BOOL TcnSccSetCycle (IN HANDLE hDevice, IN SccCycle *p);

    説明 スキャン送信周期を設定します。 hDevice:TcnOpen で得たファイルハンドル 設定データの格納エリア SccCycle は下記構造体です。格納エリアは SccCycle サイズ以上のエリアが必要です。

    typedef struct SccCycle { WORD HScanCyc; WORD MScanCyc; WORD LScanCyc; WORD MaxNodeDist; WORD MaxRepeater;

    } SccCycle; HScanCyc は高速スキャン周期(1ms~160ms:0.1ms 単位) (10.5ms 周期を設定する場合は、105 をセット) MScanCyc は中速スキャン周期(2ms~1000ms:1ms 単位) (155ms 周期を設定する場合は、155 をセット) LScanCyc は低速スキャン周期(2ms~10000ms:1ms 単位) (1555ms 周期を設定する場合は、1555 をセット) MaxNodeDist は最大ノード間距離(1km~8km:1Km 単位) (7.3km を設定する場合は、8 をセット) (デフォルト値 8km を推奨) MaxRepeater は最大リピータ段数(1~10:1 単位) (3 段を設定する場合は、3 をセット) 但し、3 段より少ない場合には、3 段と登録します。

    高速スキャン周期、中速スキャン周期、低速スキャン周期、最大ノード間距離、最大リピータ

    段数は、システム全体で同じ値を設定します。

    本関数を実行するとネットワーク参入を行います。

    ネットワークは最後に設定された値を採用するため、誤った値を設定すると、システム全体に

    反映されてしまいますのでご注意ください。

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例

  • 6E8C5413

    37

    スキャン送信周期を高速 10ms、中速 100ms、低速 1000ms に設定する例を示します。 #include

    HANDLE hDev;

    SccCycle cycle;

    // スキャン送信周期の設定

    cycle.HScanCyc = 100; // 10ms

    cycle.MScanCyc = 100; // 100ms

    cycle.LScanCyc = 1000; // 1000ms

    cycle.MaxNodeDist = 8;

    cycle.MaxRepeater = 3;

    result = TcnSccSetCycle( hDevice, &cycle );

    if( result != STATUS_OK ){

    printf(" TcnSccSetCycle fail. Code = %ld\n",TcnGetLastError());

    }

    関連事項

    TcnSccGetCycle

  • 6E8C5413

    38

    ■TcnSccGetCycle 名前

    TcnSccGetCycle - スキャン送信周期の読み出し

    形式 #include

    BOOL TcnSccGetCycle (IN HANDLE hDevice, OUT SccCycle *p);

    説明 スキャン送信周期を読み出します。 hDevice:TcnOpen で得たファイルハンドル 読み込むデータの格納エリア SccCycle は TcnSccSetCycle で使用する構造体と同様です。

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    SccCycle cycle;

    result = TcnSccGetCycle( hDev, &cycle );

    if( result != STATUS_OK ){

    printf("TcnSccGetCycle fail. Code = %ld\n",TcnGetLastError());

    }

    関連事項

    TcnSccSetCycle

  • 6E8C5413

    39

    ■TcnScmSetTalkerBlk 名前

    TcnScmSetTaklerBlk - スキャントーカーブロック(送信ブロック)の設定

    形式 #include

    BOOL TcnScmSetTaklerBlk (IN HANDLE hDevice, IN ScanTalkerBlk *p);

    説明 スキャントーカーブロック(送信ブロック)の設定を行います。 hDevice:TcnOpen で得たファイルハンドル 設定データの格納エリア ScanTalkerBlk は下記構造体です。格納エリアは ScanTalkerBlk サイズ以上のエリアが必要です。

    typedef struct ScanTalkerBlk { WORD ScanType; WORD BlkNum; WORD Blk[384];

    } ScanTalkerBlk; ScanType は設定を行うスキャン伝送タイプ(1:高速、2:中速、3:低速) BlkNum は登録するスキャンブロック数 (高速:0~64、0は登録無し) (中速:0~128、0は登録無し) (低速:0~384、0は登録無し) Blk[ ]は各スキャンブロックの番号(0~2047) 使用するブロック番号を上詰めにセットします。 (1792~2047は RAS 情報を展開しますのでなるべく使用しないでください) (例1)高速スキャンに5、10、15ブロックを登録する場合 ScanType = 1; BlkNum = 3; Blk[0] = 5; Blk[1] = 10; Blk[2] = 15; ・登録内容を変更したい場合

    最終的に登録したい情報をセットし、要求を行います。 上記例1から10ブロックを削除したい場合は、以下の様になります。

    ScanType = 1; BlkNum = 2; Blk[0] = 5; Blk[1] = 15;

  • 6E8C5413

    40

    上記例1から20ブロックを追加したい場合は、以下の様になります。

    ScanType = 1; BlkNum = 4; Blk[0] = 5; Blk[1] = 10; Blk[2] = 15;

    Blk[3] = 20;

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例

    高速スキャンにブロック1、2、中速スキャンにブロック3、低速スキャンにブロック4を割り当てる例を

    示します。

    #include

    HANDLE hDev;

    ScanTalkerBlk tlkBlk;

    tlkBlk.ScanType = 1; // 高速

    tlkBlk.BlkNum = 2; // 2ブロック

    tlkBlk.Blk[0] = 1;

    tlkBlk.Blk[1] = 2;

    result = TcnScmSetTalkerBlk( hDevice, &tlkBlk );

    if( result != STATUS_OK ){

    printf(" TcnScmSetTalkerBlk fail. Code = %ld\n",TcnGetLastError());

    }

    tlkBlk.ScanType = 2; // 中速

    tlkBlk.BlkNum = 1; // 1ブロック

    tlkBlk.Blk[0] = 3;

    result = TcnScmSetTalkerBlk( hDevice, &tlkBlk );

    if( result != STATUS_OK ){

    printf(" TcnScmSetTalkerBlk fail. Code = %ld\n",TcnGetLastError());

    }

    tlkBlk.ScanType = 3; // 低速

    tlkBlk.BlkNum = 1; // 1ブロック

    tlkBlk.Blk[0] = 4;

    result = TcnScmSetTalkerBlk( hDevice, &tlkBlk );

    if( result != STATUS_OK ){

  • 6E8C5413

    41

    printf(" TcnScmSetTalkerBlk fail. Code = %ld\n",TcnGetLastError());

    }

    関連事項

    TcnSccGetTaklerBlk

  • 6E8C5413

    42

    ■TcnScmGetTalkerBlk 名前

    TcnScmGetTaklerBlk - スキャントーカーブロック(送信ブロック)の読み出し

    形式 #include

    BOOL TcnScmGetTaklerBlk (IN HANDLE hDevice, IN OUT ScanTalkerBlk *p);

    説明 スキャントーカーブロック(送信ブロック)の設定を行います。 hDevice:TcnOpen で得たファイルハンドル 読み出しデータの格納エリア ScanTalkerBlk は TcnScmSetTalkerBlk で使用する構造体と同様です。格納エリアは ScanTalkerBlk サイズ以上のエリアが必要です。 ScanType に読み出すスキャン伝送タイプ(1:高速、2:中速、3:低速)を指定して本関数を実行すると、構造体の残りのメンバに設定値が格納されます。

    戻り値

    正常終了で STATUS_OK が返されます。 BlkNum は該当するスキャン伝送タイプの登録されているスキャンブロック数 (高速:0~64、0は登録無し) (中速:0~128、0は登録無し) (低速:0~384、0は登録無し) Blk[ ]は登録されている各スキャンブロックの番号(0~2047) 使用するブロック番号が上詰めにセットされます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    ScanTalkerBlk tlkBlk;

    talkerBlk.ScanType = 1; // 高速

    result = TcnScmGetTalkerBlk( hDev, &talkerBlk );

    if( result != STATUS_OK ){

    printf(" TcnScmGetTalkerBlk fail. Code = %ld\n",TcnGetLastError());

    }

    talkerBlk.ScanType = 2; // 中速

    result = TcnScmGetTalkerBlk( hDev, &talkerBlk );

    if( result != STATUS_OK ){

    printf(" TcnScmGetTalkerBlk fail. Code = %ld\n",TcnGetLastError());

    }

  • 6E8C5413

    43

    talkerBlk.ScanType = 3; // 低速

    result = TcnScmGetTalkerBlk( hDev, &talkerBlk );

    if( result != STATUS_OK ){

    printf(" TcnScmGetTalkerBlk fail. Code = %ld\n",TcnGetLastError());

    }

    関連事項

    TcnSccSetTaklerBlk

  • 6E8C5413

    44

    ■TcnSccSetScanMonitor 名前

    TcnSccSetScanMonitor -自装置のスキャン送信継続要求監視設定

    形式 #include

    BOOL TcnSccSetScanMonitor (IN HANDLE hDevice, IN DWORD dwMode, IN DWORD

    timeout);

    説明 自装置のスキャン送信継続要求の監視設定を行います。本関数を実行後、後述する

    TcnSccScanContinue(自装置のスキャン送信継続要求)が一定時間実行されない場合、JTNIカード側にて送信スキャンブロックの送信を停止します。 hDevice:TcnOpen で得たファイルハンドル dwMode:1 で監視開始、0 で監視停止 timeout:スキャン送信継続要求タイムアウト時間(0~16,383: 0.5ms 単位) (タイムアウト時間に 1 秒を設定する場合は、2000 をセット)

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    :

    HANDLE hDev;

    :

    result = TcnSccSetScanMonitor ( hDev, 2, 1000 );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnSccSetScanMonitor fail. Code=%ld\n", TcnGetLastError( ));

    }

    関連事項

    TcnSccGetScanMonitor

  • 6E8C5413

    45

    ■TcnSccGetScanMonitor 名前

    TcnSccGetScanMonitor -自装置のスキャン送信継続要求監視設定読み出し

    形式 #include

    BOOL TcnSccGetScanMonitor (IN HANDLE hDevice, OUT ScanMonitor *p);

    説明 自装置のスキャン送信継続要求監視設定の読み出しを行います。 hDevice:TcnOpen で得たファイルハンドル 設定データの格納エリアの構造体 ScanMonitor を以下に示します。格納エリアは ScanMonitorサイズ以上のエリアが必要です。

    typedef struct ScanMonitor { DWORD dwMode; DWORD InitRasCount; DWORD RasCount;

    } ScanMonitor; dwMode は自装置のスキャン送信継続要求の監視設定

    1 で監視開始、0 で監視停止 InitRasCount は拡張 RAS 機能カウンタ初期値(0~16383: 0.5ms 単位) RasCount は拡張 RAS 機能カウンタ(0~16383: 0.5ms 単位)

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    :

    HANDLE hDev;

    ScanMonitor scnMon

    :

    result = TcnSccGetScanMonitor ( hDev, &scnMon );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnSccGetScanMonitor fail. Code=%ld\n", TcnGetLastError( ));

    }

    関連事項

    TcnSccSetScanMonitor

  • 6E8C5413

    46

    ■TcnSccScanContinue 名前

    TcnSccScanContinue -自装置のスキャン送信継続要求

    形式 #include

    BOOL TcnSccScanContinue (IN HANDLE hDevice);

    説明 自装置のスキャン送信継続要求を行います。 hDevice:TcnOpen で得たファイルハンドル

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    :

    HANDLE hDev;

    :

    result = TcnSccScanContinue( hDev );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnSccScanContinue fail. Code=%ld\n", TcnGetLastError( ));

    }

    関連事項

    TcnSccSetScanMonitor

  • 6E8C5413

    47

    ■TcnSccSetPowerMonitor 名前

    TcnSccSetPowerMonitor - 自装置の電源監視設定

    形式 #include

    BOOL TcnSccSetPowerMonitor (IN HANDLE hDevice, IN DWORD dwMode);

    説明 自装置の電源監視設定を行います。 hDevice:TcnOpen で得たファイルハンドル dwMode:1 で監視開始、0 で監視停止

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    :

    HANDLE hDev;

    :

    result = TcnSccSetPowerMonitor ( hDev, 1 );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnSccSetPowerMonitor fail. Code=%ld\n", TcnGetLastError( ));

    }

    関連事項

    TcnSccGetPowerMonitor

  • 6E8C5413

    48

    ■TcnSccGetPowerMonitor 名前

    TcnSccGetPowerMonitor - 自装置の電源監視設定の読み出し

    形式 #include

    BOOL TcnSccGetPowerMonitor (IN HANDLE hDevice, OUT LPDWORD lpdwMode);

    説明 自装置の電源監視設定を読み出します。 hDevice:TcnOpen で得たファイルハンドル

    戻り値

    正常終了で STATUS_OK が返されます。

    同時に、電源監視開始の場合は lpdwMode に 1 が格納され、電源監視停止の場合は lpdwModeに 0 が格納されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    :

    HANDLE hDev;

    DWORD dwMode;

    :

    result = TcnSccGetPowerMonitor ( hDev, &dwMode );

    if( result != STATUS_OK ) { /* Error */

    printf("TcnSccGetPowerMonitor fail. Code=%ld\n", TcnGetLastError( ));

    }

    関連事項

    TcnSccSetPowerMonitor

  • 6E8C5413

    49

    ■TcnScmGetTalkerMap 名前

    TcnScmGetTaklerMap - スキャントーカーマップの読み出し

    形式 #include

    BOOL TcnScmGetTaklerMap (IN HANDLE hDevice, IN OUT ScanTalkerMap *p);

    説明 スキャントーカーマップを読み出します。 hDevice:TcnOpen で得たファイルハンドル 読み出しデータの格納エリア ScanTalkerMap は下記構造体です。格納エリアは ScanTalkerMapサイズ以上のエリアが必要です。

    typedef struct MutiBlk { BYTE Sa1; BYTE Sa2;

    } MutiBlk; typedef struct ScanTalkerMap {

    WORD StartBlk; WORD BlkNum; MutiBlk BlkInf[2048];

    } ScanTalkerMap; StartBlk は読み出しを行うスキャントーカーマップの先頭ブロック番号(0~2047) BlkNum は StartBlk にて指定した先頭ブロックから読み出すブロックサイズ(1~2047、ただし先頭ブロック番号+読み出しブロックサイズが2048を超えないこと) 複数ステーションがスキャントーカーブロックを重複して登録した場合、重複状態はスキャン

    トーカーマップに記録されます。重複状態のクリアは、重複を起こさないようにスキャントー

    カーブロックを再登録することで行いますが、 一度記録された重複状態は自動的にクリアされません。そのため重複状態の解消を確認するには、スキャントーカーマップの重複ブロックク

    リアを実施した後、一番周期の長いスキャン周期以上の時間が経過後(重複状態を解消後、ス

    キャントーカーマップが更新された後)にスキャントーカーマップを確認します。

    戻り値

    正常終了で STATUS_OK が返されます。 BlkInf [ ]には該当するスキャントーカーブロックの情報がセットされます。 Sa1 が0で Sa2 が0の場合、該当ブロックが使用されていないことを示します。 Sa1 が0でなく Sa2 が0の場合、該当ブロックは Sa1 に示すノード(1~254)が使用していることを示します。 Sa1 が0でなく Sa2 が0でない場合、該当ブロックは Sa1 に示すノード(1~254)およびSa2に示すノード(1~254)が共に使用しており重複状態にあることを示します。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

  • 6E8C5413

    50

    使用例

    スキャンブロック 50 番から 10 ブロックのスキャントーカーマップを読み出す例を示します。 #include

    HANDLE hDev;

    ScanTalkerMap tlkMap;

    tlkMap.StartBlk = 50; // 読み出し開始ブロック No.

    tlkMap.BlkNum = 10; // 読み出しブロック数

    result = TcnScmGetTalkerMap( hDev, &tlkMap );

    if( result != STATUS_OK ){

    printf("TcnScmGetTalkerMap fail. Code = %ld\n",TcnGetLastError());

    }

    関連事項

    TcnScmClrTalkerMap

  • 6E8C5413

    51

    ■TcnScmClrTalkerMap 名前

    TcnScmClrTalkerMap - スキャントーカーマップの重複ブロッククリア

    形式 #include

    BOOL TcnScmClrTalkerMap (IN HANDLE hDevice, IN DWORD dwMode);

    説明 スキャントーカーマップの重複ブロックをクリアします。 hDevice:TcnOpen で得たファイルハンドル dwMode: CLR_FLAG でクリア開始(ここでは必ず CLR_FLAG をセットします)

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    result = TcnScmClrTalkerMap( hDev, CLR_FLAG );

    if( result != STATUS_OK ){

    printf(buf," TcnScmClrTalkerMap fail. Code=%ld\n",TcnGetLastError());

    }

    関連事項

    TcnSccGetTaklerMap

  • 6E8C5413

    52

    ■TcnScmGetHealthyMap 名前

    TcnScmGetHealthyMap - スキャンヘルシーマップの読み出し

    形式 #include

    BOOL TcnScmGetHealthyMap ( IN HANDLE hDevice, OUT LPBYTE lpBbuf);

    説明 スキャンヘルシーマップを取得します。 hDevice:TcnOpen で得たファイルハンドル

    lpBuf:ヘルシーマップ領域の格納領域。ヘルシーマップ領域サイズ以上のエリアが必要です。

    ヘルシーマップは次のような構造をしています。

    アドレス(バイト) 0

    スキャンヘルシーマップ (256 バイト)

    0x100

    ヘルシーマップの中でスキャンヘルシーマップが全体のスキャンエリアの状態を示しています。

    各ブロック単位に 1 ビットが該当します。スキャンヘルシーで ON となります。

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    DWORD buf[64];

    result = TcnScmGetHealthyMap( hDev, (LPBYTE)buf );

    if( result != STATUS_OK ){

    printf(“TcnScmGetHealthyMap fail. Code=%ld\n”,TcnGetLastError());

    }

    関連事項

    TcnScmReadWithHealthy, TcnScmClrUnHealthyMap

  • 6E8C5413

    53

    ■TcnScmClrUnHealthyMap 名前

    TcnScmClrUnHealthyMap - スキャンアンヘルシーマップのクリア

    形式 #include

    BOOL TcnScmClrUnHealthyMap (IN HANDLE hDevice, IN DWORD dwMode);

    説明 スキャンアンヘルシーマップのクリアを行います。 スキャンアンヘルシーマップは、各スキャンブロックに対するアンヘルシー状態を検出した時

    にセットされます。しかし、アンヘルシー状態が解除された時(即ち該当ブロックがヘルシー

    になった時)にはクリアされません。 hDevice:TcnOpen で得たファイルハンドル dwMode: CLR_FLAG でクリア開始(ここでは必ず CLR_FLAG をセットします)

    戻り値

    正常終了で STATUS_OK が返されます。

    異常終了で STATUS_ERROR が返されます。

    エラーの詳細は、TcnGetLastError()により取得できます。

    使用例 #include

    HANDLE hDev;

    result = TcnScmClrTalkerMap( hDev, CLR_FLAG );

    if( result != STATUS_OK ){

    printf(“TcnScmClrUnHealthyMap fail. Code=%ld\n”,TcnGetLastError());

    }

    関連事項

    TcnScmGetHealthyMap

  • 6E8C5413

    54

    ■TcnSccGetInringMap 名前

    TcnSccGetInringMap - インリングマップの取得

    形式 #include

    BOOL TcnSccGetInringMap ( IN HANDLE hDevice, OUT