• 検索結果がありません。

C-ISAバス製品からPCIバス製品への移行マニュアル MS-DOS編 LAP-B [VCD-4115→GPD-4115への移行]

N/A
N/A
Protected

Academic year: 2021

シェア "C-ISAバス製品からPCIバス製品への移行マニュアル MS-DOS編 LAP-B [VCD-4115→GPD-4115への移行]"

Copied!
48
0
0

読み込み中.... (全文を見る)

全文

(1)

www.interface.co.jp

TUT-0005

Ver 1.1

(2)

改訂履歴

Ver. 年 月 改 訂 内 容 1.0 2001年9月 新規作成 1.1 2005年9月 ・誤記修正 ・技術資料更新 本チュートリアルをご使用の際は、必ず各製品型式の最新のドキュメント(ユーザ ーズマニュアル,オンラインヘルプ)をあわせて参照してください。また、最新のド ライバソフトウェアをご使用ください。ユーザーズマニュアル, ドライバソフト ウェアは弊社Web siteからダウンロードできます。(オンラインヘルプはドライバ ソフトウェアに含まれています)

(3)

商標/登録商標 本チュートリアルに掲載されている会社名、製品名は、それぞれ各社の商標また は登録商標です。 保障の内容と制限 株式会社インタフェースはドキュメント内の情報の正確さに万全を期しています。 万一、誤記または誤植などがあった場合、株式会社インタフェースは予告無く改 訂する場合があります。ドキュメントまたはドキュメント内の情報に起因するい かなる損害に対しても株式会社インタフェースは責任を負いません。 ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化 する場合があります。 著作権、知的所有権 株式会社インタフェースは本製品に含まれるおよび本製品に対する権利や知的所 有権を保持しています。 本製品はコンピュータ ソフトウェア(プログラム)、 図、 文章、 写真などを 含んでいます。 複製の禁止 株式会社インタフェースの許可なく、本製品(ドキュメント含む)の全て、または一 部に関わらず、複製、改変などを行うことはできません。 責任の制限 株式会社インタフェースは、株式会社インタフェース または再販売者の予見の有 無にかかわらず発生したいかなる特別損害、偶発的損害、間接的な損害、重大な 損害について、責任を負いません。

(4)

−目 次−

はじめに

8

第 1 章 MS-DOS で PCI バスボードを使用する際の注意事項 9

1.1 指定方法が変わる理由と情報の取得方法...9 1.2 メモリアドレスの指定 ...11 1.3 割り込み処理 ...11 1.4 汎用ライブラリの紹介 ...12 1.5 入手可能MS-DOS環境 ...13

第 2 章 LAP-B の概要

14

2.1 LAP-B の特長...15 2.2 局の役割 ...15 2.3 コマンドとレスポンス ...16 2.4 アドレス ...17 2.5 フレームの構成 ...17 2.6 データリンク ...18 2.7 モード ...18

第 3 章 LAP-B ボードのインストール

20

3.1 ボードの設置 ...20 3.2 ソフトウェア(GPD-4115)のインストール ...21

第 4 章 Borland C++ Suite による LAP-B 制御

22

4.1 LAP-B ボード制御概略...23 4.2 VCD-4115 との相違点...24

第 5 章 チュートリアル

26

5.1 送信処理 ...27 Step 1. ヘッダファイル...27 Step 2. 初期化処理 ...28

(5)

第 6 章 LAP-B(PCI)LIB リファレンス

36

関数一覧 ...36 LapbnInit...36 LapbnEnd...37 LapbnOpenPort ...37 LapbnClosePort...37 LapbnGetPortData ...38 LapbnSendData...38 LapbnGetFrameCnt...39 LapbnGetFrameLen ...39 LapbnReceiveData...40 LapbnGetStatus...40 LapbnControlPort ...41 LapbnGetHistory...41 エラーコード一覧...42 6.1 構造体 ...43

技術資料紹介

44

参考文献

45

(6)

[製品紹介] LAP-Bインタフェースボード(PCIバス) 型式 PCI-4115 品名 LAP-B(1)N 価格※ ¥54,900 ■概要

PCI-4115 は 、 LAP-B の プ ロ ト コ ル を 内 蔵 し た LSI µPD72107相当品を使用したHDLCシリアル通信インタ フェースボードです。EIA RS-232C規格準拠, RS-485 (TIA/EIA-485),RS-422(TIA/EIA-422)規格準拠のど ちらかで、LAP-B通信を行うことができます。 ■特長 ●LAP-B対応HDLC通信ボード ●RS-232C又はRS-485を1チャンネル選択可能 ●ソフトウェアによるビットレート設定 ●DMA内蔵HDLCコントローラ採用 ●送受信クロックは内部/外部選択可能 ●PLLによる受信クロックの再生機能内蔵 チャンネル数 1チャンネル(RS-232C/RS-485を選択) 通信規格 EIA RS-232C規格準拠 EIA RS-485(TIA/EIA-485),RS-422(TIA/EIA-422) 規格準拠 制御信号 RS-232C : SD, RD, CS, RS, ER, DR, CD, CI, ST1, ST2, RT RS-485 : T ,R ,I ,C, ST, RT 同期制御方式 LAP-B ビットレート RS-232C : 125bps∼1Mbps RS-485 : 125bps∼2Mbps 使用コントローラ µPD72107又は相当品 送受信バッファメモリ 1Mバイト 割り込み機能 コマンドレスポンス, インターバルタイマ

(7)

型式 PCI-4156

品名 LAP-B(2)232

価格※ ¥69,800

■概要

PCI-4156 は 、 LAP-B の プ ロ ト コ ル を 内 蔵 し た LSI µPD72107相当品を使用したHDLCシリアル通信インタ フェースボードです。EIA RS-232C規格準拠で、LAP-B 通信を行うことができます。チャンネル数は2チャンネ ルです。 ■特長 ●LAP-B対応HDLC通信ボード ●送受信クロックは内部/外部選択可能 ●ソフトウェアによるビットレート設定 ●DMA内蔵シリアルコントローラ採用 ●PLLによる受信クロックの再生機能 ●タイマカウンタ搭載 ●LAP-B手順内蔵ソフトウェア(DLL)を付属 チャンネル数 2チャンネル 通信規格 EIA RS-232C規格準拠 制御信号 SD, RD, CS, RS, ER, DR, CD, CI, ST1, ST2, RT 同期制御方式 LAP-B ビットレート 125bps∼1Mbps 使用コントローラ μPD72107又は相当品 送受信バッファメモリ 1Mバイト/1チャンネル当たり 割り込み機能 コマンドレスポンス、インターバルタイマ

(8)

型式 PCI-4157

品名 LAP-B(2)485

価格※ ¥79,800

■概要

PCI-4157 は 、 LAP-B の プ ロ ト コ ル を 内 蔵 し た LSI µPD72107相当品を使用したHDLCシリアル通信インタ フェースボードです。EIA規格のRS-485(TIA/EIA-485), RS-422(TIA/EIA-422)で、LAP-B通信を行うことができ ます。チャンネル数は2チャンネルです。 ■特長 ●LAP-B対応HDLC通信ボード ●送受信クロックは内部/外部選択可能 ●ソフトウェアによるビットレート設定 ●DMA内蔵シリアルコントローラ採用 ●PLLによる受信クロックの再生機能 ●タイマカウンタ搭載 ●LAP-B手順内蔵ソフトウェア(DLL)を付属 チャンネル数 2チャンネル 通信規格 RS-485(TIA/EIA-485),RS-422(TIA/EIA-422)規格準 拠 制御信号 T ,R ,I ,C, ST, RT 同期制御方式 LAP-B ビットレート 125bps∼2Mbps 使用コントローラ μPD72107又は相当品 送受信バッファメモリ 1Mバイト/1チャンネル当たり 割り込み機能 コマンドレスポンス、インターバルタイマ

