|
||||
|
改訂履歴
版数 改訂年月日 作成者 |
改訂個所/ページ |
改訂理由 |
1.0 2017/05/30 M.T |
初版 |
|
1.1 2017/05/31 M.T |
全項目 |
文言を過去形から修正。内容も具体的に修正。 |
1.2 2017/05/31 M.T |
3.4,3.5 |
文言の修正、【】のつけ忘れ。 |
SOFIX社内の開発業務において、FANUC製NCのPMC領域をWindowsアプリケーション内にて監視し、情報の取得・表示・設定を行うソフトウェア開発を行うことがある。
この開発業務において、検証作業で必要なPMC領域のデータの変更をFANUCから提供されているソフトウェアによって行い、変更結果が開発したソフトウェアにて反映されているかなどを確認しているが、このソフトウェアの仕様によって、一度に1人までしか検証作業を行うことができない。
そこで、社内でオリジナルのPMC領域の監視・設定ソフトウェアを開発することにより、複数人でもPMC領域の監視・データの設定が可能になるようにし、開発・テスト時の検証作業の効率を向上させることを目的とする。
本ソフトウェアが動作する環境のハードウェア構成は以下の通りである。
図 1 ハードウェア構成
本ソフトウェアをインストールするコンピュータとなる。
PCはLANによってFANUC製NCと接続可能である。
本ソフトウェアは、このNC内にあるPMC領域と呼ばれるデータ領域を定周期で監視し、データの取得および表示と、PMC領域へのデータの設定を可能とする。
本ソフトウェアが動作する環境のソフトウェア構成について記載する。
図 2 ソフトウェア構成
○ 本ソフトウェアは32Bitアプリケーションとして開発。
本ソフトウェアをさす。本ソフトウェアはFANUC製NCのPMC領域からデータを取得するために、FOCAS2ライブラリを使用する。
FANUCが提供している、FANUC製NCからの情報の取得と、情報の設定を行うための関数群を持つライブラリである。本ソフトウェアはこのライブラリを使用してPMC領域のデータ取得・設定を行う。
|
機能 |
仕様 |
1 |
PMC領域監視設定機能 |
監視するPMC領域の設定情報を登録・保持する機能 |
2 |
PMC領域データ監視機能 |
PMC領域の監視設定に応じて、指定された領域を定周期で監視する機能 |
3 |
PMC領域管理機能 |
PMC領域から取得した情報を保持する機能 |
4 |
PMC領域データ表示機能 |
PMC領域から取得した情報を表示する機能 |
5 |
PMC領域データ設定機能 |
監視しているPMC領域へのデータの変更を行う機能 |
6 |
エラー情報管理機能 |
本ソフトウェアで発生しているエラー情報を表示・保存できる機能 |
表1 主な機能一覧
本機能はメイン画面・PMC領域監視設定追加画面との関わりが多いため、関連箇所に番号を振って説明を記載する。
【メイン画面】
【PMC領域監視設定追加画面】
○ 本ソフトウェアが監視するNCの接続先の設定と、PMC領域の設定を管理する。
(1) ユーザごとに任意の監視設定の作成を可能とするため、本ソフトウェアの画面上でPMC領域監視設定を編集可能とする。
(2) PMC領域データ監視機能が監視設定を参照する処理と、本機能の動きによってPMC領域監視設定を更新する処理との排他制御を簡潔にするため、接続するNCや監視するPMC領域の設定は、PMC領域データ監視機能が停止している状態でのみ実行可能とする。@のボタンによって監視スタート/終了の切り替えをできるようにし、@のボタンが「監視スタート」となっている間だけA〜Oの項目を編集可能にする。
(3) 不正な設定値でNCへの監視処理や外部ファイルへの保存が行われることを防ぐため、画面上での入力項目はC〜F、J〜Mに入力制限を設け、入力制限は以下の表2に記載されている内容を満たすように設定する。
(4) 監視処理で不正な値が利用されることを防ぐため、(3)で設定した入力制限を満たさなかった場合エラーメッセージを表示し、先の処理へ進めないようにする。入力制限を満たしているかどうかのチェックは@のボタンが押下されてPMC領域の監視処理が始まるとき、若しくはNのボタンが押下されてPMC領域監視設定追加が確定されたときに行う。
(5) 開発案件などによって監視対象のアドレスが変わるため、PMC領域監視設定の監視領域については、ユーザが任意の個数だけ項目を追加・削除・編集できるようにする。Gの追加ボタンが押されたときにPMC領域監視設定追加画面が表示され、項目の追加が可能になるようにする。Hの削除ボタンが押されたときには、Iで選択されている項目を削除する。項目の追加・削除をするたびにPMC領域データ管理機能に監視設定情報を送る。
(6) 2回目以降のソフトウェア起動時に監視する領域の設定を毎回行う手間を省くため、PMC領域監視設定のファイルを入出力可能とする。ファイルはiniファイルとし、監視が行われていない間、ファイル名を指定して保存できるようにする。Bのボタンが押されたときにファイル保存ダイアログを表示させ、指定された場所にファイルを保存する。Aのボタンが押されたときにファイル参照ダイアログが表示され、選択されたファイルから設定情報の読み込みを行う。
(7) ユーザが設定ファイルを本ソフトウェアが意図しない内容に書き換えられたときに誤作動が起きることを防ぐため、外部ファイルに保存・読み込みする際も以下の表2の入力制限に準拠しエラー表示をしたのち保存・読み込みを中断する。
(8) 外部ファイルの読み込みはPMC領域データ監視機能が停止している状態でのみ実行可能にする。
○ iniファイルへの保存時には、以下の項目を保存する。
セクション名 |
キー名 |
入力制限等 |
NC_connection_ destination_setting |
|
接続先のNCに関する情報を保持する |
|
Ip_address |
FOCAS2ライブラリを使用して接続するNCのIPアドレスを保持。 ○○. ○○. ○○. ○○のフォーマットとし、○○の部分は半角数字のみで、それぞれ値は0~255までとする。 |
|
Port_number |
FOCAS2ライブラリを使用して接続するNCのポート番号を保持。 文字入力不可で、値は0~65535までとする。※ |
|
Timeout |
FOCAS2ライブラリを使用して接続する際のタイムアウトを保持。ms単位。 文字入力不可で、値は0~65535までとする。※ |
Monitoring_information_ setting_header |
|
監視情報全体に共通の設定情報を保持する。 |
|
Total_number_of_ setting_data |
以降に記載される監視情報設定の個数を保持。 必ず0以上とする。データの上限は設けない。 |
|
Update_cycle |
監視処理の周期をms単位で指定する。必ず0以上とする。 |
Monitoring_information_ setting_header : n |
|
nは0から始まる通し番号とする。 |
|
ProjectName |
このPMC領域のデータが意味する名称を記載。「=」を含む文字列はエラーとする。 |
|
AddressType |
読み込むPMC領域のアドレスタイプを指定する。iniファイル保存時には選択されたアドレスタイプに対応するインデックスで保存する。読み込み時に、iniファイルに保存されたインデックスをそれぞれ対応するアルファベットに変換する。 アドレスタイプとして使用できるのは以下のアルファベットのみとする。 G,F,Y,X,A,R,T,K,C,D,M,N,E,Z |
|
StartAddress |
読み込むPMC領域の開始アドレスを指定。数字のみ入力可能で、値は0~65535までとする。※ |
|
EndAddress |
読み込むPMC領域の終了アドレスを指定。数字のみ入力可能で、値は0~65535までとする。また、必ず開始アドレス以上の値でなければならない。※ |
表2 PMC領域監視設定機能設定一覧
※全角数字でも入力可能。
本機能はメイン画面・PMC領域監視設定追加画面との関わりが多いため、関連箇所に番号を振って説明を記載する。
【メイン画面】
(1) データの取得処理をメインスレッドで行ってしまうとGUIの動作に支障をきたす恐れがあるため、PMC領域データの監視は、スレッドを用いてバックグラウンドで実行されるようにする。
(2) ユーザが途中で設定を変更、若しくはソフトウェアを終了させる可能性があるため、バックグラウンドでのデータ監視処理はユーザの任意のタイミングでの開始・終了ができるようにし、@のボタンが押されたときにバックグラウンドでの監視が始まるようにする。また、@のボタンは「監視スタート」から「監視終了」へテキストを変更し、A〜Hは押下不可かつ入力不可の状態になるようにする。また、「監視スタート」押下後、設定した更新周期の間、「監視終了」が押せないようにする。「監視終了」が表示されている状態でボタンが押下されたときにはバックグラウンドでの監視処理を終了させ、「監視終了」から「監視スタート」にテキストを変更する。
(3) PMC領域監視設定情報を元に監視処理を実行する必要があるため、PMC領域監視設定情報の更新を受け取れるようにする。
(4) バックグラウンドで実行する監視処理はPMC領域監視設定機能で作成された情報を元に行う。
(5) PMC領域データ取得を1回ずつ行うことを1サイクルとし、このサイクルを繰り返し行う。取得したデータをソフト内で保持するため、1サイクルで取得したデータはPMCデータ管理機能に対して登録要求を行う。
(6) 1サイクル終わるごとに1回前のサイクルのデータと比較して、データの更新があった場合にはPMC領域データ表示機能に更新の通知を行う。
(7) 必要以上にサイクルを回すことによって負荷を上げないため、1サイクルの処理時間がPMC領域監視設定で指定された更新周期よりも早かった場合には、更新間隔が経過するまで待機してから次のサイクル処理に移る。
(8) PMC領域からのデータ取得はFOCAS2ライブラリを使用し、ライブラリハンドルの取得にはcnc_allclibhndl3関数を使用。ライブラリハンドルの解放にはcnc_freelibhndlを使用する。
(9) スレッド内で何度も取得・解放を行うとパフォーマンスが悪くなるため、ライブラリハンドルの解放はPMC領域監視スレッドが終了するときに一度だけ行う。
(10) ライブラリハンドルの取得・解放に失敗した場合はPMC領域データ監視機能のスレッドを終了する。
(11) PMC領域からのデータ取得にはpmc_rdpmcrng関数を使用し、PMC領域のデータ読み込みに失敗した場合はそのままPMC監視領域スレッドは継続するようにする。
(12) 1サイクルの処理時間がPMC領域監視設定で指定された更新周期よりも長かった場合やライブラリハンドルの取得・解放に失敗した場合、PMC領域のデータ読み込みに失敗した場合は、エラー情報管理機能にエラー情報を通知する。
(1) PMC領域取得データ情報に記載されたデータは内部で保持し、PMC領域データ監視機能からのデータ更新要求に対して、内部で保持している領域データを更新する機能を所持する。
(2) PMC領域データ監視機能、若しくはPMC領域データ表示機能からの情報要求に対して、内部で保持しているデータを渡す機能を所持する。項目の追加・削除で保持するデータ量が変化するため、動的配列のvectorで保持する。内部データへの参照を渡すと内部データを更新される恐れがあるため、情報を渡す際には内部データを構造体にコピーし、その構造体を渡すようにする。
(3) PMC領域監視設定情報を元に、内部で保持するvectorのデータ領域の確保を行う必要があるため、PMC領域監視設定機能からのPMC領域監視設定情報の更新を受け取れるようにする。
(4)
メモリリークを防止するため、本ソフトウェアが終了するときには、確保した内部の管理データをすべて解放する。
本機能は主に以下のメイン画面の赤枠の部分を利用。
(1) ClistCtrlを用いてPMC領域データ管理機能が持つデータをAに表示し、表示の更新はPMC領域データ監視機能から更新通知が来たときに行い、更新が必要なところだけを書き換えられるようにする。
(2) PMCアドレスはアドレスタイプを先頭につけて表示する。PMC領域データは「監視スタート」が押されたときに、選択されているラジオボタンや選択されている項目の開始アドレスと終了アドレスの値を用いて表を作成し0で初期化する。
(3) @の監視設定一覧で選択されている項目に応じたPMC領域データをAに表示させる。
(4) 監視データによってデータ形式が異なる場合に対応するため、ラジオボタンを用いてBIT、BYTE、WORD、LONGに表示を切り替えられるようにする。また、本ソフトウェア起動時にはBYTEにセットしてあるようにする。
(5)
セルをダブルクリックしたとき、PMC領域データ設定機能を呼び出し、データの更新を行う。
【BIT表示モードの場合の画面】
(1)
BIT表示モードの場合は表の列を8列とし、1行に1Byte分の情報を表示する。1列目に7Bit目、2列目に6Bit目…8列目に0Bit目の値を0,1のいずれかで表示し、行ヘッダにはその行のPMCアドレスを表示させる。
【BYTEモードの場合の画面】
(1) BYTE表示モードの場合は表の列を8列とし、1行に8Byte分の情報を表示する。1列目に1Byte目、2列目に2Byte目…8列目に8Byte目の値を0~255で表示し、行ヘッダには1列目のデータのPMCアドレスを表示させる。1行8Byteのため、PMCアドレスは+8したものを表示する。
【WORDモードの場合の画面】
(1) WORD表示モードの場合は表の列を8列とし、1行に16Byte分の情報を表示する。1列目に1,2Byte目、2列目に3,4Byte目…8列目に15,16Byte目の値を表示し、行ヘッダには1列目のデータのPMCアドレスを表示させる。1行16Byteのため、PMCアドレスは+16したものを表示する。
【LONGモードの場合の画面】
(1) LONG表示モードの場合は表の列を4列とし、1行に16Byte分の情報を表示する。1列目に1~4Byte目、2列目に5~8Byte目…4列目に13~16Byte目の値を表示し、行ヘッダには1列目のデータのPMCアドレスを表示させる。1行16Byteのため、PMCアドレスは+16したものを表示する。
(1) FOCAS2ライブラリハンドルは、PMC領域データ監視機能とは別に書き込み処理を行うたびに取得・解放し、ライブラリハンドルの取得にはcnc_allclibhandl3関数、解放にはcnc_freelibhandlを使用する。更新にはFOCAS2ライブラリのpmc_wrpmcrngを使用する。
(2) ライブラリハンドルの取得・解放、更新の書き込みに失敗した場合には3.6エラー情報管理機能に準拠した上でエラー情報管理機能にPMC領域監視エラー情報を通知する。
【BITデータ設定時の画面】
(1) PMC領域データ表示機能において、BIT表示モードの状態から本機能が呼び出されたとき、ビット単位でのPMC領域の更新を行う。
(2)
更新後の値入力は0,1のいずれかのみを受けつけ、pmc_wrpmcmg関数の呼び出しの際にはデータタイプにはBYTEを指定し、書き込み対象のビットが含まれるByteデータをビット演算で更新して登録する。
【BYTEデータ設定時の画面】
(1) PMC領域データ表示機能において、BYTE表示モードの状態から本機能が呼び出されたとき、ビット単位でのPMC領域の更新を行う。
(2) 更新後の値入力は0~255のいずれかのみを受けつけ、pmc_wrpmcmg関数の呼び出しの際にはデータタイプにはBYTEを指定する。
(3)
入力値が上記の制限を満たさなかった場合、エラー表示をし、値を書き込めないようにする。
【WORDデータ設定時の画面】
(1) PMC領域データ表示機能において、WORD表示モードの状態から本機能が呼び出されたとき、ビット単位でのPMC領域の更新を行う。
(2) 更新後の値入力は0~65535のいずれかのみを受けつけ、pmc_wrpmcmg関数の呼び出しの際にはデータタイプにはWORDを指定する。
(3)
入力値が上記の制限を満たさなかった場合、エラー表示をし、値を書き込めないようにする。
【LONGデータ設定時の画面】
(1) PMC領域データ表示機能において、LONG表示モードの状態から本機能が呼び出されたとき、ビット単位でのPMC領域の更新を行う。
(2) 更新後の値入力は0~4294967294のいずれかのみを受けつけ、pmc_wrpmcmg関数の呼び出しの際にはデータタイプにはLONGを指定する。
(3) 入力値が上記の制限を満たさなかった場合、エラー表示をし、値を書き込めないようにする。
本機能は主に以下のメイン画面の赤枠の部分を利用する。
(1) PMC領域データ監視機能、PMC領域データ設定機能からの通知により、ClistCtrlを用いてエラー情報を画面に表示する。
(2) エラーは発生時刻順に並べ、最後に発生したエラーは一番上に表示する。また、エラーは動的配列のvectorで保持し、最大100件まで表示する。100件を超える場合には古いエラーから順に消去する。
(3) 表示項目は、発生時間・エラー種別・エラー内容・関数名・アドレスタイプ・開始アドレス・終了アドレスとし、表示形式は以下の表3のとおりとする。
(4) エラー内容の欄にはエラーコードに対応するメッセージを表示させる。FOCAS2関数エラーの場合は表示内容をdefineで定義して用いる。
○エラー情報には以下の内容を表示する。
項目名 |
内容 |
|
共通情報 |
どのエラーでも共通の情報 |
|
|
発生時刻 |
エラーが発生した時刻。時・分・秒の情報を保持する。 |
エラー種別 |
以下の2種類の識別をする。 |
|
FOCAS2関数エラー情報 |
エラー種別がFOCAS2関数エラーだった場合 |
|
|
FOCAS2関数名 |
エラーが発生したときに呼び出していたFOCAS2関数名。 |
エラーコード |
実行したFOCAS2関数が返却したエラーコード。 |
|
PMCアドレスタイプ |
PMC領域の監視・データ設定によってエラーが発生した場合のみ保持する。 エラーが発生したときに読み込み・書き込みを行おうとしたPMC領域のアドレスタイプ。 |
|
PMC領域開始アドレス |
PMC領域の監視・データ設定によってエラーが発生した場合のみ保持。 エラーが発生したときに読み込み・書き込みを行おうとしたPMC領域の開始アドレス。 |
|
PMC領域終了アドレス |
PMC領域の監視・データ設定によってエラーが発生した場合のみ保持する。 エラーが発生したときに読み込み・書き込みを行おうとしたPMC領域の終了アドレス。 |
|
その他エラー情報 |
エラー種別がその他エラー情報だった場合 |
|
|
エラーコード |
以下のエラーコード一覧表を参照する。 |
表3 エラー項目一覧
エラーコード |
|
1 |
PMC領域監視設定で指定された更新時間よりも、PMC領域のデータ取得処理に時間がかかっています。 |
表4 その他エラー エラーコード一覧
(1) さまざまな解像度のモニタに対応するため、メイン画面はリサイズ可能とする。
(2) 黒枠は高さ固定とし、このエリア内のコントロールは画面のサイズに関係なく左上に表示する。
(3) 緑枠は高さ固定とし、幅はウィンドウ幅に合わせて調整可能にする。
(4) 赤枠は黒枠・緑枠以外の余った領域をすべて使って表示。@は幅固定とし、Aは余った領域すべてを使って表示する。
(5) 監視領域追加画面とPMC領域データ設定ダイアログはサイズ固定とし、リサイズできないようにする。