FAコントローラ及びプログラミング環境の開発 静岡大学 大学院 情報学研究科 情報学専攻 1年 塩見研究室 羽田野 一貴 はじめに しかし 制御プログラム 現在,(株)NSTではNX-2000 シリーズのEthernet通信機 能の拡張開発を行っている. 簡単開発ツール「NX-Fit」と 制御対象機械の様々なデー タを取得するアプリケーショ ン「通信ライブラリ」との同時 Ethernet通信機能である. 開発中のEthernet通信機能には通信の切 断処理が完了しないために再接続ができな くなる問題が存在する.「通信ライブラリ」か らFINが送られると, 「NX2000SA」がACKは返 すがFINを送り返さない場合がある. プログラム上の デバッグ情報 NX-Fit ハブ 各値要求 コマンド 制御対象機械 の各値 Ethernet通信機能を完成させるため 問題の原因を特定する NX2000SA 通信ライブラリ プロジェクト方針 デバッグ計画 1. 問題になっているEthernet通信 現象の再現及び現象の把握 2. 設計資料やソースからプログラ ム内容の把握 3. 問題発生原因箇所の絞込 4. 具体的な問題発生原因の特定 コネクション ・オープン 問題現象の内容 から「コネクション クローズ」処理に 着目.実際の処理 やデータのやり取 りを確認. CLOSED 問題の原因となってい る箇所の把握を行う. TCP通信処理の流れ を状態遷移図で書き 出し,一連の処理につ いて確認する. TCP接続要求待ち LISEN Ethernetフレーム受 信 [SYN_Flag] / SYN_ACK送信 2.1 2.2 Ethernetフレーム受信 [notFIN_Flag] / ACK送信, コールバック関数 1 TCPデータ受信 TCP_APIキャンセル 1.2 通信ケーブル RESEVED_WAIT キャンセル処理終了 / コールバック関数 CANCEL_WAIT 1.3 2.3 ESTABLISHED Ethernetフレーム受 信 [ACK_Flag] / コー ルバック関数 1.4 ドライバ Ethernetフレーム受信 [ACK_Flag] SENT_WAIT 1.1 T4ライブラリ SYN_RESEVED TCPデータ送信 / Ethernetフレーム送信 プロジェクト管理 アプリケーション Ethernetフレーム受信 [FIN_Flag] / ACK送信 コネクション ・クローズ 1 TCP_APIキャンセル CLOSE_WAIT 通信確立・ パケット送受信 2 TCPクローズド処理 / FIN送信 Ethernetフレーム受 信 [ACK_Flag] LAST_ACK テスト対象 番号 1.2 ライブラリへTCPデータ受信処理を行うよう要求 (tcp_rcv_dat()の実行) クライアントがFINを送信 1.3 ドライバが受信したFINをライブラリに渡す 1.4 FINを受信したことをアプリケーションに知らせる 2.1 2.2 ライブラリへFINを送信するよう要求する (tcp_sht_cep()の実行) ライブラリがドライバを用いてFINを送信 2.3 サーバがFINを送信 1.1 FINの 受信処理 スケジュールを立てて管理する 週一回の週報とミーティングを通して 今週の実績と次週の予定を立てる. WBSを作成して現在の進捗や予定よ り遅れているかどうかを確認する. FINの 送信処理 1 2 処理内容 デバッグ結果と検証 HewデバッガとWireSharkを用いて,以下の項目の実行回 数を計測し比較. 処理No FINの受信処理 FINの送信処理 1.2 1.3 1.4 1.5 1.6 1.7 1回目 計測回数 2回目 3回目 45回 45回 44回 44回 44回 44回 44回 44回 43回 43回 43回 43回 64回 64回 63回 63回 63回 63回 3回の計測とも,アプリケーションがライブラリからFINを受け取る処理の回数と FINを送信する処理の回数は一致している.このことから,アプリケーションがFIN 受信を判定してからFINを送信するまでの処理に問題はないと考えられる.しか し,それらの回数はクライアントから送られたFINの数より1少ない. FINの受信処理に問題があるのではないか 今後の課題 リストアップした「コネクション クローズ」処理のどこに原因 があるのか絞込みを行う FINの受信処理のどこが問題なのか絞込み FINの受信と送信のどちらが問題なのか切り分け テスト対象 確認した処理内容をリスト化すること でテスト対象の網羅性を確認しやす くする. 絞込結果から判定した原因箇所での具体的な原因の特定 特定した原因の修正 エイジングによる動作確認で以下の項目をチェック • 正しく修正できているか • 他に問題がないか 受信データ判定に問題があるのか・・・① TCPデータ受信メソッドの使用時に問題があるのか・・・② ドライバからライブラリへのデータ転送に問題があるのか・・・③ 左と同様に,以下の項目の実行回数を計測し比較. テスト 対象 確認処理内容 ①,② ① ① ① ① ②,③ ②,③ TCPデータ受信(tcp_rcv_dat)の実行回数 TCPデータ 受信のコールバック関数が呼ばれた回数 アプリケーションが通常データ受信だと判定した回数 アプリケーションがデータ受信エラーだと判定した回数 アプリケーションがFIN受信だと判定した回数 通常データ,FIN含むクライアントからのデータ送信回数 サーバが送信したデータ受信に対するACKの回数 計測回数 1回目 2回目 3回目 36回 36回 34回 0回 2回 37回 37回 1049回 1049回 975回 0回 74回 1050回 1050回 22回 22回 21回 0回 1回 23回 23回 TCPデータ受信メソッドの実行回数と受信データの各判定数の合計は一致したことか ら受信データ判定に問題はない.クライアントからのデータ送信及びACKの送信回数 よりも受信メソッドの実行回数が1少ない.クライアントからのデータ送信回数とそれ に対するサーバからACK送信が一致したのでドライバからライブラリ間に問題はない. TCPデータ受信メソッド使用処理に問題があるのではないか プロジェクトを通して学んだこと PDCAサイクルで作業を行う方法を学んだ デバッグでは何に問題があるのかを理論的に想定し,一つ 一つを確認していくことが重要であることを学んだ 調査内容を報告するときは報告書のフォーマットに気を付 けることや,報告内容を表や図にすると相手に伝わりやすく なることを学んだ
© Copyright 2024 ExpyDoc