(9)

はじめに

平素は格別のご高配を賜り、厚く御礼申し上げます。 本冊子は、MS-DOSまたはMS-DOS互換のDOSの環境で弊社LAP-Bボードと、ライブ ラリソフトウェア(GPD-4115)を利用し、C言語にて制御プログラムの作成を行われ る方を対象に、製品の導入からプログラム作成までに関し説明したものです。 従来C(98)バス製品またはISAバス製品とライブラリソフトウェア(VCD-4115)を ご利用頂きプログラムの開発を行われていた方を対象としております。 弊社Web site(http://www.interface.co.jp)より本冊子で使用するライブラリソフトウェ ア(GPD-4115)とサンプルプログラムのソース(BPD-0810)をあらかじめダウンロ ード頂き、併せてご覧下さい。 記述する内容に関しましては、基本的なことにとどまっております。 弊社Web siteではFAQ,製品マニュアルの公開を行っておりますので、こちらもあわ せてご覧頂けますと、よりいっそうご理解を深めていただけるものと思います。 弊社ではWeb siteにお客様の技術交流用のユーザフォーラムを用意しています。本冊 子のご感想をはじめ、弊社へのご意見、ご要望がございましたら、ユーザフォーラム をご利用頂きますようお願いいたします。 URLアドレス http://www.interface.co.jp/bbs/ 対象環境 本チュートリアルは以下の制約事項があります。 対応型式 (PCI)

PCI-4115 PCI-4156 PCI-4157 対応

ソフトウェア

GPD-4115 BPD-0814 対応OS IBM PC DOS 2000 日本語

対象言語 Borland C++ Suite(Turbo C++ 4.0J for DOS)

対象ユーザ 制御用電子機器及び、パソコン等に関して、基本的な知識を 有している方。

(10)

1章 

MS-DOSでPCIバスボードを使用する際の注意事項

まず、GPD-4115を使用する前に、C(98)バスボード/ISAバスボードとPCIバス ボードには、どの様な違いがあるか見ていきましょう。 PCIバスボードを使用することで異なる部分は以下の通りです ・I/Oアドレスの指定方法 ・メモリアドレスの指定方法 ・割り込み処理方法 どれも、PCIバスボードにすることで、指定方法が大きく変わります。

1.1 指定方法が変わる理由と情報の取得方法

当社のPCIバスボードをご覧頂くと、I/Oポートアドレス、メモリアドレス、割り 込みレベルの設定スイッチがボード上から消えたということに気づかれたことと 思います。 当社のC(98)バスボード/ISAバスボードでは、I/Oポートアドレス等を手動で設 定する方法を採用していました。 しかし、PCIバスボードの場合、これらの情報はコンピュータ起動時にBIOSが、 自動的に割り当てます。そして割り当てた情報は「PCIコンフィグレーション情報」 として管理されています。 そのため、ボード上からこれらの設定スイッチが無くなりました。

ON!

I/O=1000h メモリ IRQ=3 ボード I/Oポートアドレス、メモリアドレス、割り込みレベル等の情報のことを「リソー ス」と言います。 このリソースは、BIOSのファンクションコールで読み出すことができます。

(11)

弊社のベンダーIDは、1147hで、一部の製品を除き共通です。 デバイスIDはボードの型式が書き込まれています。PCI-4115の場合10進数の4115 が入っています。 サブシステムIDは、使用するボードにより値が異なりますので、確認してくださ い。 位置 情報 型 位置 情報 型 00 Vendor ID unsigned short 28 CIS unsigned long 02 Device ID unsigned short 2C SubSystemVendorID unsigned short 04 Command unsigned short 2E SubSystemID unsigned short 06 Status unsigned short 30 ROMBaseAddress unsigned long 08 Revision ID unsigned char 34 CapabilitiesPtr unsigned char 09 ProgIf unsigned char 35 Reserved1 unsigned char 0A SubClass unsigned char 38 Reserved2 unsigned long 0B BaseClass unsigned char 3C InterruptLine unsigned char 0C CacheLineSize unsigned char 3D InterruptPin unsigned char 0D LatencyTimer unsigned char 3E MinimumGrant unsigned char 0E HeaderType unsigned char 3F MaximumLatency unsigned char 0F BIST unsigned char 40 DeviceSpecific[192] unsigned char 10 BaseAddresses[6] unsigned long (PCIコンフィグレーション情報) 本来、MS-DOSでPCIバスボードを直接制御を行うには、このPCIコンフィグレー ション情報からI/Oポートアドレスなどの情報を得た上で、I/O命令等でコントロー ルする必要があります。 本ライブラリでは、ライブラリ中にこのリソース情報を取得する機能を有してお り、実際にアドレス等を指定しなくても使用できるようにしていますが、他のボ ード等、個々に情報を取得して使用される場合は、ユーティリティとして 「BPD-0805 PCI DOS用リソース取得ライブラリ」を弊社Web siteで公開しており

(12)

1.2 メモリアドレスの指定

PCIバスボードのメモリ空間は、1MByte以上のメモリ空間に割り付けられますが、 通常、コンピュータはメモリが64MByteや128MByteと拡張されており、今のコン ピュータではPCIバスボードのメモリは更にその上の空間に割り付けられること になります。 MS-DOS上のソフトウェアでは、通常1MByteまでのメモリ空間しかアクセスでき ませんので、通称 DOSエクステンダと言われる1MByte以上の拡張メモリ空間を アクセスするためのライブラリが必要になります。 弊社では、ユーティリティとして「BPD-0806 PCI DOS用4Gメモリアクセスツール」 を弊社Web siteで公開しておりますのでご利用ください。 尚、本ライブラリではこの機能を有しており、BPD-0806を使用しなくても制御を 行えるようにしています。

1.3 割り込み処理

MS-DOSと一番違うのがこの処理になります。 C(98)バスやISAバスボードで割り込み処理を行うには、他のボードが使用して いない割り込みレベルを使用する必要がありました。 つまり、1つの割り込みレベルには、1枚のボードからの割り込み要求しか使用で きないというものでした。 PCIバスボードの割り込みは、同じ割り込みレベルを複数のボードが使用できる様 になっています。

IRQ3

A

B

共有

IRQ2

IRQ4

(13)

そのため、従来 MS-DOSでは、割り込みレベルの空きが足りなくなるということ がありましたが、PCIバスでは割り込みレベルの不足は解消されます。 逆に、面倒になるのが1つの割り込みレベルを複数のボードが使用しており、それ ぞれに割り込みプログラムが存在するということです。 そのため、各割り込みプログラムは、割り込み要因が自分に対応したボードから 発行された要求かどうか確認し、自分に対応したボードからの割り込みで無けれ ば他の割り込み処理に制御を移すという処理が必要になります。

①割り込みが発生!

②自分のボードからの割り込み?

Yes!

No

③割り込み処理実行!

③別の割り込み処理にチェイン

また、複数の割り込み処理で割り込みのベクタテーブルをセットしたとき、セッ トした順の逆にベクタテーブルのアドレスを戻すという処理が必要になります。 順番が狂うと、ベクタテーブルが正常なアドレスを示さなくなり、ソフトウェア の暴走を引き起こします。 本ライブラリでも割り込み処理を行っておりますので、他のPCIバスボード用 MS-DOSライブラリを併用される際には、開始と終了の順番に十分に注意してく ださい。 また、弊社では、他の割り込み処理のために「BPD-0811 PCI DOS割り 込み登録ライブラリ」を弊社Web siteで公開しておりますのでご利用ください。

1.4 汎用ライブラリの紹介

BPC-0801 PCIデバイス表示ツール BPD-0805 PCI DOS用リソース取得ライブラリ BPD-0806 PCI DOS用4Gメモリアクセスツール BPD-0811 PCI DOS用割り込み登録ライブラリ 各ライブラリは弊社Web siteより無償提供しています。 Interface Web site http://www.interface.co.jp

(14)

1.5 入手可能MS-DOS環境

本ライブラリが対応している環境で、2001年9月1日現在 新規入手可能なものを 記載します。 なお本ライブラリの対応環境については、README.TXTを参照ください。 DOS PC DOS 2000 日本語版  日本IBM社より発売 ※ Microsoft版MS-DOSは、現在単体での新規販売はされていません。 開発言語 Borland C++ Suite  ボーランド社からオンライン販売のみで販売 ※ Microsoft版 MS-C/C++は、現在単体での新規販売はされていません。

(15)

2章 LAP-Bの概要

LAP-B(Link Access Procedure, Balanced)は、HDLC(High level Data Link Control procedure : ハ イレ ベ ル デ ー タリ ン ク 制 御 手順 ) のBAC ( Balanced operation Asynchronous balanced mode Class : 平衡型非同期平衡モード・クラス)の基本機能 に付加機能2,8を追加したものです。 HDLC手順は、データ伝送制御手順の1つで、基本形データ伝送制御手順(JIS C6326)に比べ、任意のビットパターンが送れる、厳密な誤り制御が行われるなど の利点をもっています。信頼性が高く、効率良くデータを送ることができます。 OSI基本参照モデル(ISOにより標準化された、通信機能の階層構造)におけるデ ータリンク層の標準方式の1つにあたります。

OSI 【Open Systems Interconnection】 基本参照モデル

物理層

データリンク層

ネットワーク層

トランスポート層

セッション層

プレゼンテーション層

アプリケーション層

第1層

第2層

第3層 第4層 第5層 第6層 第7層 データを通信回線に送出するための電気的な変換や機械的な作 業を受け持ちます。ピンの形状やケーブルの特性などもここで定 められます。 通信相手との物理的な通信路を確保し、通信路を流れるデータの エラー検出などを行います。 相手までデータを届けるための通信経路の選択や、通信経路内の アドレスの管理を行います。 相手まで確実に効率よくデータを届けるためのデータ圧縮や誤 り訂正、再送制御などを行います。 通信プログラム同士がデータの送受信を行うための仮想的な経 路です。 第5層から受け取ったデータをユーザが分かりやすい形式に変 換したり、第7層から送られてくるデータを通信に適した形式に 変換したりします。 データ通信を利用し、様々なサービスをユーザや他のプログラム に提供します。 図 2-1 では、ここよりLAP-B(HDLC)の基本的な内容に関し簡単に記載します。詳細な 仕様に関しましては、専門書籍、またはJIS規格等を参照してください。

(16)

2.1 LAP-Bの特長

LAP-Bは前述の通り、HDLCのBAC基本機能に付加機能2,8を追加したサブセット です。 このHDLCは高能率かつ信頼性の高い伝送制御手順で、以下の特長があります。 ①任意のビットパターンの送信が可能 ②連続送信(ある範囲で,応答なしに先送りすること)が可能

③CRC(Cyclic Redundancy Check)を採用しており,データ誤り制御が厳密 ④分岐回線でも全2重通信が可能 HDLCは,JIS規格およびISO標準で規定されています。 JIS X5104(ISO 3309): HDLCにおけるフレーム構成,フレーム検査シーケンス(FCS),およびアドレスについ ての規定 JIS X5105(ISO 4335): HDLCの手順要素についての規定 JIS X5106(ISO 7809): HDLCの手順クラスについての規定

2.2 局の役割

HDLCではデータを送受信する際、その役割により3つに定義されています。それ ぞれの役割をはたす通信拠点を「局」といい、以下の3つを定義しています。 1次局 … 通信経路を確保し(データリンク)、エラー検出などの制御を行う局で す。(親) 2次局 … 1次局からの命令に従い動作する局です。(子) 複合局 … 1次局,2次局を兼ね備える局です。 LAP-Bは、BACですので複合局となります。

(17)

2.3 コマンドとレスポンス

HDLCで伝送する情報には「コマンド」と「レスポンス」があります。1次局から 2次局に送信する情報を「コマンド」といい、反対に2次局から1次局に送信する情 報を「レスポンス」といいます。複合局は「コマンド」「レスポンス」の両方を 送受信します。 HDLCでは情報を「フレーム」という単位で伝送します。すべてのフレームは「コ マンド」または「レスポンス」のいずれかになります。 1次局 2次局 コマンド レスポンス 複合局 複合局 コマンド/レスポンス コマンド/レスポンス LAP-Bでは この様になります 1次局 2次局 2次局 2次局 レスポンス コマンド 図 2-2

(18)

2.4 アドレス

HDLCでのコマンドやレスポンスなどのフレームには、すべて「アドレス」が付 加されています。コマンドフレームには、それを受け取る2次局または複合局のア ドレスを付加し、レスポンスフレームには、それを送信した2次局または複合局の アドレスが付加されます。

1次局

アドレス=A

2次局

アドレス=B

コマンド

レスポンス

B B アドレス アドレス 図 2-3

2.5 フレームの構成

HDLCでは、すべての情報を以下のようなフレーム単位で伝送します。 フラグ アドレス 制御部 情報部 FCS フラグ 誤り制御の範囲 まず、フレームの最初と最後には8ビットのフラグシーケンスがあります。フラグ シーケンスは、送受信間でフレームの同期を取るための信号としても使用されま す。受信側ではこれらフラグシーケンスを検出しフレームの先頭と末尾を識別し ています。 次に、アドレスですが、コマンドフレームの場合には、そのフレームを受信する 2次局または複合局のアドレスを明記します。レスポンスフレームの場合は、その レスポンスフレームを送信した2次局または複合局のアドレスを明記します。 次に制御部ですが、接続局に対する命令や、その命令に対する応答を格納します。 次に情報部ですが、ここには実際送信を行うデータを格納します。データはどの ようなビットパターンでもかまわず、またフィールドの長さに制限はありません。

(19)

2.6 データリンク

データリンクとは、データの伝送経路において物理的な伝送経路(通信回線など) と論理的な伝送経路(送受信可能な状態)とが確立された状態を示します。 HDLCのデータリンクには、不平衝型データリンク(Unbalanced Data Link)と平 衝型データリンク(Balanced Data Link)の2種類があります。

不平衝型データリンクは、1次局と2次局で構成され、データリンクの設定や障害 の復旧などは、すべて1次局が行います。 平衝型データリンクは、複合局同士で構成され、データリンクの設定や障害の復 旧などは、それぞれの局が対等に行います。 LAP-Bは、平衝型データリンクになります。

2.7 モード

通信拠点が、2次局や複合局の場合には、その状態により3つの動作モードと2つの 切断モードおよび初期モードがあります。1次局にモードはありませんが、2次局 に対してモードを設定する機能を有しています。 各状態における動作モードは以下のようになります。 正規応答モード(NRM)

Normal Response Mode 非同期応答モード(ARM) Asynchronous Response Mode 動作モード

非同期平衝モード(ABM) Asynchronous Balanced Mode 正規切断モード(NDM) Normal Disconnected Mode 切断モード

非同期切断モード(ADM) Asynchronous Disconnected Mode 初期モード 初期モード(IM)

(20)

切断モードは通信拠点がデータリンクから論理的に切断されている状態です。初 期化モードはデータリンクの制御機能初期化のためのモードです。 また、動作モードにおけるそれぞれの動作は以下のようになります。 動作モード 動作 データリンク NRM 2次局は、1次局から送信許可コマンドを 受信したときのみ、1次局に対しレスポ ンスを送信できる。 ARM 2次局は、1次局から送信許可コマンドを 受信せず、1次局に対しレスポンスを送 信できる。 不平衝型 ABM 複合局は、接続先の複合局の許可がなく ても、コマンド/レスポンスの送受信が 行える。 平衝型

(21)

3章 LAP-Bボードのインストール

作成するアプリケーションからLAP-B通信を行う場合、当然のことながらアプリ ケーションを実行するコンピュータにLAP-Bボードが組み込まれていなければな りません。 ここではMS-DOS環境における、弊社LAP-Bボードのインストール方法を記載し ます。

3.1 ボードの設置

1. ご購入いただいた弊社ボードを用意します。ボードの部品実装面にロータリス イッチ(RSW1)があります。(図3-1) ご使用にな る製品によっ ては、「PCI ボード識別用 ロータリスイッチ」の位置 が左図とは異なります。詳 細は製品マ ニュアルをご 確認下さい。 LED1 RSW1 CN1 PCIボード識別用ロータリスイッチ 図 3-1 弊社ではこのスイッチを「PCIボード識別用ロータリスイッチ」と称します。 弊社LAP-Bボードは、1台のコンピュータで同一型式のボードを複数枚利用するこ とが可能です。ロータリスイッチには「0」から「F」までの値が設定可能となっ ていますが、複数枚のボードを利用する場合には、重複しない値を設定してくだ さい。この設定された番号を弊社では「ボードID」または「ボード番号」と称し ます。

(22)

2. コンピュータ本体の電源が “OFF” であることを確認し、電源ケーブルをACコ ンセントから外します。その後、外装カバー、スロットカバーを外します。 3. 拡張用スロットへボードを差し込みます。 4. しっかり差し込まれたことを確認したらボードパネルをビス止めして ください。 図 3-2

注意

・ボードの金メッキ端子部や、半田面には手を触れないでください。 ・衝撃や振動、磁気や静電気の加わる場所での使用は行わないでください。

3.2 ソフトウェア(GPD-4115)のインストール

弊社Web siteよりダウンロードして頂いたファイルは圧縮されています。 そのままでは使用できません。ファイルを解凍してから使用してください。 GPD-4115 をダウンロードしたディレクトリを C:¥ として説明を行っています。 1. 自己解凍プログラムを実行します。 C:¥>GPD4115(リターン) 2. 現在のディレクトリに 'GPD4115'ディレクトリが作成され、その下に各種ディ レクトリおよびファイルが解凍されます。

(23)

4章 Borland C++ SuiteによるLAP-B制御

Borland C++ Suiteより、LAP-Bボードを制御するには、ライブラリ(GPD-4115) を使用する方法と、直接ボードを制御する方法があります。 本書では、GPD-4115を使用します。直接制御する場合の説明がございません。直 接制御を希望されるお客様は弊社Web siteから以下の資料とソフトウェアをダウ ンロードしてください。 資料 ・PCI-4115、4156、4157のI/O公開資料 ソフトウェア ・BPD-0805 : DOS用リソース取得ライブラリ ・BPD-0806 : DOS用4Gメモリアクセスツール ・BPD-0811 : PCI DOS用割り込み登録ライブラリ 次に、GPD-4115をご使用頂く場合の注意点です。 ライブラリは、お客様のプログラムのリンク時に指定することで、お客様のプロ グラムと結合し、指定した関数(機能)が実際に使用できるようになります。 ライブラリは、各対応言語のメモリモデルに応じて用意されていますので、正し いものを指定してください。 異なるメモリモデルや異なる言語用を指定すると正常に実行形式が作成されない か、実行時に暴走等の異常動作の原因になりますので、注意してください。

(24)

4.1 LAP-Bボード制御概略

LAP-Bボードの制御を行う場合、基本的に下記の制御シーケンス(順番)で行いま す。 ライブラリ初期化 1 プログラム起動 接続処理 2 データリンク 各種処理 3 フレーム送受信 終了処理 4 プログラム終了 図 4-1 1. ライブラリ初期化 アプリケーションがLAP-Bボードへの操作を行う場合、まずアプリケーション は、LAP-Bボードが何枚あるのか、どういった種類のボードがあるのかを知る 必要があります。 この処理がライブラリ初期化です。ライブラリ初期化を行 うと、プログラムはLAP-Bボードへのアクセスが可能となります。本処理が行 われないとLAP-Bボードへのアクセスは行えません。 2. 接続処理 LAP-B手順でのデータリンクを行い。通信拠点間の通信経路を確保します。 3. 各種処理 フレームの送受信を行います。 4. 終了処理 ボードの使用終了を行うための手続きです。プログラム終了時に行います。

(25)

4.2 VCD-4115との相違点

GPD-4115は、基本的にVCD-4115と互換となっております。 使用するボードがPCIになったため、若干の違いがあります。 下記に従って、修正してください。 VCD-4115には有るが、GPD-4115にないパラメータ 該当する 関数 パラメータ名 内容

LapbnInit dpadr IBX/AZI-4115のデュアルポートRAMのセグメント アドレスを指定する変数。

PCIではアドレスは自動的に設定されるため、設定 の必要が無くなりました。

LapbnInit ioadr IBX/AZI-4115のI/Oポートアドレスを指定する変 数。

PCIではアドレスは自動的に設定されるため、設定 の必要が無くなりました。

LapbnInit irqno IBX/AZI-4115の割り込み番号を指定する変数。 PCIでは割り込み番号は自動的に設定されるため、 設定の必要が無くなりました。 LapbnInit timertype ライブラリ内部で使用するタイマの選択を行う変 数。 PCIボード上のタイマ割り込みを使用するため、設 定の必要が無くなりました。

LapbnInit tadr タイマボードを使う際の、I/Oアドレスを指定する 変数。

設定の必要が無くなりました。

LapbnInit tirq タイマボードを使う際の割り込み番号を指定する 変数。

(26)

GPD-4115で新たに追加されたパラメータ 該当する

関数

パラメータ名 内容

LapbnInit DeviceID 使用するPCIボードを指定する変数。

PCI-4115、4156、4157の3種類のPCIボードを選択す るために追加されました。

LapbnInit SubsystemID PCIボードのサブシステムIDを指定する変数。 LapbnInit BoardID 複数枚のPCIボードを識別するために指定する変

数。 最大で同一種類のPCIボードを16枚まで使用するこ とができるように追加されました。 LapbnInit ChannelNumber 使用するチャンネル番号を指定する変数。 PCI-4156、4157ではチャンネルが2つあり、これを 識別するために追加されました。 機能の違い 機能 内容 クロック タイプ IBX/AZI-4115では、受信クロックの設定にAPLLという機能がありま したが、PCI-4115、4156、4157には有りません。そのため、GPD-4115 ではこの設定を行うことができません。 GPD-4115でPLLを使用したい場合は、DPLLを使用してください。 IBX/AZI-4115では、DPLLの最高速度が500kbps(RS-232Cの場合 250kbps)でしたが、PCI-4115、4156、4157では、最大2Mbps(RS-232C の場合 1Mbps)まで設定可能です。

(27)

5章 チュートリアル

実際に弊社LAP-Bボードを用いて、C・ISAバス用(VCD-4115)に作られたプログ ラムを、PCIバス用(GPD-4115)に置き換えてみます。 プログラムは、2本あり、 送信側 s4115e1.c 受信側 s4115e2.c となっております。 本冊子では以下の製品を使用しています。 PCI-4115 2枚:LAP-Bボード CAB-1705 1本:15ピンD-sub(オス)⇔15ピンD-sub(オス)[リバース] それぞれのコンピュータにLAP-Bボードを実装し、リバースケーブル(CAB-1705) を用いてそれぞれを接続しています。 CAB-1705

送信

s4115e1.c PCI-4115 PCI-4115

受信

s4115e2.c 図 5-1

(28)

5.1 送信処理

以降の説明は、s4115e1.cを参照しながら読み進めてください。 s4115e1.cの中に「Step1. ヘッダファイル」といった書式でコメントがありますの で、本冊子の各説明と照らし合わせてください。

Step 1. ヘッダファイル

ここでは、実際のプログラム作成を行う前に、初期化処理に関して知っておかな ければならないこと、および制約事項について記載します。 まず、お客様の作成されるプログラムの最初に、下記の2行を必ず追加してくださ い #include "PCIDEF.H" #include "LAPB.H" この2つのヘッダファイルで、関数の宣言と変数の型の宣言等を行っています。 VCD-4115では、 #include "vcd4115.h" というヘッダファイルを指定していましたが、GPD-4115では 必要ありませんの でプログラム上から削除してください。 その他のヘッダファイルについては、変更の必要はありません。

(29)

Step 2. 初期化処理

VCD-4115と同様に、まずライブラリの初期化を行わなければなりません。 ライブラリの初期化には、LapbnInit関数を用います。 この関数以降、各関数を実行します。 また、アプリケーションの終了時、必ず終了処理を行わなければなりません。 図 5-2 GPD-4115の初期化の処理は 以下の様になります。 VCD-4115での書式は 大きく違うことがお判り頂けると思います。では移行のポイントについて説明致 します。 ライブラリの終了処理はLapbnEnd関数にて 行います。 一度終了すると、再度初期化を行うまでは、 各関数は使用できません。 接続処理や、データの送受信などは、初期化 と終了の間で行ってください。 DeviceID = 4115; SubsystemID = 0x0001; BoardID = 0; Channel = 1; ret = LapbnInit(1,&DeviceID,&SubsystemID,&BoardID,&Channel); ioadr=0x0280; /* I/Oポートアドレス */ irqno=9; /* 割り込み */ ret = LapbnInit(1,0xd000,&ioadr,&irqno,1,0,0);

LapbnInit

LapbnEnd

LapbnOpenPort, LapbnClosePort, LapbnSendData など

(30)

VCD-4115では、初期化の際、以下のパラメータを指定する必要がありました。 例:IBX-4115を使用 タイマはコンピュータのRTCを使用する場合 ① ② ③ ④ ⑤ ⑥ ⑦ ret = LapbnInit( 1, 0xd000 , &ioadr, &irqno , 1, 0, 0 ); 必要無し 必要無し コンピュータのRTCを 使い時間管理を行う。 IBX-4115の割り込み 番号 IBX-4115のI/Oポ ー ト アドレス IBX-4115のDPRAM アドレス(セグメント アドレス) 使用するボード枚数 (1枚) この中で ① だけは、GPD-4115でも同じように設定しますが、その他(②∼⑦) はGPD-4115では使用しません。 では、GPD-4115で増えたパラメータは どのようになっているのでしょうか? 例:PCI-4115を使用する場合 ① ② ③ ④ ⑤

ret = LapbnInit( 1, &DeviceID, &SubsystemID, &BoardID, &Channel );

チャンネルを指定(1) ボード識別RSWの値を 指定(0) サブシステムIDを指定 (1) デ バ イ スIDを 指 定 (4115) 使用するボード枚数 (1枚) ①は、VCD-4115と同じ意味になりますが、②∼⑤は、まったく別物です。 ②は、使用するLAP-BボードのデバイスID1を指定します。ここではPCI-4115を使 用するため、4115を指定します。 ③は、サブシステムIDを指定します。

(31)

PCI-4115の場合、1チャンネルしかございませんので、ここでは、1を指定します。 以上が、VCD-4115からGPD-4115に移行する際の 初期化に関する変更点です。

Step 3. 接続処理

先ほどは、ライブラリの初期化を行いました。 今度はLAP-B手順の接続までを行ってみましょう。 LAP-Bは、1対1で通信を行いますので、もちろん通信相手も必要になります。 CAB-1705 送信 s4115e1.c PCI-4115 PCI-4115 受信 s4115e2.c 現在、説明を行っているのは こちら側です。 受信を行うのはこちらになります。 後ほど解説致します。 図 5-3 通信を開始する際に、通信相手と接続を行う必要があります。 この処理はVCD-4115の場合、 このように記述していました。 GPD-4115の場合、これとまったく同じ書式で接続を行います。 = 変更の必要がないということです。 ご注意頂きたいのは、GPD-4115にはAPLLがないということです。 LapbnPORTINITDATA構造体の、ClockTypeというメンバ変数で、受信クロックの 種類を選択できますが、VCD-4115ではAPLLというモードがありましたが、 GPD-4115にはございません。 この点にご注意ください。 各設定値をもう一度確認してみましょう。 ret = LapbnOpenPort(1,&PortData);

(32)

通信条件の設定ですが、設定する内容をLapbnPORTINITDATA構造体に記述しま す。LapbnGetPortDataで初期値の取得を行い、変更したいところだけ変数を変更し、 LAP-Bボードの設定を行っています。設定した内容は以下のとおりです。 データフォーマット NRZI 通信速度 1000000bps(1Mbps) LINK動作設定 相手局に対してSABMを送る 自局アドレス 3 相手局アドレス 1 インタフェース RS-485 クロックタイプ 送信内部、受信外部 T1タイマ 5 T4タイマ 10 最大再送回数(N2) 5 アウトスタンディングフレーム数(O) 7 では、設定した内容についてそれぞれ見てみましょう。 データフォーマットの種類 まずデータフォーマットの種類ですが、NRZもしくはNRZIのいずれかを設定しま す。ここではNRZIを設定しています。それぞれ設定した内容により以下の動作を 行います。 NRZ 通信コントローラのRxD端子の入力レベルが ”H” なら データ は”1”、”L” なら ”0” NRZI 通信コントローラのRxD端子の入力レベルが反転すれば”0”変化がな ければ”1” 通信速度 次に通信速度ですが、ここでは1000000bps(1Mbps)に設定しています。 設定可能なビットレートはビットレート生成用クロック(32MHz)を(16×分周値) で除算することで求めることが可能です。ただし、小数点以下に値をもつ(割り 切れない)数値は、正しく設定されません。また、使用する物理インタフェース により最大通信速度は異なります※

(33)

LINK動作設定 次にLINK動作設定ですが、ここでは相手局に対してSABMコマンドを送信するよ う設定しています。 設定可能な値は以下のようになっています。接続する相手機器の仕様に合わせて ください。 0 相手局に対しSABMコマンドを送信します。相手局からUAレスポン スを受信したときにLINK設定が完了します。SABMコマンド送信後、 SABMコマンドを受信した場合、UAレスポンスを送信し、相手から のUAレスポンスを待ちます。SABMコマンド送信後、T1タイマ以内 にUAレスポンスを受信しなかったとき、SABMコマンドの再送を行 います。この再送は、最大再送回数(N2)まで繰り返されます。最大 再送回数(N2)までの再送後のT1タイムアウトによりLINK設定は失 敗します。 1 相手局に対しDMレスポンスを送信し、SABMコマンドを勧誘します。 相手局からSABMコマンドを受信したとき、UAレスポンスを送信し、 LINK設定が完了します。DMレスポンス送信後、DMレスポンスを受 信した場合、SABMコマンドを送信し、相手からのUAレスポンスを 待ちます。DMレスポンス送信後、T1タイマ以内にSABMコマンドを 受信しなかったとき、DMレスポンスの再送を行います。この再送は、 最大再送回数(N2)まで繰り返されます。最大再送回数(N2)まで の再送後のT1タイムアウトによりLINK設定は失敗します。 自局アドレス 次に自局アドレスですが、ここでは 3を設定しています。 指定できるアドレスは8ビットアドレスで、01h ∼ FEh の範囲です。 次に示すアドレスを自局アドレスに設定することはできません。 ・相手局アドレス(YourAddress)と同じアドレス ・16ビットアドレス ・ノーステーションアドレス(00h) ・グローバルアドレス(FFh) 相手局アドレス 次に相手局アドレスですが、ここでは 1を設定しています。 指定できるアドレスは8ビットアドレスで、01h ∼ FEh の範囲です。 次に示すアドレスを相手局アドレスに設定することはできません。 ・自局アドレス(MyAddress)と同じアドレス ・16ビットアドレス ・ノーステーションアドレス(00h)

(34)

物理インタフェースの種類 次に物理インタフェースの種類ですが、本チュートリアルで使用するPCI-4115に は通信ポートの規格にRS-232CとRS-485の規格を採用しています。ここでは、こ のどちらのポートを使用して通信を行うかを指定します。ここでは、RS-485を指 定しています。 PCI-4156の場合はRS-232C、PCI-4157の場合はRS-485しか設定できませんのでご注 意ください。 クロックタイプ 送信クロックの種類 次に送信クロックですが、内部クロックを使用するように指定しています。クロ ックはデータ伝送を円滑に行うために、データ伝送時の各動作のタイミング合わ せに使用される信号です。 伝送するデータは、通信回線上にながれるクロック(クロック信号とも呼ばれま す)と同調して伝送されますが、データ送信時このクロックをどこから供給する かを指定します。ここでは、内部クロックを使用するので、クロックはボード上 に実装されたクロック発生器(オシレータ)より供給されます。 外部クロックを指定した場合、クロックは外部機器からボードのコネクタ部分に 供給します。 0 1 1 0 ・・・ クロック 伝送データ 図 5-4 受信クロックの種類

次に受信クロックの種類ですが、DPLL【Digital Phase-Locked Loop】回路を使用す るように指定しています。データ受信時にも送信時と同様にクロックを必要とし ますが、DPLL回路を使用することで、受信データと同期したクロックを、ボード 内部で自動的に生成することができます。

(35)

T1タイマ 次にT1タイマですが、LAP-Bプロトコルで定められているT1タイマの設定を行い ます。ここでは5秒に設定しています。 T1タイマは、受信確認用タイマで、1つまたは複数のフレームが相手に受け入れら れたことを確認するために使用します。 例えば、相手局からの応答を伴うフレーム(P=1のコマンドフレーム)を送信した ときに起動し、相手局からの応答フレーム(F=1のレスポンスフレーム)を受信し たときに停止します。 T1タイマがタイムアウトとした場合、フレームの再送が行われる等、復旧手順が 起動されます。 T4タイマ 次にT4タイマですが、LAP-Bプロトコルで定められているT4タイマの設定を行い ます。ここでは10秒に設定しています。 T4タイマは、相手局BUSY監視用タイマで、相手局へのBUSY問合せをおこなうた めに使用します。 例えば、相手局がBUSYとなった後、相手局からの監視フレームが送られてこない 時間が継続したとき、相手局のBUSYが解除されたかどうかを確認するために、 BUSY問合せを実行します。 このBUSY問合せを実行するまでの時間を、この変数で決定します。 最大再送回数(N2) 次に最大再送回数ですが、LAP-Bプロトコルで定められている最大再送回数(N2) の設定を行います。ここでは5回に設定しています。 最大再送回数は、LAP-Bプロトコルでは、T1タイムアウト発生などの異常発生時、 フレームの再送を行って異常からの復旧を試みます。最大再送回数は、この復旧 を繰り返す回数を指定します。 最大再送回数で指定された回数の復旧に連続して失敗した場合、LINKを切断し、 通信不可状態へ遷移します。 アウトスタンディングフレーム数(O) 次にアウトスタンディングフレーム数ですが、LAP-Bプロトコルで定められてい るアウトスタンディングフレーム数への設定を指定します。 アウトスタンディングフレーム数は、相手からの応答確認無しに連続して送信で きるIフレームの数です。

(36)

Step 4. 送信処理

いよいよデータ送信の処理です。 結論から申し上げますと、VCD-4115と同じです。 このように、VCD-4115とGPD-4115は高い互換性を持っており、スムーズに移行 が行えるものとなっています。 なお、受信用のサンプルプログラム s4115e2.c も、同じ変更処理で、VCD-4115か らGPD-4115へ移行することができます。 そのため、説明は割愛させていただきます。

VCD-4115

ret = LapbnSendData( 1 , 0 , len , sbuf );

(37)

6章 LAP-B(PCI)LIBリファレンス

関数一覧 関数名 機能 LapbnInit ポート情報を定義します。 LapbnEnd ポートを解放します。 LapbnOpenPort LAP-Bプロトコルの初期化を行い、通信が行えるようにします。 LapbnClosePort LAP-Bプロトコルの終了処理を行い、通信を終了します。 LapbnGetPortData ポート初期化情報を取得します。 LapbnSendData フレームの送信を行います。 LapbnGetFrameCnt 受信しているフレームの数を取得します。 LapbnGetFrameLen 受信バッファの先頭のフレームの長さを取得します LapbnReceiveData 受信バッファの先頭のフレームを取得します。 LapbnGetStatus LAP-Bボードの各種ステータスを取得 LapbnControlPort 制御信号の状態を変更します。 LapbnGetHistory ポートの通信ヒストリを取得します LapbnInit ポート情報を定義します。 宣言 int LapbnInit( int Port,

unsigned int *DeviceID, unsigned int *SubsystemID, unsigned int *BoardID, unsigned int *ChannelNumber ); パラメータ Port 使用するポート数 DeviceID ボード型式(デバイスID)を格納している配列へのポインタ 設定値:4115,4156,4157 PCI-4115を制御する場合:4115を指定 PCI-4156を制御する場合:4156を指定 PCI-4157を制御する場合:4157を指定 SubsystemID サブシステムIDを格納している配列へのポインタ PCI-4115,4156,4157とも 0x0001 を指定します。 BoardID ボード識別番号を格納している配列へのポインタ 制御を行うボードのRSW1設定値を指定します。 ChannelNumber チャンネル番号を格納している配列へのポインタ 設定値:1,2 戻り値 処理が正常に終了した場合 0 を返します。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。

(38)

LapbnEnd ポートを解放します。 この関数実行後は、再びLapbnInit関数を実行するまで全ての関数が使用できません。 宣言 int LapbnEnd(void); 戻り値 関数が成功すると0が返されます。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 LapbnOpenPort ポートをオープンします。 宣言 int LapbnOpenPort( int Port, LapbnPORTINITDATA *PortData ); パラメータ Port オープンするポートの番号を、1からLapbnInit関数で指定したポート数の範 囲で指定します。 PortData オープンするポートのLapbnPORTINITDATA構造体へのポインタを指定し ます。 LapbnPORTINITDATA構造体はあらかじめ初期値を持っています。NULLを 指定した場合、すべてのパラメータを初期値でオープンすることができま す。

NULL以外の値を渡す場合、PortDataが指すLapbnPORTINITDATA構造体の すべての値を設定してください。 LapbnPORTINITDATA構造体の初期値は、LapbnGetPortDataにより取得する ことができます。 戻り値 処理が正常に終了した場合 0 を返します。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 解説 LapbnOpenPortは各初期設定後、送受信許可状態にし、回線へのフラグ送出を開始します。 フラグ送出開始後、接続される相手局とのLINK接続を開始して、結果を待たずにReturnします。 LINK接続の結果はLapbnGetStatusにより取得が可能です。 LapbnClosePort ポートをクローズします。 宣言 int LapbnClosePort( int Port ); パラメータ Port クローズするポートの番号を1からLapbnInit関数で指定したポート数の範

(39)

解説

LapbnClosePortはPortが現在接続している相手局とのLINK切断を開始して、結果を待たずにReturnします。 LINK切断の結果はLapbnGetStatusにより取得が可能です。 LapbnGetPortData ポート設定情報を取得します。 宣言 int LapbnGetPortData( int Port, LapbnPORTINITDATA *PortData ); パラメータ Port ポート設定情報を取得するポート番号を1からLapbnInit関数で指定したポート 数の範囲で指定します。 PortData ポート設定情報を格納するLapbnPORTINITDATA構造体へのポインタを指定 します。 戻り値 処理が正常に終了した場合 0 を返します。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 解説 LapbnOpenPortは各初期設定後、送受信許可状態にし、回線へのフラグ送出を開始します。 フラグ送出開始後、接続される相手局とのLINK接続を開始して、結果を待たずにReturnします。 LINK接続の結果はLapbnGetStatusにより取得が可能です。 LapbnSendData フレームの送信を行います。 宣言 int LapbnSendData( int Port, int Adr, int Len, char *Dat ); パラメータ Port データの送信を行うポート番号を1からLapbnInit関数で指定したポート数 の範囲で指定します。 Adr 常に0を指定してください。 Len 送信するデータの長さをバイト数で指定します。 Dat Portで指定されたポートから送信するデータへのポインタです。送信され るデータはDatが指す位置からLenバイトです。 戻り値 処理が正常に終了した場合 0 を返します。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 解説 LapbnSendDataは現在接続されている相手局に対してデータ送信を行います。 LapbnSendDataは送信データを内部へ採り込むとアプリケーションへ処理を戻します。データは送信可能な 状態にあるときに送信されます。(送信完了を待たず関数から戻ってきます。) バッファにセットされたデータはIフレームの情報部として送信されます。 アドレス、制御コードなどをアプリケーション側で作成する必要はありません。 また、FCS付加も自動的に行われます。 純粋に、送りたいデータだけを渡してください。 LapbnGetStatus関数によりデータ送信の完了を確認できます。

(40)

LapbnGetFrameCnt 受信バッファに保持されているデータ(Iフレーム)の数を返します。 宣言 int LapbnGetFrameCnt( int Port, int *FrmCnt ); パラメータ Port 受信データ(Iフレーム)の数を調べるポート番号を1からLapbnInitで指定した ポート数の範囲で指定します。 0を指定すると、すべてのポート(ポート1∼80)の情報を返します。 FrmCnt 受信データ(Iフレーム)の数を受け取る領域へのポインタを指定します。 Portへの指定により内容が異なります。 戻り値 関数が成功すると0が返されます。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 解説 LapbnGetFrameCntは、Portへの指定により異なる動きをとります。 1) Port = 0 の場合 すべてのポート(ポート1∼80)の情報をFrmCntが指す領域へ返します。 このとき、FrmCntは要素数が80以上の配列を指定してください。 int FrmCnt[80],nRet; nRet = LapbnGetFrmCnt(0,FrmCnt); 2) Port = 1∼80 の場合 指定したポートの情報をFrmCntが指す領域へ返します。 int FrmCnt,nRet; nRet = LapbnGetFrmCnt(1,&nFrmCnt); LapbnGetFrameLen 受信バッファの先頭に格納されている受信データ(Iフレーム)の長さを返します。 宣言 int LapbnGetFrameLen( int Port, int *FrmLen ); パラメータ Port 受信データ長を調べるポート番号を、1からLapbnInitで指定したポート数の 範囲で指定します。 0を指定すると、すべてのポート(ポート1∼80)の情報を返します。 FrmLen 受信バッファの先頭に格納されているデータ(Iフレーム)の長さ(バイト数) を受け取る領域へのポインタを指定します。 Portへの指定により内容が異なります。 戻り値 関数が成功すると0が返されます。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 解説 LapbnGetFrameLenは、Portへの指定により異なる動きをとります。 1) Port = 0 の場合 すべてのポート(ポート1∼80)の情報をFrmLenが指す領域へ返します。 このとき、FrmLenは要素数が80以上の配列を指定してください。

