PICNICについて | |
■PICNICについて
2007年8月6日 18:17 更新
|
●PICNICの概要PICNICとは/特徴・回路図/動作チェックに必要なもの/PICNIC仕様 1.1.1 PICNICとは?PICNIC は、"PIC Network Interface Card" の略で、PICマイコン Microchip PIC16F877を利用した、Ethernet に接続する I/O ボードのキットです。従来のver.1キットと比較して、今回利用するver.2キットは、更に小型化され、700mm×100mmとなりました(写真1)。 <写真1> ネットワーク対応PICマイコンボード PICNIC ver.2
PICNICは、トライステート(TriState)社の製品で、秋月電子通商から購入することができます。 このキットを用いて周辺機器接続用のインターフェースを用意し、PICマイコンのパラレルI/O をネットワーク経由で制御するようなアプリケーションプログラムを用意することで、機器電源の制御やセンサ情報の収集など、多様なシステム構築が容易に行えます。 ネットワーク経由でのパラレルI/Oの制御・監視は、PICマイコンのファームウェア上に実装された簡易httpサーバによって対応します。この機能によって、クライアント側(webブラウザ)はプログラミング不要となり、機種やOSを選びません。 ネットワークインターフェース制御(NIC)はEthernetを利用します。これによって、市販の安価なEthernet用ネットワーク機器(HUBなど)とケーブルを準備するだけで、全ての実験環境が構築できます。なお、外部ネットワーク(WAN、インターネット接続)との接続のためには、構内LANやADSL、CATVケーブルインターネット網への接続が必要となります。 他方、PICNICの専用制御プロトコルをクライアント側に実装し、webブラウザを使用しない専用システムの構築を行うことも可能です。制御用ライブラリはTriState社のホームページからダウンロードすることが可能です。 1.1.2 特徴・回路図・Microchip社製 PIC16F877(RISC Enhanced x16、DIP300/40pin CMOS Flash 8bitマイクロコントローラ、通称87xシリーズ)を使用。→データーシート(オリジナル)はここから ・Realtek Semiconductor社製 NE2000(DP8390)互換 RTL-8019AS(10BASE-T 100pin/QFP one-chip Ethernetコントローラ、通称カニチップ)を使用。 ・主要LSI、チップ抵抗・コンデンサは基板部品面に予めハンダ付け済み。キット組み立てはコネクタ類とDIP-ICソケット、入出力コネクタ、LEDなどの実装を行うのみで完了し、簡単です。 <図1> 機能ブロック図 <図2> 回路図(※TriState社データシートから転載) ※付記・PIC16F877コントローラは、RAポートをアナログ入力ピン、RBポートを汎用(ディジタル)I/Oピンとしてボード外へ出しています。入出力端子は回路図中CN2コネクタ(100milピッチ26ピン)。 ・アナログ入力ピンRA5には、基板上に実装された摂氏℃リニアな温度センサIC(LM35DZ)の出力(温度係数+10.0mV/℃)が接続されています。これにより、ボード周辺の温度(大まかな室温)をモニタできるようになっています。 ・LCD液晶ディスプレイパネル・モジュール(オプション)をCN5コネクタへ接続すると、ディジタル出力ポートRBをCN2コネクタで共有して使用するため、外部で利用可能なポート数は減少します。 ・シリアルEEPROM 93C46(U2) には、本PICNICのEthernetNICコントローラ向けの、唯一無二のMACアドレスが予め書き込まれています。 ・基板上ジャンパSW JP2 は、電源投入時に、ファームウェアの動作を「通常モード」か「ブートストラップモード(初期設定)」のどちらで開始するかを選択するものです。 1.1.3 動作チェックに必要なもの・(ACアダプタなどの)DC12V電源(秋月電子のDC12Vアダプタを推奨) ・10BASE-T NICを有するパソコン(ブートストラップモードでのチェック時には、RS-232Cシリアルインターフェースによる接続が必要になります)(写真2) ・Ethernet ハブ(HUB)装置、とストレートケーブル(2本)。 ・1対1でのみ接続する場合はクロスケーブルでも使用可能。 ・Webブラウザ ・ファームウェア開発時には、MPLAB(MPASM)開発環境とPICライタ装置が必要。 ・クライアント側ドライバを用いた開発時には、Visual BASIC、Visual C++、GNU gcc などの言語開発系が必要。 <写真2> パソコンを接続し、動作チェックを行っている様子 正常に動作していると、ブラウザから接続して、このようなページが現れます。 1.1.4 PICNIC仕様・通信方式:Ethernet 10BASE-T ・アクセス方式:CSMA/CD ・Ethernet NIC:RTL-8019AS(NE2000コンパチブル) ・制御CPU:PIC16F877-20/P(20MHzクロック駆動) ・内蔵インターフェース: ・ファーム内蔵プロトコル:ARP、DHCP、ICMP、IP、UDP、TCP、HTTP(GETメソッドのみ) ・通信バッファ:16Kバイト(EthernetNIC内部のリングバッファを共用) ・デフォルトIPアドレス:192.168.0.200/24 ・周辺機能:RS-232Cシリアルインターフェイス(SP232ACP)、温度センサ(LM35DZ)、16x2 LCD表示モジュール(SC1602B、オプション) ・LED表示:I/Oポート出力ポート状態x4ch、Ethernet-NIC状態LEDx3(TX,RX,LINK) ・電源:DC 8-12V 100mA ●PICNICのファームウェアファームウェア内蔵プロトコルスタック/ファームウェアのダウンロード/ファームウェアの概要/ファームウェアの初期設定シーケンス 1.2.1 ファームウェア内蔵プロトコルスタック本PICNICのファームウェアに実装されているプロトコルスタックは、以下の通りです。 ・Ethernetフレーム送受信処理 1.2.2 ファームウェアのダウンロードPICNIC ver.2用のMPASMアセンブラ向けファームウェア(ver1.2)は以下からダウンロードしてください。 1.2.3 ファームウェアの概要ファームウェア全体では7380行もコード量があります。 21〜37行目:各種定数の定義 470行目:プログラム開始点(ORG 0) 820〜889行目:メインループ 902〜1018行目:Ethernetフレーム受信処理(RTL8019ASバッファ管理) 2328〜2393行目:A/D変換入力処理 2771〜3032行目:RTL8019ASの初期化関係 3352〜3578行目:UDP→パラレルI/O制御、A/D変換機能 3879〜4024行目:ソケット管理 4295〜4369行目:EEPROMへのデータ書き込み関係 4379〜4548行目:URL指定CGI解析処理 4651〜4919行目:スタートアップルーチン(電源投入時設定関係) 5297〜5404行目:ブートストラップモード・初期化ルーチン 5952〜6056行目:現在のソケットステータスの通知処理(現在未使用) 6139〜6266行目:取得したIPアドレスをLCDパネルへ表示する処理 6273〜6424行目:シリアルポート→UDP送信処理 7061〜7258行目:WebブラウザHTML形式の応答メッセージ・形式格納エリア
Ethernetフレーム長の制限のため、1回で全てのHTML形式テキストを送出することができないため、4つのブロック(ESTAB0からESTAB9に渡る4トランジション遷移)に分割して送出しています。この送出処理が、1690行目からのTCPパケット処理のシーケンサとして実装されています。 Ethernetケーブルの切断、ネットワークの途絶、各種プロトコル処理中のフリーズ状態からの回復のため、タイマ割り込みルーチン内には、自動リセット機能が実装されています。例えばフリーズの後、約15秒後にTCPのLISTEN状態に強制的に戻すように設計されています。 HTTPプロトコルのGETメソッドにあたる部分だけが実装されています。 1.2.4 ファームウェアの初期設定シーケンスファームウェアのスタートアップルーチン(電源投入時設定関係、4651行目〜)のシーケンスは以下のようになっています。 (1)内蔵EEPROMから初期設定に必要なデータ(IPアドレス設定、など)をRAMにコピー (2)LCD液晶ディスプレイパネルを初期化 (3)EthernetNIC(RTL8019AS)を初期化し、CONFIGレジスタをNICへロード (4)外部シリアルEEPROM 93C46 から、MACアドレスを取得 (5)(4)で取得したMACアドレスをNICのPARレジスタへ書き込み (6)動作モード(通常 or ブートストラップ)のジャンパSW状態確認。その後、選択されたモードのメインルーティンへ突入。 (7)DHCPサーバからのIPアドレス取得(IP=0.0.0.0)が必要なら、ブロードキャストでDHCPプロトコルのDISCOVERメッセージを送出する。 ※上記の処理が終了した後、フレーム受信待ち状態となる。 ●PICNICの使用方法webブラウザでのリモートI/O制御/LCD液晶モジュール/専用制御プロトコルを用いたテストプログラム 1.3.1 webブラウザでのリモートI/O制御図3に、Ethernet経由にて、Microsoft Internet ExplorerでPICNICに割り当てられたIPアドレスへ接続した画面を示します。 <図3> webブラウザを用いたリモートI/O制御画面の例(HTMLバージョン) リモートI/O制御画面は、大まかに次の3つのセクションに分かれています。 (1)I/O Portsセクション現在のI/Oポートの状態が表示されます。表示されている値は、リアルタイムには更新されないので、現在の状態の取得には、ブラウザの「リロード」ボタンを押して、再取得します。あるいは、セクション最下段の、[Reload]ボタンをクリックします。 ポート状態としては、アナログ入力ポート(RA0からRA3)、温度センサ値(RA5、摂氏値)、ディジタルI/Oポートの入出力状態が表示されています。 出力値の変更は、RB2からRB7のOUTと示されているポートのみ制御可能です。 サーバ側では仮想的な modify.cgiというCGIプログラムが応答しているものとし、 I/Oポート制御のためのURL指定について以下にまとめます。 [現在値のReload] [例:出力ポートRB7 -> Hへ変更] [例:出力ポートRB7 -> Lへ変更]
現在設定されいるIPアドレス、ネットマスク値、ゲートウェイIPアドレス、各種機能用のポート番号が表示されています。 図3の表示例では、IPアドレス:160.252.131.19、ネットマスク25bit、ゲートウェイ:160.252.131.1 として設定されていることがわかります。 設定値の変更は、該当するテキストフィールドに数値を入力して、[Save]ボタンをクリックし、電源を切断・再投入するか、リセットスイッチを押す必要があります。 [Default]ボタンをクリックすると、ローカルIPセグメント用の設定値である、IPアドレス:192.168.0.200、ネットマスク24bitというデフォルト値が設定されます。 IPアドレスとして 0.0.0.0 を設定することで、DHCP(Dynamic Host Configuration Protocol)サーバからIPアドレス取得を行うモードとなります。 ネットワーク設定のためのURL指定について以下にまとめます。 [default値] [初期値に戻すには] (3)Statusセクションパケット数と現在のIPアドレス値が表示されます。なお、IPアドレス値については、DHCP取得の時にのみこの表示の意味があります。 1.3.2 LCD液晶モジュールLCD液晶パネルが接続されている場合、現在のIPアドレス設定値が表示されます。DHCPサーバからIPアドレス取得するモードであり、かつ取得が成功した場合、取得したIPアドレスが表示されます。 ※注意:LCD Port UDP:#に値が設定されていない(0がセット)場合、LCDパネルには■■■■■が表示されるので注意。IPアドレスの表示には、この値を 10000 などとしておくこと。 LCDパネルを使用しない場合: LCDパネルを使用する場合: 1.3.3 専用制御プロトコルを用いたテストプログラムWindows上で稼動する、専用制御プロトコルを用いたテストプログラム(pictest.exe)がTriState社webサイトから配布されています。 http://www.tristate.ne.jp/picnic/menu.html ここから、サンプルプログラム(pictest)+インストーラのLZH形式ファイルをダウンロード その後、Lhasaなどのツールで解凍、setup.exeを実行し、セットアップします。 [スタート]→[プログラム]からPICNIC test を実行し、IPアドレス、取得時間を表示するLCDパネルのポート番号をセットし、[接続]ボタンをクリックすると、設定されている取得間隔毎にPICNIC側へ接続を行い、現在の入出力状態を表示します。PICNICのLCDパネルの第2行には、pictestによって接続・取得された日時が表示されます。 <図4> テストプログラムによるリモートI/Oの状態取得の例 ●PICNICの専用制御プロトコル以下のTriState社webサイトから各種プラットフォーム・言語用の制御APIドライバがダウンロード可能です。 上述の、1.3.3 テストプログラム(pictest.exe)も、Windows上のPICNIC.DLLライブラリとVisual C++にて開発されたものです。 この演習では、専用制御プロトコルは対象としていません。各自で研究下さい。 |
IT技術演習(院)−PICNIC− by Katsumi WASAKI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.1 Japan License.
|