(41)

LapbnReceiveData 受信バッファの先頭に格納されている受信データ(Iフレーム)を取得します。 宣言 int LapbnReceiveData( int Port, int *Adr, char *Dat, int *FrmLen ); パラメータ Port データの取り出しを行うポート番号を1からLapbnInitで指定したポート数 の範囲で指定します。 Adr データを送信した局のアドレスを受け取る変数へのポインタを指定します Dat 受信バッファから取り出した受信データを格納する領域へのポインタを指 定します。 取り出されたデータの長さ(バイト数)は、FrmLenに返されます。 FrmLen Datが指す位置に格納した受信データの長さ(バイト数)を受け取る変数への ポインタを指定します。 戻り値 関数が成功すると0が返されます。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 解説 取り出されたデータは受信バッファから削除されます。 取り出されるのはIフレームの情報部だけです。(アドレス等は含みません) 最大8192バイトまでのデータを受信することができます。 LapbnGetStatus ポートの各種ステータスを取得します。 宣言 int LapbnGetStatus( int Port, LapbnPORTSTATUS *PortStatus, int *LineStatus ); パラメータ Port ステータスを取り出すポート番号を、1からLapbnInit関数で指定したポート 数の範囲で指定します。 PortStatus 各種ステータスを格納するLapbnPORTSTATUS構造体へのポインタを指定 します。 LineStatus RS-232CまたはRS-485の制御信号の入力状態を受け取る変数へのポインタ を指定します。

Bit15 ∼ Bit4 Bit3 Bit2 Bit1 Bit0

RS-232C 無効 CI CD DR CS RS-485 無効 I 0:OFF  1:ON 戻り値 関数が成功すると0が返されます。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。

(42)

LapbnControlPort 制御信号の出力状態を変更します。使用するインタフェース(RS-232C or RS-485)により、使用できる信 号線が異なります。 宣言 int LapbnControlPort( int Port, int Control ); パラメータ Port 制御信号のコントロールを行うポート番号を1からLapbnInit関数で指定した ポート数の範囲で指定します。 Control 制御信号の出力状態を指定します。(バッファへのポインタを指定します。) このバッファに制御信号情報を以下のビット構成で設定します。

Bit15 ∼ Bit2 Bit1 Bit0

RS-232C 無効 RS ER RS-485 無効 C 無効 0:OFF  1:ON 戻り値 関数が成功すると0が返されます。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 LapbnGetHistory ポートの通信ヒストリを取得します。 宣言 int LapbnGetHistory( int Port, LapbnHISTORY *History, int *HistoryCnt ); パラメータ Port 通信ヒストリを調べるポート番号を1からLapbnInit関数で指定したポート 数の範囲で指定します。 History 取得した通信ヒストリ情報を格納するLapbnHISTORY構造体へのポインタ を指定します。 返されたヒストリ情報の数はHistoryCntに格納されています。 HistoryCnt 有効なヒストリ情報の数を受け取る変数へのポインタを指定します。 戻り値 関数が成功すると0が返されます。 関数が失敗すると0以外の値が返ります。関数が失敗した場合の戻り値については「エラーコード一覧」を 参照してください。 解説

ヒストリ情報はLapbnOpenPort関数、LapbnClosePort関数またはLapbnGetHistory関数を実行した時点でクリ アされます。

(43)

エラーコード一覧 値 内容 0 処理は正常に終了しました。 1 送信データの長さが 8kバイトを超えています。 2 送信バッファに空きがありません。 ・相手BUSY状態が継続しています。 ・以前に書き込まれた送信データの送信が完了していません。 9 通信異常が発生しています。 (LapbnGetStatusによるLinkStatusが8の状態です。) -1 ポート番号に異常があります。 -2 パラメータに異常があります。 -3 通信コントローラからの応答が返ってきませんでした。 ・割り込みが正しく入っていません。 ・ボードのI/Oまたはメモリが正しくアクセスできていません。 ・ボードの設定が、LapbnInitによる設定と一致していません。 ・ボードの電源が入っていません。 -6 指定ポートがオープンされていません。 (LapbnGetStatusによるLinkStatusが0の状態です。) -7 指定ポートは、すでにオープンされています。 -8 LapbnInitが実行されていません。 -9 LapbnInitはすでに実行されています。 -10 LapbnInitの最大ポート数が、1∼80以外の値です。 -11 指定されたボードが見つかりません。

(44)

6.1 構造体

ボード初期化情報構造体 typedef struct { int Format; // データフォーマット long BaudRate; // ビットレート(bps) int Link; // LINK動作設定 int MyAddress; // 自局アドレス int YourAddress; // 相手局アドレス int Interface; // インタフェース設定 int ClockType; // クロックタイプ int T1; // T1 タイマ値(s) int T4; // T4 タイマ値(s) int N2; // 最大再送回数 int O; // アウトスタンディングフレーム数 } LapbnPORTINITDATA 通信ステータス構造体 typedef struct { int WaitRespFrmCnt; // 応答未受信の送信データフレームの数 int RecvFrmCnt; // 受信しているデータフレームの数 int LinkStatus; // LINK 接続状態

int MyBusyStatus; // 自局ビジー状態 int YourBusyStatus; // 相手局ビジー状態 } LapbnPORTSTATUS LapbnHISTORY構造体構造体 typedef struct { int Id; // このヒストリーの情報

int AField; // 送受信されたフレームのAフィールド(Address) int CField; // 送受信されたフレームのCフィールド(Control) int STS0; // 送受信されたフレームのステータス1

int STS1; // 送受信されたフレームのステータス2 } LapbnHISTORY

(45)

技術資料紹介

弊社では下記の技術資料を提供しております。 詳しくは、弊社Web site(www.interface.co.jp)、または弊社窓口までお問い合わせ下さい。 カタログ PRM-0061 CPZカタログ(日本語版) PRM-0062 PCIカタログ(日本語版) PRM-0063 CSIカタログ(日本語版) チュートリアル

TUT-0056 チュートリアル XP Embedded OS構築編

TUT-0055 チュートリアル 画像入力ボード TUT-0054 CANチュートリアル TUT-0053 モーションコントロールチュートリアル TUT-0050 RTLinuxによるモーションコントローラボード制御プログラミング チュートリアル(GPG-7400用) TUT-0048 RTLinuxによるカウンタボード制御プログラミング チュートリアル TUT-0044 RTLinuxによるメモリ共有インタフェースボード制御プログラミング チュートリアル TUT-0043 RTLinuxによる調歩同期シリアル通信ボード制御プログラミング チュートリアル TUT-0041 RTLinuxによるGP-IBボード制御プログラミング チュートリアル TUT-0040 RTLinuxによるDAボード制御プログラミング チュートリアル TUT-0039 RTLinuxによるADボード制御プログラミング チュートリアル TUT-0038 RTLinuxによるDIOボード制御プログラミング チュ-トリアル TUT-0037 RTLinuxによるHDLCボード制御プログラミング チュートリアル TUT-0036 RTLinuxによるPCI/CompactPCI/CardBus制御入門書(導入編)

TUT-0034 Visual C++によるPPI入門書

TUT-0033 Visual Basicによるメモリ共有インタフェース入門書

TUT-0032 Visual C++によるメモリ共有インタフェース入門書

TUT-0031 Visual Basicによるカウンタ入門書

TUT-0030 Visual C++によるカウンタ入門書

TUT-0029 Visual BasicによるHDLC入門書

TUT-0028 Visual C++によるHDLC入門書

TUT-0027 Visual BasicによるGP-IB入門書

TUT-0026 Visual C++によるGP-IB入門書

TUT-0025 Visual BasicによるDIO入門書

TUT-0024 Visual C++によるDIO入門書

TUT-0023 Visual BasicによるDA入門書

TUT-0022 Visual C++によるDA入門書

TUT-0021 Visual BasicによるAD入門書

TUT-0020 Visual C++によるAD入門書

TUT-0019 Visual Basicによるモーションコントローラ入門書

TUT-0018 Visual C++によるモーションコントローラ入門書

TUT-0017 メモリンクを使用した負荷分散システム事例チュートリアル

TUT-0016 Visual BasicによるPPI入門書

TUT-0015 モーションコントロールチュートリアル

TUT-0014 Microsoft Visual Studio .NET移行ガイド

TUT-0008 拡張ユニット チュートリアル(問題解決編) TUT-0007 拡張ユニットチュートリアル(入門編) TUT-0006 C(98)/ISA製品からPCI/CompactPCI製品への移行チュートリアル(DOS編) TUT-0005 DOSによるLAP-B入門書 TUT-0004 DOSによるAD入門書 TUT-0003 LinuxによるPCI/CompactPCI/CardBus制御 入門書 TUT-0002 PCI-ISAバスブリッジチュートリアル TUT-0001 PCI-Cバスブリッジチュートリアル 技術情報資料 初めてのCANインタフェース Linux, リアルタイムLinux移植(SH-4)経験談及び当社の今後の取り組みについて LinuxからPCI/CompactPCIボードを制御する方法 ActiveXコントロールによるシステム組み込み技術 CompactPCIへの置き換え+システム構築/移行ガイド MS-DOSからPCI/CompactPCIボードを制御する方法

(46)

参考文献

・朝日新聞社 編:パソコン・データ通信プロトコルハンドブック (朝日新聞社:1985年) ・プロトコルハンドブック編集委員会 編:新プロトコルハンドブック (朝日新聞社:1994年) ・JIS ハンドブック 情報処理 データ通信編 1994(日本規格協会:1994年)

(47)

C-ISAバス製品からPCIバス製品への移行マニュアル MS-DOS編 LAP-B [VCD-4115→GPD-4115への移行]

2005年 9月 Ver. 1.1 発行 発行所 〒732-0828 広島県広島市南区京橋町10-21 TEL 082-262-7777 FAX 082-262-5066 ISD-7043-11 価格 ¥2,100 (定価 ¥2,000 + 消費税 ¥100) 本書の内容の一部または全部を、無断で転載することを禁止します。 本書の内容は、将来予告なく変更することがありますので、あらかじめご了承くださ

(48)

C・ISAバス製品からPCIバス製品への移行マニュアル MS-DOS編 LAP-B[VCD-4115→GPD-4115への移行] TUT-0005 Ver1.1

参照

Outline

関連したドキュメント

(b) 肯定的な製品試験結果で認証が見込まれる場合、TRNA は試験試 料を標準試料として顧客のために TRNA

製品開発者は、 JPCERT/CC から脆弱性関連情報を受け取ったら、ソフトウエア 製品への影響を調査し、脆弱性検証を行い、その結果を

アナログ規制を横断的に見直すことは、結果として、規制の様々な分野にお

はありますが、これまでの 40 人から 35

これらの実証試験等の結果を踏まえて改良を重ね、安全性評価の結果も考慮し、図 4.13 に示すプロ トタイプ タイプ B

個別の事情等もあり提出を断念したケースがある。また、提案書を提出はしたものの、ニ

活用することとともに,デメリットを克服することが不可欠となるが,メ

結果は表 2