<実施の形態1>
実施の形態1では、プログラム部品を定義して再利用する計測監視制御プログラムの作成方法の一例として、ラダープログラムの作成方法について説明する。
図1は、実施の形態1に係るプログラム作成支援装置のハードウェア構成を示す図である。プログラム作成支援装置1は、マイクロプロセッサ2、表示部3、入力部4、保存部5から構成される。計測監視制御対象である設備の仕様記述および計測監視制御プログラム(以下「プログラム」)は、保存部5にファイルとして保持される。表示部3は、プログラム作成支援装置1の各種情報を表示することができる。例えばユーザが入力部4を用いて設備の仕様をプログラム作成支援装置1に入力する際には、その入力項目が表示部3に表示される。また後述する各種の操作画面は、この表示部3に表示される。マイクロプロセッサ2は、ユーザが入力して保存部5に保存されている設備の仕様に基づき、プログラムの生成処理を実行する。
図2は、プログラム作成支援装置1の機能ブロック構成(ソフトウェアブロック構成)を示した図である。図2に示す各機能ブロックは、マイクロプロセッサ2が実行するソフトウェアにより、図1に示した各ハードウェアが制御されることによって実現される。
プログラム作成支援装置1は、ユーザの操作(プログラム編集)に基づいてプログラムの編集を行うプログラム編集部6と、ユーザの操作(プログラム部品定義入力)に基づいて再利用可能なプログラム部品10を定義するプログラム部品定義部12と、プログラム部品定義部12によって定義されたプログラム部品10を格納するプログラム部品保持部11とを備える。本発明においてプログラム部品10は、再利用の際に設定される再利用パラメータ14を含んでおり、プログラム部品10はその設定内容に応じて様々な形態をとることができる(詳細は後述する)。
本実施の形態のプログラム編集部6は、編集後のプログラム8を出力する他、必要に応じてそれに関連する付属情報ファイル9(例えばデバイスの内容を説明するコメント等)も出力することができる。
なお、図2ではプログラム部品定義部12がプログラム作成支援装置1に内蔵された構成を示したが、プログラム部品定義部12は、プログラム作成支援装置1とは別の装置として規定されていてもよい。
以下、本実施の形態のプログラム作成支援装置1の動作、およびプログラム作成支援装置1を用いたプログラム作成方法について説明する。ここではプログラム作成支援装置1がラダープログラムを生成する例を示す。
図3は、ユーザがプログラム部品定義部12を用いてプログラム部品10を定義する際の操作画面表示(プログラム部品定義画面)の例である。ここではラダープログラムでよく使用される自己保持処理のプログラム部品を定義するときの例を示している。
図3に示すプログラム部品定義画面(ラダー部品定義画面)は、上から順に、ラダーダイアグラムの作成に使用するアイコンが表示されたアイコン表示領域と、それらのアイコンを操作してプログラム部品のラダーダイアグラムを編集するためのプログラム編集領域と、プログラム部品の再利用パラメータを定義するためのパラメータ定義領域と、作成したプログラム部品の名前を入力するためのプログラム部品名入力領域とが配設された構成となっている。
アイコン表示領域には、接点(a接点「-| |-」およびb接点「-|/|-」)、命令(「-[ ]-」)、コイル(「-( )-」)といった一般的なプログラム要素のアイコンに加え、それらに「*」や「+」の記号が付されたアイコンが設けられている。「*」や「+」の記号が付されたアイコンは、1以上のプログラム要素から成る集合体(コレクション)に対応するものであり、「*」が付されたアイコンは、図4のようにプログラム要素がAND結合したリレー列に対応し、「+」が付されたアイコンは、図5のようにプログラム要素がOR結合したリレー列に対応している。なお、ラダーダイアグラムでは、コイルはAND結合しないので、「*」が付与されたコイルのアイコンは無い。
プログラム編集領域は、上記の各種アイコンを操作してラダーダイアグラムを編集できる領域であり、従来のラダープログラム作成支援装置が備えるプログラム編集画面(ラダー編集画面)と同様の構成でよい。
パラメータ定義領域は、プログラム部品を再利用する際に設定すべき再利用パラメータを定義するための領域であり、プログラム部品の作成(定義)を行う際、ユーザにより所定の事項が入力される。
図6は、本実施の形態に係るプログラム部品の作成手順を示すフローチャートである。同図に基づき、プログラム部品の作成手順を説明する。ここでは図3のように、自己保持処理のプログラム部品を作成する場合を例示する。
まず、プログラム部品の各要素に付与する再利用パラメータを、当該プログラム部品の記述に用いる部品変数として定義する(S11)。これは、ユーザがプログラム部品定義画面のパラメータ定義領域で再利用パラメータを設定することにより行われる。図3の例では、No.1の再利用パラメータとして部品変数VB1が定義され、No.2の再利用パラメータとして部品変数VB2が定義され、No.3の再利用パラメータとして部品変数VB3が定義されている。
なおプログラム部品の再利用パラメータとして、プログラムコメントとジャンプ用ラベル(プログラムポインタ)を用意してもよい。それらは各プログラム部品が必ず有する再利用パラメータとして規定されていてもよい。
再利用パラメータとしてのプログラムコメントには、プログラム部品を再利用してプログラムを生成する際に、生成されるプログラムに関するコメントの文字列が設定される。その用途としては、例えば、生成するプログラムの冒頭に、「開始」の文字列を先頭に付したプログラムコメントを記述し、同プログラムの末尾に、「終了」の文字列を先頭に付したプログラムコメントを記述するなどして、その間のプログラムの内容を示すことなどが挙げられる。ラダープログラムではプログラムコメントはステートメントとして扱われ、プログラムコメントとして「主軸正転」が設定された場合、生成したプログラムにおいて図7や図8のようにコメントが記述される。図7はラダーダイアグラム形式のプログラムであり、図8インストラクションリスト形式のプログラムである。
なお、プログラム部品に、プログラムコメントの再利用パラメータが定義されていたとしても、必要なければ文字列を設定しなくてもよい。その場合は、プログラムコメントを有さないプログラムが生成される。
再利用パラメータとしてのジャンプ用ラベル(プログラムポインタ)には、当該プログラム部品の再利用により生成されたプログラムに対し他のプログラムからのジャンプ(コール)処理が行われるときに、当該プログラムの位置を表すラベルが設定される。ラダープログラムの場合、プログラムポインタはデバイスの一種として扱われる。プログラムポインタとして「P3」が設置された場合、生成されたプログラムにおいて図7(ラダーダイアグラム形式)や図8(インストラクションリスト形式)のようにプログラムポインタが記述される。またプログラムポインタを有するプログラムの最後に、ジャンプ元に戻るためのリターン(RET)命令を付すようにしてもよい。
なお、プログラム部品にジャンプ用ラベルの再利用パラメータが設定されていたとしても、必要なければ何も設定しなくてよい。その場合は、ジャンプ用ラベルを有さないプログラムが生成される(ラダープログラムでは、プログラムポインタとRET命令の無いプログラムが生成される)。
次に、プログラム編集領域にプログラム部品の構成を記述する(S12)。ここではラダーダイアグラムの記述を行う。これはユーザが、プログラム部品定義画面のアイコンを操作することにより行われる。
通常のプログラム作成においては、接点等の各要素のパラメータとしてデバイスまたは変数(ラベル)を付与するが、プログラム部品の各要素に対しては、パラメータとしてデバイスまたは変数(ラベル)、あるいは再利用パラメータとして定義した部品変数を付与する。部品変数が付与された要素には、プログラム部品を再利用する際に、ユーザがそれに適用するデバイスまたは変数(ラベル)を指定する必要がある。デバイスまたは変数(ラベル)が付与された要素は、プログラム部品を再利用する際、そのデバイスまたは変数(ラベル)がそのまま適用される。
「*」または「+」が付された要素(コレクション)は、プログラム部品を再利用する際に設定するパラメータの数により、それに含まれる接点の数を指定できる。プログラム部品の作成段階では、コレクションに対してはデバイスまたは変数(ラベル)を付与せずに部品変数を1つ付与する。
自己保持処理のラダープログラムが有する自己保持用リレーは1つなので、自己保持用リレーには通常のa接点とコイルが用いられる。一方、保持指令条件(ON条件)リレーや、保持キャンセル条件(OFF条件)リレーは、さまざまな構造が考えられる。図3の例では、排他的選択処理やMコード機能処理のプログラムの作成に再利用できる自己保持処理のプログラム部品を定義することを想定し、ON条件リレーおよびOFF条件リレーとして、1以上の接点がAND結合したリレー列(「*」が付された要素)を用いている。即ち、ON条件リレー列として「*」が付されたa接点を用い、OFF条件リレー列として「*」が付されたb接点を用いている。
またON条件リレー列にはNo.1の再利用パラメータとして定義された部品変数VB1が付与され、OFF条件リレー列にはNo.2の再利用パラメータとして定義された部品変数VB2が付与され、自己保持用リレーにはNo.3の再利用パラメータとして定義された部品変数VB3が付与されている。このことは、プログラム部品定義画面のプログラム編集領域の表示とパラメータ定義領域の表示との対応から判断できるが、ユーザは、その対応関係が一目で分かるようにパラメータ定義領域の「説明文」の欄に、図3の如く再利用パラメータが割り当てられた要素を説明するコメント(文字列)を入力することができる。
図3のように、パラメータ定義領域において、「*」が付されたリレー列に付与されたNo.1およびNo.2の再利用パラメータの「列挙」の欄には「*」の記号が表示される。また図3には示されていないが、「+」が付されたリレー列に付与された再利用パラメータの「列挙」の欄には「+」の記号が表示される。これによりその再利用パラメータがコレクションに付与されていることが明示される。なお自己保持用リレーは1つであるので、No.3の再利用パラメータの「列挙」の欄は空白となっている。
プログラム部品のラダーダイアグラムを記述した後、当該プログラム部品に名称を与える(S13)。これは、ユーザがプログラム部品定義画面のプログラム部品名入力領域に文字列を入力することにより行われる。図3の例では、作成したプログラム部品に「自己保持処理」という名称を与えている。以上により、プログラム部品の作成が完了する。
なお、上の説明では、先に再利用パラメータの定義を行い(S11)、その後それを用いてプログラム部品のプログラム(ラダーダイアグラム)を記述する(S12)という手順であったが、その順番は逆でもよい。
即ち図9のフローチャートのように、先に未定義の変数を用いてプログラム部品のプログラム(ラダーダイアグラム)を記述し(S21)、その後、記述したプログラムから未定義の変数を抽出して(S22)、抽出した未定義の変数を再利用パラメータ(部品変数)として定義し(S23)、プログラム部品の名称を付与する(S24)といった手順でもよい。未定義の変数の抽出および再利用パラメータ(部品変数)としての定義づけは、ユーザがパラメータ定義領域に所定の事項を入力することによって行ってもよいし、プログラム部品定義部12が未定義の変数を検索することによって行ってもよい。再利用パラメータと記述したプログラムで用いる部品変数との対応が矛盾しなければ、その方法は任意のものでよい。
次に、プログラム作成支援装置1にプログラムを自動生成させる手順を説明する。図10は、プログラム作成支援装置1にプログラム部品を再利用してプログラムを自動生成させる際の操作画面表示(プログラム部品再利用画面)の一例を示している。同図では、図3のように定義された自己保持処理プログラム部品を再利用するケースを示している。
このプログラム部品再利用画面は、再利用するプログラム部品の名称が表示されるプログラム部品名表示領域と、再利用パラメータに適用するデバイスや変数(ラベル)などのパラメータを入力するためのパラメータ適用領域とを備えている。なお、プログラム部品再利用画面には、図32の如く、選択されたプログラム部品の構造およびその各要素に付与された再利用パラメータのナンバー(No.)が表示されるプログラム表示領域を設けてもよい。その場合ユーザは、再利用しようとするプログラム部品の構造、並びに、各要素と再利用パラメータとの対応関係を容易に把握できるようになる。
プログラム部品名表示領域は、再利用するプログラム部品の名称を表示するだけでなく、既に定義済みの複数のプログラム部品から再利用するものを選択する選択メニューとしての機能を持っている。
プログラム部品再利用画面において、パラメータ適用領域に表示される再利用パラメータの「No.」、「列挙」、「説明文」の欄には、図3のプログラム部品定義画面のパラメータ定義領域で定義した内容が表示される。
ユーザは、パラメータ適用領域において、再利用パラメータに適用するパラメータを入力する。このとき「列挙」の欄に「*」あるいは「+」が表示されている再利用パラメータには、パラメータを2つ以上列挙して入力できる。また、再利用パラメータとしてのプログラムコメントには、生成するプログラムについてのコメント(文字列)を入力できる。
図10の例では、プログラムコメントに「主軸正転」、ジャンプ用ラベルに「P3」、No.1の再利用パラメータ(VB1)に「M3」、No.2の再利用パラメータ(VB2)に「M4,M19」、No.3の再利用パラメータ(VB3)に「Y1898」を適用する例を示している。
この場合、プログラム作成支援装置1は、図3に示したラダーダイアグラムにおいてON条件リレー列VB1を1つのa接点M3に置き換え、OFF条件リレー列VB2をAND結合した2つのb接点M4,M19に置き換え、自己保持用リレーVB3をリレーVB3に置き換え、それにプログラムポインタP3、リターン命令(RET)、プログラムコメント「開始主軸正転」および「終了主軸正転」を付加して得られるラダープログラム、即ち図7に示したラダーダイアグラムを生成する。あるいは、それをインストラクションリスト形式で記述した図8に示したプログラムを生成するようにしてもよい(図7のラダーダイアグラムと、図8のインストラクションリストは等価である)。
プログラム作成支援装置1が行う、プログラム部品を再利用したプログラムの生成方法について説明する。図11は、当該生成方法のフローチャートである。ここでは図7に示したラダープログラムを生成する場合を例に挙げる。
図10の如く、ユーザによりプログラム部品再利用画面に必要な情報が入力され、プログラムの生成が命じられると、プログラム作成支援装置1は、まず再利用パラメータのプログラムコメントに文字列が設定されているか否かを調べる(S31)。プログラムコメントに文字列が設定されていれば、その先頭に「開始」を付与したプログラムコメントを出力する(S32)。図10の場合、プログラムコメントに「主軸正転」の文字列が設定されているため、それに「開始」を付与した「開始主軸正転」がプログラムコメントとして出力される。
続いて、ジャンプ用ラベル(プログラムポインタ)の再利用パラメータとして何らかのラベルが設定されているかを調べ(S33)、設定されていれば、それに応じたジャンプ用ラベルを出力する。図10の場合、ラベルP3が設定されているため、「P3」がジャンプ用ラベルとして出力される。
次に、プログラム部品のプログラム構造の順に、プログラムを構成する要素を抽出し(S35)、抽出された要素のそれぞれに対し、以下の処理が行われる。
まず、抽出された要素に再利用パラメータが定義されているか否かを確認する(S36)。再利用パラメータが設定されていれば、当該要素が「*」が付されたもの(AND列)かどうか調べ(S37)、AND列であれば、図10のパラメータ適用領域に列挙されたパラメータを適用した要素をAND結合して出力する。
一方、再利用パラメータが設定された当該要素が「+」が付されたもの(OR列)であれば(S39)、再利用パラメータに列挙されたパラメータを適用した要素をOR結合して出力する(S40)。
再利用パラメータが設定された当該要素に「*」も「+」も付されていなければ、再利用パラメータに設定されたパラメータを適用した要素を出力する(S41)。
また当該要素が、再利用パラメータが設定されていないもの、つまり部品変数ではなくデバイスや変数(ラベル)が付与されたものである場合には、そのデバイスや変数(ラベル)がそのまま出力される(S42)。
以上の工程は、再利用するプログラム部品の全ての要素について行われる(S43)。例えば、図3で定義したプログラム部品における1番目の要素は、a接点のAND列「-| |-*」であり、これにはNo.1の再利用パラメータVB1が定義されている。図10の例では、No.1の再利用パラメータにM3のみが設定されており、この場合、1つのa接点M3が出力される(S38)。
2番目の要素は、1番目の要素(VB1)にOR結合し、No.3の再利用パラメータVB3が定義された、「*」も「+」も付されていないa接点である。No.3の再利用パラメータにはY1898が設定されているため、先に出力されたa接点M3にOR結合する位置にa接点Y1898が出力される(S41)。
3番目の要素は、1番目の要素(VB1)および2番目の要素(VB3)にAND結合し、No.2の再利用パラメータVB2が定義されたb接点のAND列(-|/|-*)である。No.2の再利用パラメータにはM4,M19が列挙されているため、先に出力されたa接点M3,Y1898とAND結合する位置に、b接点M4,M19をAND結合させた要素が出力される(S38)。
最後(第4番目)の要素は、3番目の要素(VB3)にAND結合し、No.3の再利用パラメータVB3が定義されたコイル(-( )-)である。No.3の再利用パラメータにはY1898が設定されているため、先に出力されたb接点M4,M19にAND結合する位置にコイルY1898が出力される(S41)。
プログラム部品の全ての要素について以上の工程が完了すると(S43)、もう一度再利用パラメータとしてのジャンプ用ラベル(プログラムポインタ)に、特定のラベルが設定されているかを確認し(S44)、設定されていれば、ジャンプの呼び出し元へ戻るリターン命令を出力する(S45)。図10の例では、以上の第1〜第4番目の要素にOR結合する位置に、リターン命令(-[RET]-)が出力される。
そして、もう一度再利用パラメータのプログラムコメントに文字列が設定されているか否かを確認し(S46)、文字列が設定されていれば、その先頭に「終了」を付与したプログラムコメントを出力する(S47)。図10の場合、「主軸正転」に「終了」を付与した「終了主軸正転」がプログラムコメントとして出力される。
以上の工程により、プログラム部品定義画面(図3)で定義したプログラム部品の再利用パラメータに対し、プログラム部品再利用画面(図10)で設定したパラメータを適用して得られるプログラム(図7のラダーダイアグラムまたは図8のインストラクションリスト)が自動的に作成される。
ここで図7のラダープログラムの動作について説明する。初期状態ではデバイスM3、M4、M19、Y1898は全てOFF状態である。自己保持の保持指令条件(ON条件)リレーであるa接点M3がONとなれば、a接点Y1898がONする。その後は、a接点M3がOFFとなってもa接点Y1898のONは保持される。a接点Y1898のON状態は、保持キャンセル条件(OFF条件)リレーであるb接点M4,M19のいずれかがONするまで継続される。b接点M4,M19のいずれかがONするとa接点Y1898はOFFに戻る(すなわち自己保持がキャンセルされる)。
本実施の形態のプログラム作成支援装置1は、プログラム部品再利用画面で設定する再利用パラメータの内容を変更することにより、1つのプログラム部品から様々な形態のプログラムを生成することができる。例えば、上記と同様に図3の如く定義した自己保持処理のプログラム部品を再利用する際、プログラム部品再利用画面で図12のように再利用パラメータの内容を設定すれば、図13に示すラダープログラムを生成することができる。
図13のラダープログラムの動作について説明する。初期状態ではデバイスM19、XC18、M3、M4、Y189Eは全てOFF状態である。ON条件リレーであるa接点M19,XC18の両方がONとなれば、a接点Y189EがONする。その後は、a接点M19,XC18がOFFとなってもa接点Y189EのONは保持される。a接点Y189EのON状態は、OFF条件リレーであるb接点M3,M4のいずれかがONするまで継続される。b接点M3,M4のいずれかがONするとa接点Y189EはOFFに戻る(すなわち自己保持がキャンセルされる)。
上記したように、プログラム作成支援装置1は、作成されたプログラム8と共に、それに関連する付属情報ファイル9を出力できる。付属情報ファイル9には、例えば、生成されたプログラムで再利用されたデバイスまたは変数(ラベル)(プログラム部品で再利用パラメータが定義されたデバイスまたは変数(ラベル))について、それらの内容を説明するコメントが記述される。
付属情報ファイルは、ユーザがプログラム作成支援装置1を操作して作成してもよいが、自動生成されるようにしてもよい。図14は、生成されたプログラムで再利用されたデバイスまたは変数(ラベル)の内容を説明するコメントが記述された付属情報ファイルの自動作成方法を示すフローチャートである。
図14に基づき、付属情報ファイルの自動作成方法を説明する。プログラム作成支援装置1は、プログラム部品を再利用してプログラムを生成すると、その中から再利用パラメータに適用されたパラメータ(図10の例では「主軸正転」,P3,M3,M4,M19,Y1898)を順に抽出し(S51)、当該パラメータがデバイスまたは変数(ラベル)かどうかを確認する(S52)。当該パラメータがデバイス(M3,M4,M19,Y1898)または変数(ラベル)であれば、当該プログラム部品名と当該パラメータに対応する「説明文」の文字列を結合し、それを当該デバイスや変数(ラベル)のコメントとして出力する(S53)。これらの工程は、再利用パラメータに適用されたパラメータの全てが抽出されるまで繰り返される(S54)。以上の工程により付属情報ファイルが自動生成される。
例えば図10のように再利用パラメータが設定された場合、プログラム作成支援装置1は、図7または図8のプログラムと共に、図15のような付属情報ファイルを生成することができる。
本実施の形態に係るプログラム部品は、再利用する際に、再利用パラメータに複数のパラメータ(デバイスや変数(ラベル)、数値等)を列挙して適用することにより、複数の要素が所定の形態(AND結合やOR結合)で生成されるプログラム要素(リレー列)を含むことを特徴としている。当該プログラム部品は、再利用パラメータに適用するパラメータの列挙数に応じて、様々な形態を取ることが可能である。つまり1つのプログラム要素から複数の形態のプログラムを生成することが可能である。そして本実施の形態のプログラム作成支援装置1は、そのようなプログラム部品を定義可能なプログラム部品定義部12を備えることを特徴としている。
従来のプログラム作成支援装置では、異なる形態のプログラム、例えば図7のプログラムと図13のプログラムを、同一のプログラム部品を用いて生成することができなかったが、本発明ではそれが可能となる。これにより、プログラム部品を応用可能な範囲が広くなり、計測監視制御対象である設備の仕様記述に、より直接的に合致するようにプログラム部品を定義することが可能となる。
よって、仕様記述に合致するプログラムを作成するための、プログラム部品の選定およびそれらの組み合わせに関する設計の労力を軽減し、仕様に記述された機能を過不足なく備えるプログラムの作成の労力を大幅に軽減できる。またプログラム部品を再利用して生成したプログラムの付属情報ファイルも自動生成することができ、この付属情報の存在によって、生成したプログラムの理解が容易となり、生成したプログラムの理解に係る労力が軽減される。
<実施の形態2>
実施の形態1では、単独でプログラム(プログラム部品POU)として成り立つ構造のプログラム部品について説明した。ここでは、単独ではプログラム(プログラム部品POU)として成立しないが、プログラム部品の要素と成り得るプログラム部品(以下「プログラム要素部品」)を用いる実施形態を示す。
例えば接点や命令、コイルは、それ以上分解できない最も基本となるプログラム要素部品と成り得る。接点、命令やコイルは、プログラムおよびプログラム部品の構成要素となり得るとともに、プログラム要素部品の構成要素でもある。同様に、プログラム要素部品も、プログラムおよびプログラム部品の構成要素にも、他のプログラム要素部品の構成要素にも成り得る。
以下、プログラム要素部品の定義方法と再利用方法について説明する。図16は、実施の形態2に係るプログラム作成支援装置1の機能ブロック構成(ソフトウェアブロック構成)を示す図である。当該プログラム作成支援装置1は、実施の形態1(図2)の構成に対し、プログラム要素部品17を定義するためのプログラム要素部品定義部15をさらに備えている。定義されたプログラム要素部品17は、プログラム部品保持部11に保存される。プログラム要素部品17は、それを再利用する際に設定される再利用パラメータ18を有している。
なお図16では、プログラム部品定義部12およびプログラム要素部品定義部15が、プログラム作成支援装置1に内蔵された構成を示したが、それらは外部装置であってもよい。
図17は、ユーザがプログラム要素部品定義部15を用いてプログラム要素部品17を定義する際の、操作画面表示(プログラム要素部品定義画面)の一例を示す図である。ここでは、ラダーダイアグラム形式で記述されたプログラム要素部品(AND条件処理プログラム要素部品)を定義する場合の例を示している。
プログラム要素部品定義画面(ラダー要素部品定義画面)は、図3で示したプログラム部品定義画面(ラダー部品定義画面)に類似した構成を有している。即ち図17のように、プログラム要素部品定義画面は、上から順に、ラダーダイアグラムの作成に使用するアイコンが表示されたアイコン表示領域と、それらのアイコンを操作してプログラム要素部品のラダーダイアグラムを編集するためのプログラム編集領域と、プログラム要素部品の再利用パラメータを定義するためのパラメータ定義領域と、作成したプログラム要素部品の名前を入力するためのプログラム要素部品名入力領域とが配設された構成となっている。
アイコン表示領域には、図3で示したプログラム部品定義画面が備えるアイコンに加え、プログラム要素部品(-□-)及びそれに「*」あるいは「+」が付されたアイコンが配置されている。「*」の記号はAND結合したプログラム要素部品の列を示し、「+」の記号はOR結合したプログラム要素部品の列を示している。
プログラム編集領域は、上記の各種アイコンを操作してラダーダイアグラムを編集できる領域であり、従来のラダープログラム作成支援装置が備えるプログラム編集画面(ラダー編集画面)と同様の構成でよい。但し、プログラム要素部品はそれだけでプログラムとして成立しないので、図3に示したプログラム編集領域とは異なり、左母線と右母線がなく、ラダーダイアグラムを構成する1つの要素の内部構造を編集するような形態となっている。
パラメータ定義領域は、プログラム要素部品を再利用する際に設定すべき再利用パラメータを定義するための領域であり、ユーザによって所定の事項が入力される。
プログラム要素部品の定義の手順は、図6または図9で示したプログラム部品の定義手順と同様であるので、ここでの説明は省略する。図17には、プログラム要素部品を、「*」が付与されたa接点(a接点がAND結合したリレー列)1つから成る構成とした例を示している。またそのa接点のリレー列にはNo.1の再利用パラメータとして定義された部品変数VB1が付与され、当該部品変数VB1には「AND条件リレー列」なる説明文が付されている。そして当該プログラム要素部品に対し、「AND条件処理」という名称が与えられている。
なお、プログラム要素部品定義画面において、プログラム要素部品のアイコン(「-□-」、「-□-+」および「-□-*」)を用いて他のプログラム要素部品を含むラダーダイアグラムを構成すれば、他のプログラム要素部品を再利用するプログラム要素部品を定義することもできる。
図18は、本実施の形態に係るプログラム作成支援装置1のプログラム部品定義画面の例である。図3に示したものと同様に、上から順に、アイコン表示領域、プログラム編集領域、パラメータ定義領域、プログラム部品名入力領域が配設された構成となっている。
アイコン表示領域には、図3で示したプログラム部品定義画面が備えるアイコンに加え、プログラム要素部品(-□-)及びそれに「*」あるいは「+」が付されたアイコンが配置されている。ユーザは、このアイコンを操作することにより、プログラム要素部品を再利用したプログラム部品を作成することができる。
パラメータ定義領域は、プログラム部品の作成を行う際にユーザが所定の事項を入力する領域である。図3に示した欄に加え、プログラム要素部品を含むプログラム部品を定義する場合に、そのプログラム要素部品の種類を特定するための「要素部品種別」の欄が設けられている。ユーザは、プログラム要素部品を用いてプログラム部品を定義するとき、「要素部品種別」の欄を操作して、既に定義済みのプログラム要素部品の中から使用するものを選択して指定する。
図18では、プログラム編集領域において、OR結合したプログラム要素部品の列(-□-+)と、コイル(-( )-)とがAND結合して成るプログラム部品が定義されている。そして、上記のプログラム要素部品の列に、No.1の再利用パラメータとして定義された部品変数VE1を付与し、且つ、パラメータ定義領域において、部品変数VE1のプログラム要素部品の種別として「AND条件処理」(つまり図17で定義したプログラム要素部品)を指定している。またここではユーザにより、それに対して「OR条件(AND条件処理プログラム要素部品列)」という説明文が設定されている。
上記のコイルには、再利用パラメータとして定義された部品変数ではなく、Mコード完了を意味する出力デバイスであるYC1Eを付与している。この場合、当該プログラム部品が再利用されるときは、常にデバイスYC1Eが記述されることになる。なお、プログラム部品に用いるプログラム要素部品には、デバイスや変数(ラベル)を付与することは許されず、必ず再利用パラメータの部品変数を付与する必要がある。
図18では、プログラム部品名入力領域を用いて、当該プログラム部品に対し「Mコード完了処理」なる名称を付与している。
プログラム部品の定義に用いたプログラム要素部品に対しては、プログラム要素部品の種別を列挙して指定することも可能である。この場合は、列挙された種別のうち、いかなるプログラム要素部品を再利用してもよいプログラム部品が定義される。
また、プログラム部品の定義に用いたプログラム要素部品(に付与した部品変数)に対し、プログラム要素部品の種別を指定しないことも可能である。この場合、プログラム要素部品の種別に制約がなく、いかなるプログラム要素部品を再利用してもよいプログラム部品が定義される。プログラム要素部品の種別が指定されていない部品変数であり、且つプログラム要素部品に付与されているものに対しては、プログラム部品を再利用する際、プログラム要素部品を適用する必要がある。また、プログラム要素部品の種別が指定されていない部品変数であり、接点や命令やコイルのアイコンに付与されているものに対しては、プログラム部品を再利用する際、実施の形態1のようにデバイスや変数(ラベル)を適用する必要がある。
次に、プログラム作成支援装置1に、プログラム要素部品を含むプログラム部品を用いてプログラムを自動生成させる手順を説明する。図19は、プログラム作成支援装置1にプログラム部品を再利用してプログラムを自動生成させる際の操作画面表示(プログラム部品再利用画面)の一例を示している。同図では、図18のように定義されたMコード完了処理プログラム部品を再利用するケースを示している。
実施の形態2のプログラム部品再利用画面(図19)は、実施の形態1のプログラム部品再利用画面(図10)に対し、プログラム部品に含まれているプログラム要素部品の種別が表示される「要素部品種別」の欄と、「行追加」および「行削除」のボタンが追加されたものである。
図18に示したMコード完了処理プログラム部品には、種別が「AND条件処理」のプログラム要素部品が含まれているため、図19の例ではNo.1の再利用パラメータの「種別」の欄に「AND条件処理」が表示され、それに対応する説明文「OR条件(AND条件処理プログラム要素部品列)」が「説明文」の欄に表示される。
なお、プログラム部品が、種別未指定のプログラム要素部品を含んでいる場合や、複数の種別が指定されたプログラム要素部品を含んでいる場合には、プログラム部品再利用画面(図19)においてその種別を指定・選択がユーザにより行われる。
プログラム要素部品には再利用される要素が複数含まれる場合があるため、図19のような画面だけでは再利用パラメータの設定が困難である。そのため再利用するプログラム部品がプログラム要素部品を含む場合には、プログラム部品再利用画面においてプログラム要素部品の「再利用パラメータ」の欄には、当該プログラム要素部品の再利用パラメータを設定するための別画面を展開するためのボタン(以下「展開ボタン」)が表示される。ユーザは、この展開ボタンを押すことにより、プログラム要素部品についての再利用パラメータ設定を行う画面(プログラム要素部品再利用画面)を開くことができる。
またプログラム部品がプログラム要素部品のコレクションを含み、その再利用パラメータに複数のパラメータを適用したい場合、1つのプログラム要素部品再利用画面ではその設定が困難である。そこでプログラム要素部品のコレクションを含んでいる場合には、図19の如く、プログラム部品再利用画面に「行追加」「行削除」のボタンが表示される。行追加ボタンは、コレクションを構成するプログラム要素部品の数を増やすものであり、これを押すことにより、パラメータ適用領域において、プログラム要素部品の再利用パラメータを設定するための欄が1行増える(展開ボタンが1つ増える)。行削除ボタンを押すとそれを1行削除できる。
図19のプログラム部品再利用画面を参照すると、Mコード完了処理プログラム部品(図18)は、AND条件処理プログラム要素部品がOR結合するコレクション(「列挙」の欄に「+」が表示される)を含んでおり、当該コレクションはNo.1の再利用パラメータに対応付けされている。ユーザは、作成するプログラムにおいてAND条件処理プログラム要素部品を複数個OR結合させたい場合は、行追加ボタンを押してパラメータ適用領域に行を追加する。図19では、2つのAND条件処理プログラム要素部品をOR結合させる場合の例が示されている。
ユーザはその後、各要素の再利用パラメータの設定を行うことになるが、プログラム要素部品に対する再利用パラメータの設定は次のように行われる。
例えばOR結合させる2つのAND条件処理プログラム要素部品のうちの1つ目(「列挙」の欄に「1」が表示)の展開ボタンを押すと、図20のようなプログラム要素部品再利用画面が開く。プログラム要素部品再利用画面の構成は、プログラム部品再利用画面(図19)と同様である。ユーザは、この画面のパラメータ適用領域に設定するパラメータを入力する。図20では、1つ目のAND条件処理プログラム要素部品の再利用パラメータにデバイスM3を適用した例である。
なお、再利用するプログラム要素部品が別のプログラム要素部品を有する場合は、「要素部品種別」の欄にその種別が表示される(種別が設定されていない、あるいは複数の種別が設定されている場合は、その欄を用いて所望の種別を選択する)。さらに「再利用パラメータ」の欄にも展開ボタンが表示され、それによって別のプログラム要素部品の再利用パラメータを設定できる。図20では、AND条件処理プログラム要素部品はプログラム要素部品を含まないため、「要素部品種別」の欄は空欄であり、展開ボタンも表示されていない。
またプログラム部品再利用画面において、2つ目のAND条件処理プログラム要素部品(「列挙」の欄に「2」が表示)の展開ボタンを押すと、図20と同様の図21のようなプログラム要素部品再利用画面が開く。図21では、1つ目のAND条件処理プログラム要素部品の再利用パラメータにデバイスM3を適用した例である。図21では、2つ目のAND条件処理プログラム要素部品の再利用パラメータにデバイスM19,X188Eを列挙して適用した例である。
図19、図20および図21のようにそれぞれの再利用パラメータを設定し、プログラム作成支援装置1にプログラムを生成させた結果を図22に示す。この場合、Mコード完了処理プログラム部品(図18)において、プログラム要素部品VE1の部分が、図20で設定したAND条件処理プログラム要素部品M3と、図21で設定したAND条件処理プログラム要素部品M19,X188EとのOR結合に置き換えられたプログラムが、プログラム作成支援装置1によって生成される。
本実施の形態に係るプログラム部品は、再利用する際に、再利用パラメータに複数のパラメータ(デバイスや変数(ラベル)、数値等)を列挙して適用することにより、複数のプログラム要素部品が所定の形態(AND結合やOR結合)で生成されるプログラム要素部品の列を含むことを特徴としている。当該プログラム部品では、プログラム要素部品に適用する再利用パラメータの数に応じて、再利用されるプログラム要素部品の個数が変わり、且つ、プログラム要素部品自体もそれに適用されるパラメータに応じて様々な形態を取ることが可能である。従って実施の形態2では、1つのプログラム要素から、実施の形態1よりもさらに多くの形態のプログラムを生成することが可能である。そして本実施の形態のプログラム作成支援装置1は、そのようなプログラム部品を定義可能なプログラム部品定義部12を備えることを特徴としている。
よって、仕様記述に合致するプログラムを作成するための、プログラム部品の選定およびそれらの組み合わせに関する設計の労力を軽減し、仕様に記述された機能を過不足なく備えるプログラムの作成の労力を大幅に軽減できる。またプログラム部品を再利用して生成したプログラムの付属情報ファイルも自動生成することができ、この付属情報の存在によって、生成したプログラムの理解が容易となり、生成したプログラムの理解に係る労力が軽減される。
<実施の形態3>
実施の形態3では、特定のプログラム部品が複数個結合して成る、より大きなプログラム部品(以下「プログラム階層部品」)を用いる実施形態を示す。
図23は、実施の形態3に係るプログラム作成支援装置1の機能ブロック構成(ソフトウェアブロック構成)を示す図である。当該プログラム作成支援装置1は、実施の形態2(図16)の構成に対し、プログラム階層部品21を定義するためのプログラム階層部品定義部19をさらに備えている。定義されたプログラム階層部品21は、プログラム部品保持部11に保存される。プログラム階層部品21は、それを再利用する際に設定される再利用パラメータ22を備えている。
なお図23では、プログラム部品定義部12、プログラム要素部品定義部15およびプログラム階層部品定義部19が、プログラム作成支援装置1に内蔵された構成を示したが、それらは外部装置であってもよい。
図24は、プログラム階層部品19の定義の手順を示すフローチャートである。また図25および図26は、プログラム階層部品定義部19を用いてプログラム階層部品を定義する際の操作画面表示(プログラム階層部品定義画面)の例である。ここでは、ラダーダイアグラム形式で、排他的選択数値設定の処理を行うプログラム階層部品を定義する画面の例を示している。
このプログラム階層部品定義画面(ラダー階層部品定義画面)は、上から順に、作成するプログラム階層部品に含ませるプログラム部品を設定するためのプログラム部品設定領域、プログラム階層部品の再利用パラメータを定義するためのパラメータ定義領域、およびプログラム階層部品の名称を入力するプログラム階層部品名入力領域が配設された構成となっている。プログラム部品設定領域はさらに、プログラム階層部品におけるプログラム部品の配列を設定するためのプログラム部品順序設定領域と、プログラム階層部品を構成する各プログラム部品の再利用パラメータに所定のパラメータを適用するためのパラメータ適用領域とから構成されている。
以下、図3に示した自己保持処理プログラム部品と、図27のように定義された数値設定処理プログラム部品とから構成される排他的選択数値設定プログラム階層部品を例に挙げて、プログラム階層部品の定義の手順を説明する。
まず、プログラム階層部品を再利用する際に設定する再利用パラメータを、プログラム階層部品の記述に用いる部品変数として定義する(S61)。図25および図26の例では、No.1の再利用パラメータとして、排他的選択数値設定プログラムの指令リレー(図27において再利用パラメータとしての部品変数VB1が付与されたa接点)に付与する部品変数VBを定義している。またNo.2の再利用パラメータとして、数値設定処理命令(MOV)で設定する数値(図27の変数VK2)に付与する部品変数VKを定義し、No.3の再利用パラメータとして、内部ローカル変数(内部リレー)として部品変数VMを設定し、No.4の再利用パラメータとして、数値の設定先レジスタ(図27の変数VD3)に付与する部品変数VDを、それぞれ定義している。
ここで、パラメータ定義領域の「列挙」のチェックボックスは、当該再利用パラメータに対してパラメータを列挙して設定可能か否かを設定するものである。図25および図26の例において、チェック(「レ」)が入っているNo.1〜3の再利用パラメータは、パラメータを列挙して設定可能なものとして定義されている。プログラム階層部品は、列挙されたパラメータの数だけ、所定のプログラム部品を再利用してプログラム生成を行うことになる。
なお図25および図26のパラメータ定義領域に示すように、プログラム階層部品の再利用パラメータとして、プログラムコメントとプログラムポインタを用意してもよい。
次に、プログラム部品順序設定領域を用いて、プログラム階層部品で再利用するプログラム部品およびその順番を選択する(S62)。プログラム階層部品を用いてプログラムが生成される際、この工程で選択されたプログラム部品が選択された順番で再利用される。
図25および図26の例では、プログラム部品順序設定領域の右側のボックスには定義済みのプログラム部品の一覧が表示されており、その一覧から1つを選択して選択ボタン(「<<」)を押すと、それが左側のボックス内のラダーダイアグラムに追加される。また左側のボックス(ラダーダイアグラム)に表示されているプログラム部品の1つを選択し、削除ボタンを押すと、ラダーダイアグラムからそのプログラム部品を削除することができる。さらに、左側のボックスに表示されているプログラム部品の1つを選択し、上下移動ボタン(矢印ボタン「↑」及び「↓」)を押すと、そのプログラム部品の順番を変更することができる。
図25および図26では、プログラム部品の一覧の中から、まず自己保持処理プログラム部品を選択してラダーダイアグラムに追加し、さらに数値設定処理プログラム部品を選択して、ラダーダイアグラムの上記自己保持処理プログラム部品の次に追加した例を示している。この結果、自己保持処理プログラム部品および数値設定処理プログラム部品をこの順番で再利用したプログラムを生成可能なプログラム階層部品が定義される。また当該プログラム階層部品は、再利用パラメータにパラメータが列挙して設定されると、自己保持処理プログラム部品および数値設定処理プログラム部品を、その列挙されたパラメータの数だけ繰り返し再利用したプログラムを生成できる。
次に、プログラム階層部品において再利用パラメータとして定義した部品変数を、当該プログラム階層部品に含まれるプログラム部品の再利用パラメータへと適用する(S63)。図25および図26の例では、プログラム部品順序設定領域の左側ボックス(ラダーダイアグラム)内のプログラム部品を選択すれば、その下のパラメータ適用領域に、選択されたプログラム部品の再利用パラメータの一覧が表示される。
図25では、プログラム部品順序設定領域の左側ボックス内で自己保持処理プログラム部品を選択され、パラメータ適用領域にその再利用パラメータの一覧が表示されている。ここでは、自己保持処理プログラム部品のNo.1の再利用パラメータ(図3のVB1)に対し当該プログラム階層部品のNo.1の再利用パラメータVBに記号「@」を付したもの(VB@)を適用し、自己保持処理プログラム部品のNo.2の再利用パラメータ(図3のVB2)に対し当該プログラム階層部品のNo.1の再利用パラメータVBに記号「@!」を付したもの(VB@!)を適用し、自己保持処理プログラム部品のNo.3の再利用パラメータ(図3のVB3)に対し当該プログラム階層部品のNo.3の再利用パラメータVMに記号「@」を付したもの(VM@)を適用している。
図26では、プログラム部品順序設定領域の左側ボックス内で数値設定処理プログラム部品を選択され、パラメータ適用領域にその再利用パラメータの一覧が表示されている。ここでは、数値設定処理プログラム部品のNo.1の再利用パラメータ(図27のVB1)に対し当該プログラム階層部品のNo.3の再利用パラメータVMに記号「@」を付したもの(VM@)を適用し、数値設定処理プログラム部品のNo.2の再利用パラメータ(図27のVK2)に対し当該プログラム階層部品のNo.2の再利用パラメータVKに記号「@」を付したもの(VK@)を適用し、数値設定処理プログラム部品のNo.3の再利用パラメータ(図27のVD3)に対し当該プログラム階層部品のNo.4の再利用パラメータVDを適用している。
なお、記号「@」は、プログラム階層部品内のプログラム部品が列挙されたパラメータの数だけ繰り返し再利用される際に、列挙されたパラメータを1つずつ順に適用することを示すものである。また記号「@!」は、プログラム階層部品内のプログラム部品が列挙されたパラメータの数だけ繰り返し再利用される際に、記号「@」に基づき適用されるパラメータ以外の全てのパラメータを列挙して適用することを示すものである。
プログラム階層部品の再利用の際、再利用パラメータに列挙して適用されたパラメータの数だけ、当該プログラム階層部品に含まれるプログラム部品が繰り返し再利用される。例えば再利用パラメータVBに、3つのパラメータX1,X2,X3が列挙して適用されたとすると、再利用は3回行われる。その場合、1回目の再利用ではVB@に1番目のパラメータX1が適用され、VB@!にはそれ以外のパラメータX2,X3が適用される。また2回目の再利用では、VB@に2番目のパラメータX2が適用され、VB@!にはそれ以外のパラメータX1,X3が適用される。そして3回目の再利用では、VB@に3番目のパラメータX3が適用され、VB@!にそれ以外のパラメータX1,X2が適用されることになる。
最後に、プログラム階層部品名入力領域に作成したプログラム階層部品に名称を入力し(S64)、保存することによって、プログラム階層部品の定義が完了する。
なお、プログラム階層部品は、他のプログラム階層部品の構成要素と成ることもできる。既に定義して保存されているプログラム階層部品がある場合には、プログラム階層部品定義画面のプログラム部品順序設定領域の右側ボックスにそれが表示され、通常のプログラム部品と同様に選択可能である。これにより、他のプログラム階層部品を再利用するプログラム階層部品を定義することができる。
図28は、プログラム作成支援装置1にプログラム階層部品を再利用してプログラムを自動生成させる際の操作画面表示(プログラム階層部品再利用画面)の一例を示している。このプログラム階層部品再利用画面は、図10とほぼ同様の構成であり、再利用するプログラム階層部品の名称が表示されるプログラム階層部品名表示領域と、再利用パラメータに適用するデバイスや変数(ラベル)などのパラメータを入力するためのパラメータ適用領域とを備えている。
図28では、図24および図25のように定義されたプログラム階層部品を再利用するケースを示している。パラメータ適用領域に表示される再利用パラメータの「No.」、「列挙」、「説明文」の欄には、図24および図25のプログラム階層部品定義画面のパラメータ定義領域で定義した内容が表示される。
ユーザは、パラメータ適用領域において、再利用パラメータに適用するパラメータを入力する。このとき「列挙」の欄にチェック(「レ」)が表示されている再利用パラメータには、パラメータを2つ以上列挙して入力できる。但し、各再利用パラメータ(パラメータを列挙して適用可能なものに限る)に列挙して適用するパラメータの数は、全て同じにする必要がある。
図28の例では、プログラムコメントに「切削オーバライド設定スイッチ」、No.1の再利用パラメータ(VB)に「X285,X286,X287,X288」、No.2の再利用パラメータ(VK)に「25,50,75,100」、No.3の再利用パラメータ(VM)に「M4002,M4003,M4004,M4005」、No.3の再利用パラメータ(VD)に「R2500」を適用する例を示している。この場合は、図29のようなラダープログラムがプログラム作成支援装置1によって作成される。
図29のプログラムは、図30のような切削オーバライドスイッチの設定結果を処理するプログラムである。設備の操作者は、設備の操作盤などに備えられた切削オーバライドスイッチによって、その設備が稼動する際の切削オーバライド値を25%、50%、75%、100%から選択する。切削オーバライドスイッチの出力は、設備の計測監視制御を行うために組み込まれたコントローラの各Xデバイス(X285,X286,X287,X288)に接続される。コントローラは、各XデバイスのON/OFFによって選択された切削オーバライド値を、コントローラ内部のRレジスタ(R2500)に格納する。
以下、プログラム作成支援装置1が行う、プログラム部品を再利用したプログラムの生成方法について説明する。図31は、当該生成方法のフローチャートである。ここでは図7に示したラダープログラムを生成する場合を例に挙げる。
図29の如く、ユーザによりプログラム階層部品再利用画面に必要な情報が入力され、プログラムの生成が命じられると、まずプログラム作成支援装置1は、パラメータを列挙して適用可能な再利用パラメータ(プログラム階層部品定義画面のパラメータ定義領域で「列挙」の欄にチェック(「レ」)が入っているもの)が複数あるか確認し、複数ある場合には、それらに適用されたパラメータの数が全て同じか否かを確認する(S71)。数の異なるものがあれば、再利用パラメータの設定エラーを表示するなどして、プログラムを生成せずに終了する(S72)。
次に、再利用パラメータとしてのプログラムコメントおよびジャンプ用ラベル(プログラムポインタ)の設定内容に応じた処理を行う(S73)。この処理は、図11のステップS31〜S34と同じ処理である。
以降、再利用パラメータに列挙して適用されたパラメータの数だけ、プログラム部品の再利用を行ってプログラムを生成する。まず再利用の回数をカウントするためのインデックスiを1に設定する(S74)。インデックスiはプログラム部品の再利用が完了する毎に1つずつ増やされ、iの値がパラメータの列挙数を超えるまで、プログラム部品の再利用が繰り返される。
プログラム部品の再利用は、プログラム階層部品のプログラム構造の順、即ちプログラム階層部品定義画面のプログラム部品順序設定領域で設定した順に行われる。プログラム作成支援装置1は、プログラム階層部品のプログラム構造の順にプログラム部品を抽出する(S75)。
続いて、抽出したプログラム部品の再利用パラメータを順に抽出し(S76)、それに当該プログラム階層部品の再利用パラメータが適用されているかを確認する(S77)。当該プログラム階層部品の再利用パラメータが適用されていれば、それに記号「@」が付されているか(S78)、記号「@!」が付されているか(S80)、あるいはそのどちらでもないかが判断される。
プログラム部品の再利用パラメータに記号「@」が付されていれば、それに対してプログラム階層部品のi番目の再利用パラメータを適用する(S79)。プログラム部品の再利用パラメータに記号「@!」が付されていれば、それに対してプログラム階層部品のi番目以外の全ての再利用パラメータを列挙して適用する(S81)。どちらの記号も付されていなければ、プログラム部品の再利用パラメータに、プログラム階層部品の再利用パラメータを適用する(S82)。
なお、抽出したプログラム部品の再利用パラメータに、当該プログラム階層部品の再利用パラメータが適用されていない場合は(S77においてNo)、当該プログラム階層部品の再利用パラメータに適用されているデバイスや変数(ラベル)、数値をそのまま適用する(S83)。
プログラム部品の再利用パラメータに関する処理(S76〜S83)は、当該プログラム部品の全ての再利用パラメータに対して実行される(S84)。全ての再利用パラメータに対する処理が完了すると(S84においてNo)、その処理結果に基づいて当該プログラム部品を再利用したプログラムが生成される(S85)。このプログラム生成工程では、図11に示したプログラムの生成方法と同様の処理が行われる。
プログラム部品の抽出(S75)からプログラム部品を再利用してのプログラム生成(S85)までの処理は、プログラム階層部品内の全てのプログラム部品に対し、指定された順番で実行される(S86)。それらの処理が全てのプログラム部品について完了すると(S86においてNo)インデックスiがインクリメントされ(S87)、インクリメント後のインデックスiがプログラム階層部品の再利用パラメータに列挙されたパラメータの数を超えるまで、それらの処理が繰り返される(S88)。
最後に、再利用パラメータとしてのプログラムコメントおよびジャンプ用ラベル(プログラムポインタ)の設定内容に応じた処理を行う(S89)。この処理は、図11のステップS44〜S47と同じ処理である。
以上説明したプログラム生成方法を、図25および図26のように定義したプログラム階層部品につき、図28のように再利用パラメータを設定した場合を例にして、具体的に説明する。
図28の如く、ユーザによりプログラム階層部品再利用画面に必要な情報が入力され、プログラムの生成が命じられると、プログラム作成支援装置1は、「列挙」の欄にチェック(「レ」)が入ったNo.1〜4の再利用パラメータに列挙されたパラメータの数を確認する(S71)。ここではいずれも4つであるため、設定エラーとはならず、プログラムの作成が実行される。
まず、再利用パラメータのプログラムコメントには「切削オーバライド設定スイッチ」が設定されているため、プログラム作成支援装置1は、それに「開始」を付与した「開始切削オーバライド設定スイッチ」をプログラムコメントとして出力する(S73)。ジャンプ用ラベルは設定されていない。
インデックスiを1に設定した後、プログラム階層部品の構造順にプログラム部品を抽出する(S75)。図25および図26で定義したように、当該プログラム階層部品の1番目のプログラム部品は、自己保持処理プログラム部品であるので、それが抽出される。そして抽出された自己保持処理プログラム部品について、再利用パラメータが順番に抽出される(S76)。
まず自己保持処理プログラム部品のNo.1の再利用パラメータVB1には、プログラム階層部品のNo.1の再利用パラメータVBに記号「@」が付されたものが適用されている。よって、それに列挙して設定されたデバイスX285,X286,X287,X288の第1番目(第i番目)のX285が、自己保持処理プログラム部品のNo.1の再利用パラメータVB1に適用される(S79)。
自己保持処理プログラム部品のNo.2の再利用パラメータVB2には、プログラム階層部品のNo.1の再利用パラメータVBに記号「@!」が付されたものが適用されている。よって、それに列挙して設定されたデバイスX285,X286,X287,X288の第1番目(第i番目)以外のX286,X287,X288が、自己保持処理プログラム部品のNo.2の再利用パラメータVB2に適用される(S81)。
自己保持処理プログラム部品のNo.3の再利用パラメータVB3には、プログラム階層部品のNo.3の再利用パラメータVMに記号「@」が付されたものが適用されている。よって、それに列挙して設定されたデバイスM4002,M4003,M4004,M4005の第1番目(第i番目)のM4002が、自己保持処理プログラム部品のNo.3の再利用パラメータVB3に適用される(S79)。
以上の再利用パラメータの適用結果に基づいて、自己保持処理プログラム部品を再利用して生成したプログラムが出力される(S85)。
自己保持処理プログラム部品を再利用してのプログラム生成が終わると、今度はプログラム階層部品の2番目のプログラム部品である数値設定処理プログラム部品が抽出される(S75)。そして抽出された数値設定処理プログラム部品について、再利用パラメータが順番に抽出され(S76)、上記と同様の処理が行われる。
数値設定処理プログラム部品のNo.1の再利用パラメータVB1には、プログラム階層部品のNo.3の再利用パラメータVMに記号「@」が付されたものが適用されている。よって、それに列挙して設定されたデバイスM4002,M4003,M4004,M4005の第1番目(第i番目)のM4002が、数値設定処理プログラム部品のNo.1の再利用パラメータVB1に適用される(S79)。
数値設定処理プログラム部品のNo.2の再利用パラメータVK2には、プログラム階層部品のNo.3の再利用パラメータVKに記号「@」が付されたものが適用されている。よって、それに列挙して設定された数値25,50,75,100の第1番目(第i番目)である25(図29では10進表現「K25」)が、数値設定処理プログラム部品のNo.2の再利用パラメータVK2に適用される(S79)。
数値設定処理プログラム部品のNo.3の再利用パラメータVD3には、プログラム階層部品のNo.4の再利用パラメータVDが適用されている。これには記号「@」も記号「@!」も付されていないので、それに設定されたデバイスR2500がそのまま数値設定処理プログラム部品のNo.3の再利用パラメータVD3に適用される(S82)。
以上の再利用パラメータの適用結果に基づいて、数値設定処理プログラム部品を再利用して生成したプログラムが出力される(S85)。
このように自己保持処理プログラム部品および数値設定処理プログラム部品を再利用してのプログラム生成が完了すると、インデックスiがインクリメントされる(S87)。図28の例では、パラメータの列挙数は4つなので、インデックスi=2、3、4について、上記と同様の手順により自己保持処理プログラム部品および数値設定処理プログラム部品を再利用してのプログラム生成が繰り返される。
最後に、再利用パラメータとしてのプログラムコメントおよびジャンプ用ラベル(プログラムポインタ)の設定内容に応じた処理が行われる(S89)。図28の例では、設定されたプログラムコメント「切削オーバライド設定スイッチ」に「終了」を付与した「終了切削オーバライド設定スイッチ」がプログラムコメントとして出力される。またジャンプ用ラベルは設定されていないので、リターン命令は出力されない。
以上のような手順により、図29に示したプログラムが生成される。
本実施の形態に係るプログラム階層部品は、再利用することにより、プログラム部品を複数組み合わせて構成されるプログラムを生成することが可能である。またその際、プログラム階層部品の再利用パラメータに複数のパラメータ(デバイスや変数(ラベル)、数値等)を列挙して適用することにより、それらプログラム部品を複数回再利用した構成のプログラムを生成可能である。当該プログラム階層部品は、再利用パラメータに適用するパラメータの列挙数に応じて、様々な形態を取ることが可能である。そして本実施の形態のプログラム作成支援装置1は、そのようなプログラム部品を定義可能なプログラム部品定義部12を備えることを特徴としている。
実施の形態1,2との組み合わせにより、実施の形態1,2よりもさらに多くの形態のプログラムを生成することが可能である。そして本実施の形態のプログラム作成支援装置1は、そのようなプログラム部品を定義可能なプログラム部品定義部12を備えることを特徴としている。
よって、仕様記述に合致するプログラムを作成するための、プログラム部品の選定およびそれらの組み合わせに関する設計の労力を軽減し、仕様に記述された機能を過不足なく備えるプログラムの作成の労力を大幅に軽減できる。またプログラム部品を再利用して生成したプログラムの付属情報ファイルも自動生成することができ、この付属情報の存在によって、生成したプログラムの理解が容易となり、生成したプログラムの理解に係る労力が軽減される。
<実施の形態4>
本実施の形態4に係るプログラム作成支援装置1は、工作機械を制御するためのプログラムを生成する。以下においては、その一例として、プログラム作成支援装置1が、ラダープログラムを生成する場合を説明する。まず、プログラム作成支援装置1について説明する前に、プログラム作成支援装置1が生成するラダープログラムを用いる工作機械について説明する。
図33は、工作機械の構成を示すブロック図である。工作機械46は、コンピュータ数値制御装置コントローラ(Computerized Numerical Controller:以下「CNC」と記す)47と、工作機械46の工具及び加工物を回転及び移動させる主軸モータ54及びサーボモータ55と、工作機械46を操作するための操作盤56と、付帯設備57とを備えている。なお、以下、図33に示される、CNC47を備える工作機械46を「CNC工作機械46」と呼ぶこともある。
CNC47は、例えばCNC工作機械46に組み込まれたコンピュータから構成されるものであり、モーション制御機能を有するモーション制御部51と、シーケンス制御機能を有するシーケンス制御部52とを備えている。このCNC47には、CNC工作機械46における加工手順が記述された加工プログラム48が記憶されており、CNC47は、当該加工プログラム48を解釈して、主軸モータ54及びサーボモータ55を制御したり、付帯設備57を制御したりする。
具体的には、加工プログラム48には、工具及び加工物の移動量及び移動速度を指令するGコード49が記述されており、CNC47のモーション制御部51が、当該Gコード49の指令(数値)に基づいて、主軸モータ54及びサーボモータ55の回転及び移動を制御する。これにより、CNC47を備える工作機械46は、工具及び加工物を、所望の移動量及び移動速度で回転させたり移動させたりすることが可能となっている。
また、加工プログラム48には、付帯設備57の制御を指令するMコード50が記述されており、CNC47のシーケンス制御部52が、当該Mコード50の指令に基づいて、付帯設備57を制御する。このシーケンス制御部52は、PCと同等の機能を有することから、PCと同等でかつPCとは別のハードウェアで実現されてもよいし、PCのハードウェアで実現されてもよい。
以上のようなCNC工作機械46のラダープログラムの作成に関連する仕様は、例えば、非特許文献2に開示されている(非特許文献2:PLCプログラミング説明書IB-1500035、インターネット<URL:http://wwwf2.mitsubishielectric.co.jp/melfansweb/index_j.htm>)。
さて、以上のようなCNC工作機械46が正しく動作するためには、CNC工作機械46が、Mコード50の指令どおりに付帯設備57を制御させるためのラダープログラム53(以下、「Mコード処理プログラム」)を有する必要があるとともに、操作盤56を用いて工作機械46を制御するためのラダープログラム53(以下、「操作盤処理プログラム」)が有する必要がある。
<プログラム作成支援装置1の構成>
本実施の形態に係るプログラム作成支援装置1は、操作盤56の仕様、及び、Mコード50の仕様から、CNC工作機械46において使用される操作盤処理プログラム、及び、Mコード処理プログラムを生成する。以下、本実施の形態に係るプログラム作成支援装置1について説明する。なお、操作盤処理プログラム及びMコード処理プログラムを作成するプログラム作成支援装置は、PCのラダープログラムを作成するためのプログラム作成支援装置と同等でそれとは別の装置であってもよいし、PCのラダープログラムを作成するためのプログラム作成支援装置が適用されてもよい。また、一般にCNC工作機械46は、操作盤56において多数のスイッチを備えるとともに、Mコード50を数十〜数百個を備えるが、以下においては、運転モード選択やオーバライドなどの典型的なスイッチや、M3、M4、M5、M30などの代表的なMコードを例にして説明する。
本実施の形態に係るプログラム作成支援装置1のハードウェア構成は、図2に示されるブロック図と同じである。そのハードウェア構成を図2を用いて説明すると、CNC工作機械46に関する仕様のデータ及び計測監視制御プログラムに関するファイルが、保存部5に保持されている。そして、プログラム作成支援装置1は、入力すべき仕様を表示部3に表示し、入力部4においてユーザにより設定された仕様に従って、マイクロプロセッサ2がプログラム生成処理を実行する。
図34は、本実施の形態に係るプログラム作成支援装置1の機能ブロック構成(ソフトウェアブロック構成)を示す図である。当該プログラム作成支援装置1は、これまでの実施の形態で説明したプログラム編集部6及びプログラム部品保持部11に対し、仕様設定部31と、デバイス仕様保持部32とをさらに備えている。なお、図を簡略化するため、図34においては、プログラム部品定義部12等の図示は省略されている。
プログラム作成支援装置1には、外部(仕様入力29)から、操作盤56及びMコード50等の仕様が仕様入力29として入力される。また、プログラム作成支援装置1は、操作盤56及びMコード等の仕様が記述された仕様記述ファイル30と接続されており、操作盤56及びMコード等の仕様に関して仕様記述ファイル30を読み書き可能となっている。
仕様設定部31は、仕様入力29及び仕様記述ファイル30から、操作盤56及びMコード50の仕様を受けて、操作盤56の仕様及びMコード50の仕様を設定する。本実施の形態では、仕様設定部31は、操作盤56の仕様を受けて操作盤56の仕様を設定(記憶)する操作盤仕様設定部31Aと、Mコード50の仕様を受けてMコード50の仕様を設定(記憶)するMコード仕様設定部31Bとを有している。仕様設定部31は、設定された仕様(仕様データ)を、プログラム編集部6に出力したり、仕様記述ファイル30に書き込まれるように出力したり込んだりする。
プログラム部品保持部11は、プログラム編集部6がプログラムを生成する際に使用する、ラダー部品などのプログラム部品10を予め保持している。このプログラム部品10は、実施の形態1〜3のいずれかにおいて定義されたものであってもよく、それら以外の従来の方式で定義されたものであってもよい。本実施の形態に係るプログラム部品保持部11は、プログラム部品10として、モード反転処理プログラム部品10A、自己保持処理プログラム部品10B、数値設定処理プログラム部品10C、Mコードデコード処理プログラム部品10D、AND条件処理プログラム部品10E、Mコード完了処理プログラム部品10Fを保持している。
図35は、デバイス仕様保持部32が保持している、モーション制御入出力に関するデバイスアドレスの仕様を示す図である。デバイス仕様保持部32は、CNC工作機械46で使用されるラダープログラムに関連する仕様として、図35に示されるようなデバイスの仕様を保持する。具体的には、デバイス仕様保持部32は、どのようなモーション制御入出力であるかを特定する名称と、その入出力が割り付けられたデバイスアドレスとを関連付けたテーブルを保持している。以上のようなCNC工作機械46のラダープログラムの作成に関するデバイスアドレスの仕様は、例えば、非特許文献3に開示されている(非特許文献3:PLCインターフェース説明書IB-1500000、インターネット<URL:http://wwwf2.mitsubishielectric.co.jp/melfansweb/index_j.htm>)。
プログラム編集部6は、仕様設定部31からの仕様を受け取ったり、仕様記述ファイル30に保存された仕様を読み取ったりすることにより、操作盤56及びMコード50の仕様を取得する。本実施の形態においては、このプログラム編集部6はプログラム生成部34を備えている。このプログラム生成部34は、仕様記述ファイル30に記述されている操作盤56及びMコード50の仕様のそれぞれ、及び、仕様設定部31で設定された操作盤56及びMコード50の仕様のそれぞれを、プログラム部品保持部11に保持されているプログラム部品10の再利用パラメータ22に適用しつつ、当該プログラム部品10からプログラムを作成する。なお、本実施の形態に係るプログラム生成部34は、プログラム部品10からプログラムを作成する際に、デバイス仕様保持部32に保持されているデバイスの仕様を参照する。
本実施の形態では、このプログラム生成部34は、操作盤処理プログラム生成部341と、Mコード処理プログラム生成部342とを有しており、機能仕様ごとにプログラムを生成する手段を有している。次に、操作盤処理プログラム生成部341及びMコード処理プログラム生成部342について説明する。
操作盤処理プログラム生成部341は、仕様記述ファイル30に記述されている操作盤56の仕様、及び、仕様設定部31で設定された操作盤56の仕様を、プログラム部品保持部11に保持されているプログラム部品10の再利用パラメータ22に適用しつつ、当該プログラム部品10から上記操作盤処理プログラムを生成する。
本実施の形態において、操作盤処理プログラム生成部341は、モード反転機能生成部341A、運転モード選択機能生成部341B、及び、切削オーバライド機能生成部341C(以下、これらをまとめて「機能生成部341A〜341C」と記すこともある)を備えており、機能生成部341A〜341Cのそれぞれが、操作盤56において互いに異なる制御を行うための操作盤処理プログラムを生成する。具体的には、モード反転機能生成部341Aは、操作盤56においてモード反転制御を行うための操作盤処理プログラムを生成し、運転モード選択機能生成部341Bは、操作盤56において運転モード選択制御を行うための操作盤処理プログラムを生成し、切削オーバライド機能生成部341Cは、操作盤56において切削オーバライド制御を行うための操作盤処理プログラムを生成する。
Mコード処理プログラム生成部342は、仕様記述ファイル30に記述されているMコード50の仕様、及び、仕様設定部31で設定されたMコード50の仕様を、プログラム部品保持部11に保持されているプログラム部品10の再利用パラメータ22に適用しつつ、当該プログラム部品10から上記のMコード処理プログラムを生成する。本実施の形態において、Mコード処理プログラム生成部342は、Mコード機能生成部342Aを備えており、Mコード機能生成部342Aが、Mコード処理プログラムを生成する。
プログラム編集部6は、生成した操作盤処理プログラム及びMコード処理プログラムを編集後のプログラム8として出力するとともに、必要に応じてそれに関連する付属情報ファイル9を出力する。例えば、編集後のプログラム8がラダープログラムである場合には、実施の形態1で説明したように、そのラダープログラムに用いる各デバイスの内容を説明するコメントを、付属情報ファイル9として出力する。
<操作盤仕様設定部31Aにおける仕様の設定>
次に、仕様設定部31の操作盤仕様設定部31Aによって操作盤56の仕様が設定される例について説明する。
図36は、トグル型でないスイッチ、例えば、押しボタンスイッチが並んだ操作盤56を有するCNC工作機械46において、当該操作盤56における各スイッチの仕様を設定するための画面(以下「操作盤仕様設定画面」)の一例を示す図である。この図36に示される操作盤仕様設定画面上においては、複数のスイッチが行列状に並べられて表示されており、いずれか1つのスイッチが使用者によりマウスを用いてダブルクリック(選択)されると、当該スイッチに対応するスイッチ仕様設定画面が表示される。
図37は、図36において「運転メモリ」と記されたスイッチが選択された場合に表示されるスイッチ仕様設定画面を示す図である。このスイッチ仕様設定画面では、図36において選択された1つのスイッチに対して、スイッチ種別、スイッチ動作、スイッチ入力が設定される。ここで、図36に示されるスイッチを画定する枠内に表示される文字列は、図37に示される、スイッチ種別において設定された文字列の先頭部分と、スイッチ動作において設定された文字列とを組み合わせたものとしている。例えば、図37に示されるように、スイッチ種別において「運転モード選択」が設定され、スイッチ動作において「メモリ」が設定されている場合には、「運転モード選択」という文字列の先頭部分「運転」と、「メモリ」とを組み合わせた「運転メモリ」が図36に示されるようにスイッチの枠内に表示される。なお、図36において、文字列が付与されていないスイッチ(図36では右上のスイッチ)は、図37において、スイッチ種別及びスイッチ動作が設定されていないことを示している。
図37に示されるスイッチ仕様設定画面における設定は、まず、スイッチ種別の設定が行われ、その後にスイッチ動作の設定が行われる。
スイッチ種別という文字列の横には、ドロップダウンリストまたはコンボボックス(以下、「ドロップダウンリスト等」と記す)が設けられており、これに表示される一覧から所望のスイッチ種別がユーザにより1つ選択されることにより、スイッチ種別が設定される。ドロップダウンリスト等に表示される一覧には、CNC工作機械46の操作盤56に必要なスイッチの種別が表示される。本実施の形態では、操作盤仕様設定部31Aは、操作盤処理プログラム生成部341が生成可能な操作盤処理プログラムの種別、つまり、操作盤処理プログラム生成部341が備える機能生成部341A〜341Cの機能の名称(「モード反転」、「運転モード選択」、「切削オーバライド」)を上記一覧に表示する。そして、これらのうちの一つがスイッチ種別としてユーザにより設定されることになる。
スイッチ動作という文字列の横には、ドロップダウンリスト等が設けられ、これに表示される一覧から所望のスイッチ動作が、スイッチ動作が設定される。具体的には、先に選択されたスイッチ種別に応じたスイッチ動作が一覧に表示され、そのうちの一つが設定される。これにより、操作盤処理プログラム生成部341が生成可能な操作盤処理プログラムに対して、スイッチ種別に応じたスイッチ動作が設定されることになる。
本実施の形態では、スイッチ種別において「モード反転」が設定されると、スイッチ動作のドロップダウンリスト等には、モード反転のスイッチ動作として「シングルブロック」、「ドライラン」が表示され、これらのうちの一つが設定される。スイッチ種別において「運転モード選択」が設定されると、スイッチ動作のドロップダウンリスト等には、運転モード選択のスイッチ動作として「ジョグ」、「ハンドル」、「メモリ」が表示され、これらのうちの一つが設定される。スイッチ種別において「切削オーバライド」が設定されると、切削オーバライドが%値で表される場合には、スイッチ動作のドロップダウンリスト等には、切削オーバライドのスイッチ動作として「25」、「50」、「75」、「100」が表示され、これらのうちの一つが設定される。
スイッチ入力という文字列の横のボックスには、そのスイッチに割り当てられるPCの入力デバイスが設定される。もし、各スイッチが特定の入力デバイスに割り当てられていることが予め決まっているのであれば、そのデバイスのアドレスを表示し、アドレス設定が省略できるようにしてもよい。
図38は、各スイッチの仕様を設定するための画面を、図36及び図37に示した表示形態とは別の表示形態で表示した図である。上述で説明したのと同様に、「モード反転」に対しては「シングルブロック」、「ドライラン」がスイッチ動作の欄にて設定され、「運転モード選択」に対しては「ジョグ」、「ハンドル」、「メモリ」がスイッチ動作の欄にて設定され、「切削オーバライド」に対しては「25」、「50」、「75」、「100」がスイッチ動作の欄にて表示されている。
<Mコード仕様設定部31Bにおける仕様の設定>
次に、仕様設定部31のMコード仕様設定部31BによってMコード50の仕様が設定される例について説明する。
図39は、CNC工作機械46が備えるMコード50の機能仕様を設定するための画面の一例を示す図である。Mコードの欄にはMコード番号が設定され、機能名の欄にはそのMコード50の簡単な説明が設定される。
機能開始の欄には、「ブロック開始と同時」、「ブロック軸移動完了後」がドロップダウンリスト等により選択的に表示され、そのうちの1つが設定される。ここで、「ブロック開始と同時」は、そのMコード50が軸移動と同一ブロックで指令されている場合に、当該ブロックで指令された軸移動の開始と同時に当該Mコード50の機能を実行開始することを意味する。「ブロック軸移動完了後」は、そのMコード50が軸移動と同一ブロックで指令されている場合に、当該ブロックで指令された軸移動の完了後に当該Mコード50の機能を実行開始することを意味する。
機能キャンセルの欄には、そのMコード50の機能が割り当てられたブロック内だけで有効である場合には何も設定されない。しかし、当該Mコード50の機能が割り当てられたブロックを過ぎても、当該Mコード50の機能を他のMコード50によってキャンセルまたは変更されるまで有効となるようにしたい場合には、機能キャンセルの欄に当該他のMコード50が列挙されて設定される。この機能キャンセルの欄には、Mコードの欄で設定されたMコード番号と異なるMコード番号が設定される。例えば、Mコードの欄で「M3」が設定された場合には、機能キャンセルの欄には、M3以外のMコード番号が設定され、Mコードの欄で「M4」が設定された場合には、機能キャンセルの欄には、M4以外のMコード番号が設定される。
機能出力の欄には、そのMコード50の機能出力先である、出力デバイスであるYデバイスや内部デバイスであるMデバイスなどのデバイスのアドレスが設定される。当該Mコード50において機能出力する必要が無い場合には、この欄には何も設定されない。
機能完了の欄には、そのMコード50の機能完了の条件となる、入力デバイスであるXデバイスや内部デバイスであるMデバイスなどのデバイスのアドレスが設定される。そのMコード50の機能出力と同時に機能完了する場合には、この欄には何も設定されない。
次に、図39に示された表の行ごとに設定された各Mコード50についてそれぞれ具体的に説明する。
M03(M3)というMコード50は、主軸正転を行うMコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にMコード50の機能(主軸正転)を開始する。主軸正転の機能は、逆転や停止が指令されるまで継続されるので、主軸逆転の機能を行うM4のMコード50、及び、主軸停止の機能を行うM5のMコード50が、M3のMコード機能をキャンセルする他のMコード50として機能キャンセルの欄に設定されている。なお、図39に示される仕様においては、主軸を正転させるための出力デバイスであるY1898が、機能出力先デバイスとして機能出力の欄に設定されている。また、主軸が所定の回転速度に到達すればM3の機能が完了するという仕様では、主軸が当該所定の回転速度に到達した場合に当該到達を示す入力デバイスであるX188Dが、機能完了条件デバイスとして機能完了の欄に設定される。
M04(M4)というMコード50は、主軸逆転を行うMコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にMコード50の機能(主軸逆転)を開始する。主軸逆転の機能は、正転や停止が指令されるまで継続されるので、主軸正転の機能を行うM3のMコード50、及び、主軸停止の機能を行うM5のMコード50が、M4のMコード機能をキャンセルする他のMコード50として機能キャンセルの欄に設定されている。なお、図39に示される仕様においては、主軸を逆転させるための出力デバイスであるY1899が、機能出力先デバイスとして機能出力の欄に設定されている。また、主軸が所定の回転速度に到達すればM4の機能が完了するという仕様では、主軸が当該所定の回転速度に到達した場合に当該到達を示す入力デバイスであるX188Dが、機能完了条件デバイスとして機能完了の欄に設定される。
M05(M5)というMコード50は、主軸停止を行うMコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にMコード50の機能(主軸停止)を開始する。主軸停止の機能は、他のMコード機能をキャンセルするものであるが、他のMコード50からキャンセルされるものではないから、機能キャンセルの欄には何も設定されない。また、主軸停止の機能は動作を停止するものであるから、機能出力の欄にも何も設定されない。なお、この図においては、主軸の回転速度がゼロになった場合にそのことを示す入力デバイスであるX188Cが、機能完了条件デバイスとして機能完了の欄に設定されている。
M30は、エンドオブデータの処理を行なうMコード機能であり、軸移動と同一ブロックで指令されている場合には、そのブロックで指令された軸移動の開始と同時にMコード50の機能(エンドオブデータの処理)を開始する。エンドオブデータの処理の機能は、CNC工作機械46をリセットするものである。したがって、エンドオブデータの処理の機能は、他のMコード50からキャンセルされるものではないので機能キャンセルは設定されない。なお、この図においては、CNC工作機械46をリセットするデバイスであるYC1Aが、機能出力先デバイスとして機能出力の欄に設定されている。M30は、機能出力と同時に機能完了する。
<プログラム部品>
次に、操作盤処理プログラム生成部341が操作盤処理プログラムをはじめとするプログラムを生成する際に再利用し、Mコード処理プログラム生成部342がMコード処理プログラムをはじめとするプログラムを生成する際に再利用するプログラム部品10について説明する。
図34に示したように、このプログラム部品10として、モード反転処理プログラム部品10A、…、Mコード完了処理プログラム部品10Fが、プログラム部品保持部11において保持されている。このうち、自己保持処理プログラム部品10B及びMコード完了処理プログラム部品10Fについては、実施の形態1及び実施の形態2において説明したので、これらの説明については省略する。以下、モード反転処理プログラム部品10A、数値設定処理プログラム部品10C、Mコードデコード処理プログラム部品10D、AND条件処理プログラム部品10Eについて主に説明する。なお、数値設定処理プログラム部品10Cについては実施の形態3で詳細に説明したので、ここでは簡単に説明する。
図40は、モード反転の機能を処理するプログラムを部品化したモード反転処理プログラム部品10Aを示す図である。図40に示されるモード反転処理プログラム部品10Aの再利用パラメータにデバイスまたは変数(ラベル)が指定されるだけで、当該パラメータに基づいて、モード反転の機能を処理するプログラム(プログラム部品POU)が自動的に生成される。
次に、図40に示されるモード反転処理プログラム部品10Aの再利用パラメータにデバイス等が指定されたと仮定して、モード反転処理ラダープログラムの動作について説明する。初期状態では、VB1、VB2、VB3のいずれもOFF状態となっている。モード反転を指令するデバイスであるVB1がONされると、PLS命令によりPCの1スキャン分だけVB2がONし、VB2のONを受けてVB3が反転、すなわちONとなる。PCの次のスキャンでPLS命令によりVB2はOFFされるが、VB3のONは保持される。時間を空けてVB1をOFFしても、VB3のONは保持される。さらに時間を空けてVB1を再度ONすると、PLS命令によりPCの1スキャン分だけVB2がONし、VB2のONを受けてVB3が反転、すなわちOFFとなる。PCの次のスキャンでPLS命令によりVB2はOFFされるが、VB3のOFFは保持される。時間を空けてVB1をOFFしても、VB3のOFFは保持される。
次に、図27に示される数値設定処理プログラム部品10Cの再利用パラメータにデバイス等が指定されたと仮定して、数値設定の機能を処理する数値設定処理ラダープログラムの動作について説明する。初期状態ではVB1はOFF状態となっており、VD3に数値を設定する処理が行われないので、VD3の数値は初期値(すなわちゼロ)となっている。数値設定を指令するデバイスであるVB1をONすれば、MOV命令によりVK2に適用された数値が、VD3に設定される。時間を空けてVB1をOFFしても、VD3の数値は保持されるが、ラダープログラムの他の箇所でVD3への数値設定が行われた場合にはその限りではない。他の箇所でVD3への数値設定が行われても、VD3がVK2の数値に保持されることを望む場合には、VB1を常にON状態に保持しておけばよい。
図41は、Mコード50のデコードの機能を処理するプログラムを部品化したMコードデコード処理プログラム部品10Dを示す図である。図41に示されるMコードでコード処理プログラム部品10Dの再利用パラメータにデバイスまたは変数(ラベル)が指定されるだけで、当該パラメータに基づいて、Mコード50のデコードの機能を処理するプログラム(プログラム部品POU)が自動的に生成される。
次に、図41に示されるMコードデコード処理プログラム部品10Dの再利用パラメータにデバイス等が指定されたと仮定して、Mコードデコード処理ラダープログラムの動作について説明する。初期状態では、VB1、VB4はいずれもOFF状態となっている。VB1がONとなり、かつ、VD2の値とVK3の値が同じであれば、VB4がONとなる。VB1がOFFとなるか、または、VD2の値とVK3の値とが異なれば、VB4がOFFとなる。
図42は、AND条件を処理するプログラムを部品化したAND条件処理プログラム部品10Eを示す図である。図42に示されるAND条件処理プログラム部品10Eの再利用パラメータにデバイスまたは変数(ラベル)が指定されるだけで、当該パラメータに基づいて、AND条件を処理するプログラム(プログラム部品POU)が自動定期に生成される。このAND条件処理は、ラダーでは非常に一般的であり、よく使われるものであるので詳細な説明は省略する。
<操作盤処理プログラムの生成>
次に、図34に示された操作盤処理プログラム生成部341(モード反転機能生成部341A等)が、図35に示されたデバイスの仕様、及び、図38に示された操作盤56の仕様を、プログラム部品10の再利用パラメータに適用しつつ、当該プログラム部品10から操作盤処理プログラムを生成する動作について説明する。
図43は、モード反転機能生成部341Aが生成した操作盤処理プログラムの一例を示す図である。以下では、モード反転機能生成部341Aが、デバイスの仕様(図35)、及び、「モード反転」に関する操作盤56の仕様(図38)を、図40に示したモード反転処理プログラム部品10Aの再利用パラメータに適用して、当該モード反転処理プログラム部品10Aから、図43に示されるモード反転制御を行うための操作盤処理プログラムを生成する動作について説明する。なお、以下、モード反転機能生成部341Aが生成する、モード反転制御を行うための操作盤処理プログラムを、「モード反転スイッチ処理プログラム」と呼ぶこともある。
図44は、モード反転機能生成部341Aの属性を示したものである。図44に係るスイッチ種別及びスイッチ動作には、操作盤56の仕様(図38)のうちモード反転に関する内容が表示されている。ここでは、「モード反転」というスイッチ種別には、「シングルブロック」及び「ドライラン」というスイッチ動作が操作盤56の仕様において設定されたことが表示されている。そして、図44に係る使用部品には、モード反転機能生成部341Aにより使用されるプログラム部品10が、モード反転処理プログラム部品10Aであることが表示されている。
図45は、モード反転機能生成部341Aがモード反転スイッチ処理プログラムを生成する際の動作を示すフローチャートである。以下、この動作を図45に即して説明する。
ステップS91にて、モード反転機能生成部341Aは、操作盤56の仕様(図38)でのスイッチ入力に設定されているデバイスアドレスを、図40に示したモード反転処理プログラム部品10Aの再利用パラメータNo.1(ここではVB1)に適用する。例えば、モード反転機能生成部341Aは、操作盤56の仕様(図38)から「モード反転」と設定された行を上から順に読み取る(ここでは1行目の「シングルブロック」を読み取る)。そして、モード反転機能生成部341Aは、「シングルブロック」のスイッチ入力に設定されているデバイスアドレス(ここではX280)を、図40に示したモード反転処理プログラム部品10Aの再利用パラメータNo.1(VB1)に適用する。これにより、図43に示されるモード反転スイッチ処理プログラムの1段目の左部分が生成される。
ステップS92にて、モード反転機能生成部341Aは、操作盤56の仕様やMコード50の仕様で設定されない内部のローカル的な1つのデバイスアドレス(すなわち、重複して使用されない任意のデバイスアドレス)を、図40に示したモード反転処理プログラム部品10Aの再利用パラメータNo.2(ここではVB2)に適用する。例えば、モード反転機能生成部341Aは、M4000を、操作盤56の仕様やMコード50の仕様で設定されないデバイスアドレスとして、図40に示したモード反転処理プログラム部品10Aの再利用パラメータNo.2(VB2)に適用する。なお、M4000番台のデバイスアドレスは、操作盤56の仕様やMコード50の仕様で設定されないデバイスアドレスであるものとする。このようなプログラム生成部34が自動的に割り付けるデバイスアドレスは、デバイス仕様保持部32に保持しておいて、デバイス仕様保持部32を参照するようにしてもよい。これにより、図43に示されるモード反転スイッチ処理プログラムの1段目の右部分、及び、2〜3段目の左部分が生成される。
ステップS93にて、モード反転機能生成部341Aは、デバイスの仕様(図35)から、操作盤56の仕様(図38)におけるスイッチ動作の欄の内容に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図40に示したモード反転処理プログラム部品10Aの再利用パラメータNo.3(ここではVB3)に適用する。例えば、図38に示される操作盤56の仕様においては、スイッチ動作の欄に「シングルブロック」が設定されているから、モード反転機能生成部341Aは、図35に示されるデバイスの仕様から、「シングルブロック」に対応するデバイスアドレス(ここではYC12)を抽出し、YC12を、図40に示したモード反転処理プログラム部品10Aの再利用パラメータNo.3(VB3)という再利用パラメータに適用する。これにより、図43に示されるモード反転スイッチ処理プログラムの2段目の中央部分、右部分、及び、3段目の右部分が生成される。
さて、以上のステップS91〜S93の説明では、モード反転機能生成部341Aが、デバイスの仕様(図35)及び操作盤56の仕様(図38)を、モード反転処理プログラム部品10Aの再利用パラメータVB1〜VB3に適用する動作について説明した。本実施の形態に係るモード反転機能生成部341Aは、この動作と並行して、同ステップS91〜S93においてデバイスコメントの出力も行う。
具体的には、ステップS91にて、モード反転機能生成部341Aは、操作盤56の仕様(図38)のスイッチ種別の文字列とスイッチ動作の文字列とを合わせた文字列を、ステップS91に係るデバイスアドレスのデバイスコメントとして付属情報ファイル9に出力する。同様に、ステップS92にて、モード反転機能生成部341Aは、操作盤56の仕様のスイッチ種別の文字列とスイッチ動作の文字列とを合わせた文字列を、ステップS92に係るデバイスアドレスのデバイスコメントとして付属情報ファイル9に出力する。ステップS93にて、モード反転機能生成部341Aは、デバイスの仕様(図35)において、ステップS93のデバイスアドレスに対応する名称の文字列を、当該デバイスアドレスのデバイスコメントとして付属情報ファイル9に出力する。これらにより得られたデバイスコメントの一覧を図46に示す。
以上のステップS91〜S93の後、ステップS94にて、モード反転機能生成部341Aは、図40に示されるプログラムコメントが必要とされている場合には、スイッチ種別の文字列と、スイッチ動作の文字列とを組み合わせて得られる文字列を、当該プログラムコメントとして適用する。例えば、モード反転機能生成部341Aは、スイッチ種別が「モード反転」という文字列、スイッチ動作が「シングルブロック」という文字列である場合には、「モード反転シングルブロック」という文字列をプログラムコメントとして作成し、ステップS91〜S93で作成したプログラムの前後に付与する。その結果、図43においては、当該プログラムの前に「開始モード反転シングルブロック」という文字列が付与され、当該プログラムの後に「終了モード反転シングルブロック」という文字列が付与されている。
ステップS95にて、モード反転機能生成部341Aは、図40に示されるジャンプ用ラベルが必要とされている場合には、他のプログラムに使用されていないプログラムポインタを選定し、選定したプログラムポインタを当該ジャンプ用ラベルとして適用する。
モード反転機能生成部341Aは、以上のステップS91〜S95の動作を、操作盤56の仕様(図38)のうち「モード反転」に関する全てのスイッチ動作に対して行う。例えば、図38に示される操作盤56の仕様では、1行目の「シングルブロック」以外に、2行目の「ドライラン」がモード反転のスイッチ動作として設定されているから、「ドライラン」についてもステップS91〜S95の動作が行われる。これにより、図43に示されるモード反転スイッチ処理プログラムの「開始モード反転ドライラン」から「終了モード反転ドライラン」までの部分が生成される。なお、図43に示される例では、M4000と重複しないM4001というデバイスアドレスが、「ドライラン」において適用されている。
ステップS96にて、モード反転機能生成部341Aは、以上のパラメータの適用がされたモード反転処理プログラム部品10Aを、モード反転スイッチ処理プログラムとする。これにより、図38に示される操作盤56の仕様からは、図43に示されるモード反転スイッチ処理プログラムが生成される。
図47は、運転モード選択機能生成部341Bが生成した操作盤処理プログラムの一例を示す図である。次に、運転モード選択機能生成部341Bが、デバイスの仕様(図35)、及び、「運転モード選択」に関する操作盤56の仕様(図38)を、図3に示した自己保持処理プログラム部品10Bの再利用パラメータに適用して、当該自己保持処理プログラム部品10Bから、図47に示される運転モード選択制御を行うための操作盤処理プログラムを生成する動作について説明する。なお、以下、運転モード選択機能生成部341Bが生成する、運転モード選択制御を行うための操作盤処理プログラムを、「運転モード選択スイッチ処理プログラム」と呼ぶこともある。また、運転モード選択機能生成部341Bは、運転モード選択スイッチ処理プログラムを生成する際に、モード反転機能生成部341Aと同様に、デバイスコメント、プログラムコメント及びジャンプ用ラベルを設定するが、これについての説明及びその結果は省略する。
図48は、運転モード選択機能生成部341Bの属性を示したものである。図48に係るスイッチ種別及びスイッチ動作には、操作盤56の仕様(図38)のうち運転モード選択に関する内容が表示されている。ここでは、「運転モード選択」というスイッチ種別には、「ジョグ」、「ハンドル」及び「メモリ」というスイッチ動作が操作盤56の仕様において設定されたことが表示されている。そして、図48に係る使用部品には、運転モード選択機能生成部341Bにより使用されるプログラム部品10が、自己保持処理プログラム部品10Bであることが表示されている。
図49は、運転モード選択機能生成部341Bが運転モード選択スイッチ処理プログラムを生成する際の動作を示すフローチャートである。以下、この動作を図49に即して説明する。
ステップS101にて、運転モード選択機能生成部341Bは、操作盤56の仕様(図38)でのスイッチ入力に設定されているデバイスアドレスを、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.1(ここではVB1)に適用する。例えば、運転モード選択機能生成部341Bは、操作盤56の仕様(図38)から「運転モード選択」と設定された行を上から順に読み取る(ここでは3行目の「ジョグ」を読み取る)。そして、運転モード選択機能生成部341Bは、「ジョグ」のスイッチ入力に設定されているデバイスアドレス(ここではX282)を、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.1(VB1)に適用する。これにより、図47に示される運転モード選択スイッチ処理プログラムの1段目の左部分が生成される。
さて、「運転モード選択」というスイッチでは、1つのスイッチ動作が操作盤56から指令されると、それまで指令されていた運転モードをキャンセルして、指令された1つのスイッチ動作の運転モードが行われる。例えば、スイッチ動作「ジョグ」が操作盤56から指令されると、それまで指令されていた「ハンドル」及び「メモリ」の運転モードをキャンセルして、「ジョグ」の運転モードが行われる。スイッチ動作「ハンドル」が操作盤56から指令されると、それまで指令されていた「ジョグ」及び「メモリ」の運転モードをキャンセルして、「ハンドル」の運転モードが行われる。スイッチ動作「メモリ」についてもこれらと同様に「メモリ」の運転モードが行われる。
そこで、ステップS102にて、運転モード選択機能生成部341Bは、運転選択モードのスイッチ動作のうち、ステップS101に係るスイッチ動作以外のスイッチ動作に関し、スイッチ入力に設定されているデバイスアドレスを、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.2(ここではVB2)に列挙して適用する。例えば、ステップS101に係るスイッチ動作が「ジョグ」である場合には、運転モード選択機能生成部341Bは、図38において「ハンドル」及び「メモリ」に関し、スイッチ入力に設定されているデバイスアドレス(ここではX283及びX284)を、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.2(VB2)に列挙して適用する。これにより、図47に示される運転モード選択スイッチ処理プログラムの1段目の中央部分が生成される。
ステップS103にて、運転モード選択機能生成部341Bは、デバイスの仕様(図35)から、操作盤56の仕様(図38)におけるスイッチ動作の欄の内容に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.3(ここではVB3)に適用する。例えば、図38に示される操作盤56の仕様においては、スイッチ動作の欄に「ジョグ」が設定されているから、運転モード選択機能生成部341Bは、図35に示されるデバイスの仕様から、「ジョグ」に対応するデバイスアドレス(ここではYC00)を抽出し、YC00を、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.3(VB3)に適用する。これにより、図47に示される運転モード選択スイッチ処理プログラムの1段目の右部分、及び、2段目が生成される。
運転モード選択機能生成部341Bは、以上のステップS101〜S103の動作を、操作盤56の仕様(図38)のうち「運転モード選択」に関する全てのスイッチ動作に対して行う。例えば、図38に示される操作盤56の仕様では、3行目の「ジョグ」以外に、4行目の「ハンドル」及び5行目の「メモリ」が運転モード選択のスイッチ動作として設定されているから、「ハンドル」及び「メモリ」のそれぞれについてもステップS101〜S103の動作が行われる。これにより、図47に示される運転モード選択スイッチ処理プログラムの3段目〜6段目が生成される。
ステップS104にて、運転モード選択機能生成部341Bは、以上のパラメータの適用がされた自己保持処理プログラム部品10Bを、運転モード選択スイッチ処理プログラムとする。これにより、図38に示される操作盤56の仕様からは、図47に示される運転モード選択スイッチ処理プログラムが生成される。
先に説明された図29は、切削オーバライド機能生成部341Cが生成した操作盤処理プログラムの一例を示す図である。次に、切削オーバライド機能生成部341Cが、デバイスの仕様(図35)、及び、「切削オーバライド」に関する操作盤56の仕様(図38)を、自己保持処理プログラム部品10B(図3)及び数値設定処理プログラム部品10C(図27)の再利用パラメータに起用して、当該自己保持処理プログラム部品10B及び数値設定処理プログラム部品10Cから、図29に示される切削オーバライド制御を行うための操作盤処理プログラムを生成する動作について説明する。なお、以下、切削オーバライド機能生成部341Cが生成する、切削オーバライド制御を行うための操作盤処理プログラムを、「オーバライドスイッチ処理プログラム」と呼ぶこともある。また、切削オーバライド機能生成部341Cは、オーバライドスイッチ処理プログラムを生成する際に、モード反転機能生成部341Aと同様に、デバイスコメント、プログラムコメント及びジャンプ用ラベルを設定するが、これについての説明及びその結果は省略する。
図50は、切削オーバラード機能生成部341Cの属性を示したものである。図50に係るスイッチ種別及びスイッチ動作には、操作盤56の仕様(図38)のうち切削オーバライドに関する内容が表示されている。ここでは、「切削オーバライド」というスイッチ種別には、「25」、「50」、「75」及び「100」というスイッチ動作が操作盤56の仕様において設定されたことが表示されている。そして、図50に係る使用部品には、切削オーバライド機能生成部341Cにより使用されるプログラム部品10が、自己保持処理プログラム部品10B及び数値設定処理プログラム部品10Cであることが表示されている。
図51は、切削オーバライド機能生成部341Cが切削オーバライドスイッチ処理プログラムを生成する際の動作を示すフローチャートである。以下、この動作を図51に即して説明する。
切削オーバライド機能生成部341Cは、ステップS111〜S113において、図3に示した自己保持処理プログラム部品10Bから、切削オーバライドスイッチ処理プログラムを生成する。
ステップS111にて、切削オーバライド機能生成部341Cは、操作盤56の仕様(図38)でのスイッチ入力に設定されているデバイスアドレスを、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.1(ここではVB1)に適用する。例えば、切削オーバライド機能生成部341Cは、操作盤56の仕様(図38)から「切削オーバライド」と設定された行を上から順に読み取る(ここでは6行目の「25」を読み取る)。そして、切削オーバライド機能生成部341Cは、「25」のスイッチ入力に設定されているデバイスアドレス(ここではX285)を、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.1(VB1)に適用する。これにより、図29に示される切削オーバライドスイッチ処理プログラムの1段目の左部分が生成される。
さて、「切削オーバライド」というスイッチでは、1つのスイッチ動作が操作盤56から指令されると、それまで指令されていた運転モードをキャンセルして、指令された1つのスイッチ動作の運転モードが行われる。例えば、スイッチ動作「25」が操作盤56から指令されると、それまで指令されていた「50」、「75」及び「100」の運転モードをキャンセルして、「25」の運転モードが行われる。スイッチ動作「50」が操作盤56から指令されると、それまで指令されていた「25」、「75」及び「100」の運転モードをキャンセルして、「50」の運転モードが行われる。スイッチ動作「75」及び「100」についてもこれらと同様に「75」及び「100」の運転モードがそれぞれ行われる。
そこで、ステップS112にて、切削オーバライド機能生成部341Cは、切削オーバライドのスイッチ動作のうち、ステップS111に係るスイッチ動作以外のスイッチ動作に関し、スイッチ入力に設定されているデバイスアドレスを、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.2(ここではVB2)に列挙して適用する。例えば、ステップS111に係るスイッチ入力が「25」である場合には、切削オーバライド機能生成部341Cは、図38において「50」、「75」及び「100」に関し、スイッチ入力に設定されているデバイスアドレス(ここではX286〜X288)を、図3に示した自己保持処理プログラム部品10Bの再利用パラメータ(VB2)に列挙して適用する。これにより、図29に示される切削オーバライドスイッチ処理プログラムの1段目の中央部分が生成される。
ステップS113にて、切削オーバライド機能生成部341Cは、操作盤56の仕様やMコード50の仕様で設定されていない内部のローカル的な1つのデバイスアドレスを、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.3(ここではVB3)に適用する。例えば、切削オーバライド機能生成部341Cは、M4002を、操作盤56の仕様やMコード50の仕様で設定されていないデバイスアドレスとして、図3に示した自己保持処理プログラム部品10Bの再利用パラメータNo.3(VB3)に適用する。これにより、図29に示される切削オーバライドスイッチ処理プログラムの1段目の右部分、及び、2段目が生成される。
次に、切削オーバライド機能生成部341Cは、ステップS114〜S116において、図27に示した数値設定処理プログラム部品10Cから、切削オーバライドスイッチ処理プログラムを生成する。
ステップS114にて、切削オーバライド機能生成部341Cは、ステップS113にて自己保持処理プログラム部品10Bの再利用パラメータNo.3(VB3)に適用したデバイスアドレスを、図27に示した数値設定処理プログラム部品10Cの再利用パラメータNo.1(VB1)に適用する。例えば、切削オーバライド機能生成部341Cは、自己保持処理プログラム部品10Bの再利用パラメータNo.3(VB3)に適用したM4002を、図27に示した数値設定処理プログラム部品10Cの再利用パラメータNo.1(VB1)に適用する。これにより、自己保持処理プログラムの処理結果が数値設定処理プログラムで受けられる、図29で示される切削オーバライドスイッチ処理プログラムの3段目の左部分が生成される。
ステップS115にて、切削オーバライド機能生成部341Cは、操作盤56の仕様(図38)でのスイッチ動作に設定されている数値の前に、「K」を加えたデバイスアドレスを、図27に示した数値設定処理プログラム部品10Cの再利用パラメータNo.2(ここではVK2)に適用する。例えば、切削オーバライド機能生成部341Cは、操作盤56の仕様(図38)における「25」というスイッチ動作に関し、K25というデバイスアドレスを、図27に示した数値設定処理プログラム部品10Cの再利用パラメータNo.2(VK2)に適用する。これにより、図29に示される切削オーバライドスイッチ処理プログラムの3段目の右部分が生成される。
ステップS116にて、切削オーバライド機能生成部341Cは、デバイスの仕様(図35)から、操作盤56の仕様(図38)におけるスイッチ種別の欄の内容に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図27に示した数値設定処理プログラム部品10Cの再利用パラメータNo.3(ここではVD3)に適用する。例えば、図38に示される操作盤56の仕様においては、スイッチ種別の欄に「切削オーバライド」が設定されているから、切削オーバライド機能生成部341Cは、図35に示されるデバイスの仕様から、「切削オーバライド」に対応するデバイスアドレス(ここではR2500)を抽出し、R2500を、図27に示した数値設定処理プログラム部品10Cの再利用パラメータNo.3(VD3)に適用する。これにより、図29に示される切削オーバライドスイッチ処理プログラムの3段目の右部分が生成される。
切削オーバライド機能生成部341Cは、以上のステップS111〜S117の動作を、操作盤56の仕様(図38)のうち「切削オーバライド」に関する全てのスイッチ動作に対して行う。例えば、図38に示される操作盤56の仕様では、6行目の「25」以外に、7行目の「50」、8行目の「75」及び9行目の「100」がスイッチ動作として設定されているから、「50」、「75」及び「100」のそれぞれについてもステップS111〜S116の動作が行われる。これにより、図29に示される切削オーバライドスイッチ処理プログラムの4段目〜12段目が生成される。
ステップS117にて、切削オーバライド機能生成部341Cは、以上のパラメータの適用がされた自己保持処理プログラム部品10B及び数値設定処理プログラム部品10Cを合わせて、切削オーバライドスイッチ処理プログラムとする。これにより、図38に示される操作盤56の仕様からは、図29に示される切削オーバライドスイッチ処理プログラムが生成される。
以上、切削オーバライド機能生成部341Cが、切削オーバライドスイッチ処理プログラムを生成する動作について説明したが、これに限ったものではなく、切削オーバライド機能生成部341Cとして、実施の形態3で図25を用いて説明された排他的選択数値設定の処理を行うプログラム階層部品を用いてもよい。この場合には、切削オーバライド機能生成部341Cは、デバイスの仕様(図35)、及び、「切削オーバライド」と設定された操作盤56の仕様(図38)に基づいて、図28に示した再利用パラメータの適用関係を生成する。
具体的には、切削オーバライド機能生成部341Cは、操作盤56の仕様(図38)から、「切削オーバライド」というスイッチ種別が設定された6行目において、スイッチ入力に設定されているデバイスアドレス(X285)を、図28に示されるようにプログラム階層部品のパラメータNo.1に適用し、スイッチ動作に設定されている数値「25」をプログラム階層部品のパラメータNo.2に適用する。そして、切削オーバライド機能生成部341Cは、M4000番台のデバイスアドレス(M4002)を、プログラム階層部品のパラメータNo.3に適用し、デバイスの仕様(図35)からスイッチ種別「切削オーバライド」に対応するデバイスアドレス(R2500)を抽出して、R2500をプログラム階層部品のパラメータNo.4に適用する。
同様に、切削オーバライド機能生成部341Cは、操作盤56の仕様(図38)から、「切削オーバライド」というスイッチ種別が設定された7行目において、スイッチ入力に設定されているデバイスアドレス(X286)を、プログラム階層部品のパラメータNo.1に適用し、スイッチ動作に設定されている数値「50」をプログラム階層部品のパラメータNo.2に適用する。そして、切削オーバライド機能生成部341Cは、M4000番台のデバイスアドレス(M4003)を、プログラム階層部品のパラメータNo.3に適用する。切削オーバライド機能生成部341Cは、操作盤56の仕様(図38)の8行目及び9行目についても同様の処理を行うことにより、図28に示した再利用パラメータの適用関係を生成する。それから、切削オーバライド機能生成部341Cは、実施の形態3で説明した動作と同じ動作を行うことにより、図29に示した切削オーバライドスイッチ処理プログラムを生成してもよい。
<Mコード処理プログラムの生成>
以上、図34に示される操作盤処理プログラム生成部341が、操作盤処理プログラムを生成する動作について説明した。次に、図34に示されるMコード処理プログラム生成部342、つまり、Mコード機能生成部342Aが、デバイスの仕様(図35)、及び、図39に示されるMコード50の仕様を、プログラム部品10の再利用パラメータに適用しつつ、当該プログラム部品から、Mコード処理プログラムを生成する動作について説明する。
図52は、以下において、Mコード機能生成部342Aが生成したMコード処理プログラムの一例を示す図である。図52に示されるMコード処理プログラムは、Mコード50のデコード処理プログラムLPAと、Mコード50の機能処理プログラムLPB,LPC,LPDと、Mコード50の完了処理プログラムLPEとから構成されている。
図53は、Mコード機能生成部342Aの属性を示したものである。図53に係る使用部品には、Mコード機能生成部342Aに使用されるプログラム部品10が、Mコードデコード処理プログラム部品10D、自己保持処理プログラム部品10B、AND条件処理プログラム部品10E、Mコード完了処理プログラム部品10Fであることが表示されている。
図54は、Mコード機能生成部342Aが、デコード処理プログラムを生成する動作を示すフローチャートである。以下、この動作を図54に即して説明する。
本実施の形態においては、ステップS121にて、Mコード機能生成部342Aは、図41に示したMコードデコード処理プログラム部品10Dを用いて、図52に示されるMコード50のデコード処理プログラムLPAを生成する。ステップS122にて、Mコード機能生成部342Aは、図3に示した自己保持処理プログラム部品10B、及び、図42に示したAND条件処理プログラム部品10Eを用いて、図52に示される各Mコード50の機能処理プログラムLPB,LPC,LPDを生成する。ステップS123にて、Mコード機能生成部342Aは、図18に示したMコード完了処理プログラム部品10Fを用いて、図52に示されるMコード50の完了処理プログラムLPEを生成する。ステップS124にて、Mコード機能生成部342Aは、ステップS121〜S123で生成したプログラムを合わせて、図52に示されるMコード処理プログラムを生成する。
以下、Mコード機能生成部342Aが、Mコード50のデコード処理プログラムLPA、機能処理プログラムLPB,LPC,LPD、及び、完了処理プログラムLPEを生成する動作について詳細に説明する。まず、Mコード機能生成部342Aが、Mコード50のデコード処理プログラムLPAを生成する動作について説明する。
図55は、Mコード機能生成部342Aが、図41に示したMコードデコード処理プログラム部品10Dを用いて、Mコード50のデコード処理プログラムLPAを生成する動作を示すフローチャートである。本実施の形態では、Mコード機能生成部342Aは、Mコード50の仕様(図39)の各行の設定に対して、上から順に、図55に示される各処理を行う。ここでは、まず、Mコード機能生成部342Aが、Mコード50の仕様(図39)のM3の設定に対して処理を行うことにより、図52に示されるデコード処理プログラムLPAの1段目を生成する動作について説明する。
ステップS131にて、Mコード機能生成部342Aは、デバイスの仕様(図35)から、Mコードストローブに対応するデバイスアドレス(ここではXC60)を抽出し、当該デバイスアドレスを、図41に示したMコードデコード処理プログラム部品10Dの再利用パラメータNo.1(ここではVB1)に適用する。
ステップS132にて、Mコード機能生成部342Aは、デバイスの仕様(図35)から、Mコードデータに対応するデバイスアドレス(ここではR504)を抽出し、当該デバイスアドレスを、図41に示したMコードデコード処理プログラム部品10Dの再利用パラメータNo.2(ここではVD2)に適用する。
ステップS133にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、Mコードの欄に設定されたMコード番号(ここではM3)の数値(ここでは3)の前にKを加えて文字列(K3)を生成し、当該文字列を、図41に示したMコードデコード処理プログラム部品10Dの再利用パラメータNo.3(ここではVK3)に適用する。
ステップS134にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、Mコードの欄に設定されたMコード番号(ここではM3)を、そのままデバイスアドレスとして、図41に示したMコードデコード処理プログラム部品10Dの再利用パラメータNo.4(ここではVB4)に適用する。
以上の動作により、Mコード50の仕様(図39)のM3の設定に対して、図52に示されるデコード処理プログラムLPAの1段目が生成される。Mコード機能生成部342Aは、以上のステップS131〜S134の動作を、Mコード50の仕様(図39)のM4の設定、M5の設定、…と設定がなくなるまで順に行う。これにより、図52示されるデコード処理プログラムLPAの2〜4段目が生成される。
ステップS135にて、Mコード機能生成部342Aは、以上のパラメータの適用がされたMコードデコード処理プログラム部品10Dを、デコード処理プログラムとする。これにより、図39に示されるMコード50の仕様からは、図52に示されたデコード処理プログラムLPAが生成される。
次に、Mコード機能生成部342Aが、Mコード50の機能処理プログラムLPB,LPC,LPDを生成する動作について説明する。
図56は、Mコード機能生成部342Aが、各Mコード50の機能処理プログラムを生成する際の動作を示すフローチャートである。本実施の形態では、Mコード機能生成部342Aは、Mコード50の仕様(図39)の各行の設定に対して、上から順に、図56に示される処理を行う。
ステップS141にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)での処理の対象としている行において、機能出力が設定されているかを判定する。Mコード機能生成部342Aは、機能出力が設定さていると判定した場合には、ステップS142に進み、そうでない場合には、ステップS145に進む。例えば、図39に示される設定においては、M3,M4,M30の設定においては機能出力が設定されているからステップS142に進み、M5の設定においては機能出力が設定されていないからステップS145に進む。
ステップS142にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)での処理の対象としている行において、機能キャンセルが設定されているかを判定する。Mコード機能生成部342Aは、機能キャンセルが設定されていると判定した場合には、ステップS143に進み、そうでない場合には、ステップS144に進む。例えば、図39のような設定においては、M3,M4の設定においては機能キャンセルが設定されているからステップS143に進み、M30の設定においては機能キャンセルが設定されていないからステップS144に進む。
ステップS143においては、Mコード機能生成部342Aは、Mコード50の仕様(図39)において処理の対象としている行の設定と、自己保持処理プログラム部品10Bとに基づいて、Mコード50の機能処理プログラムを生成する。例えば、Mコード機能生成部342Aは、図39に示されたMコード50の仕様のM3,M4の設定と、図3に示された自己保持処理プログラム部品10Bとに基づいて、図52に示される機能処理プログラムLPB,LPCをそれぞれ生成する。このステップS143における動作については、後で詳細に説明する。その後、Mコード50の仕様(図39)において、現在処理の対象となっている行の下の設定を処理対象として、ステップS141に戻る。
ステップS144においては、Mコード機能生成部342Aは、Mコード50の仕様(図39)において処理の対象としている行の設定と、AND条件処理プログラム部品10Eとに基づいて、Mコード50の機能処理プログラムを生成する。例えば、Mコード機能生成部342Aは、図39に示されたMコード50の仕様のM30の設定と、図42に示されたAND条件処理プログラム部品10Eとに基づいて、図52に示される機能処理プログラムLPDを生成する。このステップS144における動作については、後で詳細に説明する。その後、Mコード50の仕様(図39)において、現在処理の対象となっている行の下の設定を処理対象として、ステップS141に戻る。
ステップS145にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)において処理の対象としている行の設定に対しては、Mコード50の機能処理プログラムを生成しない。例えば、図39に示されたMコード50の仕様のM5の設定に対しては、Mコード50の機能処理プログラムは生成されない。したがって、図52に示されるように、Mコード50の仕様のM3,M4の設定に対応する機能処理プログラムLPB,LPCの下には、Mコード50の仕様のM30の設定に対応する機能処理プログラムLPDが生成されることになる。ステップS145の後、Mコード50の仕様(図39)において、現在処理の対象となっている行の下の設定を処理対象として、ステップS141に戻る。
次に、上述のステップS143の動作について説明する。
図57は、上述のステップS143、つまり、処理の対象としている行に機能キャンセルが設定されている場合に、Mコード機能生成部342Aが機能処理プログラムを生成する際の動作を示すフローチャートである。以下、Mコード50の仕様(図39)のM3の設定に基づいて、Mコード機能生成部342Aが、図52に示される機能処理プログラムLPBを生成する動作を例にして説明する。
まず、ステップS151にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、Mコードの欄に設定されたMコード番号(ここではM3)を、そのままデバイスアドレスとして、図3に示された自己保持処理プログラム部品10Bの再利用パラメータNo.1(ここではVB1)に適用する。
ステップS152にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)の機能開始の欄において、「ブロック軸移動完了後」が設定されているかを判定する。Mコード機能生成部342Aは、「ブロック軸移動完了後」が設定されていると判定した場合にはステップS153に進み、そうでない場合にはステップS153を行わずにステップS154に進む。なお、図39に示されるM3の設定では、機能開始の欄においてブロック軸移動完了後が設定されていないから、ステップS152の後、ステップS153が行われずに、ステップS154が行われることになる。
ステップS153にて、Mコード機能生成部342Aは、デバイスの仕様(図35)から、移動指令完了に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図3に示された自己保持処理プログラム部品10Bの再利用パラメータNo.1(ここではVB1)に列挙して適用する。仮に、図39に示されるM3の設定においてステップS153が行われると、Mコード機能生成部342Aは、デバイスの仕様(図35)から、移動指令完了に対応するXC18を抽出し、当該デバイスアドレスを、自己保持処理プログラム部品10Bの再利用パラメータNo.1(VB1)に適用されたM3に直列的に追加することになる。
ステップS154にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、機能キャンセルの欄に設定されたMコード番号(ここではM4,M5)を、そのままデバイスアドレスとして、図3に示された自己保持処理プログラム部品10Bの再利用パラメータNo.2(ここではVB2)に適用する。
ステップS155にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、機能出力に設定されたデバイスアドレス(ここではY1898)を、図3に示された自己保持処理プログラム部品10Bの再利用パラメータNo.3(ここではVB3)に適用する。
ステップS156にて、Mコード機能生成部342Aは、以上のパラメータの適用がされた自己保持処理プログラム部品10Bを、機能キャンセルがある機能処理プログラムとする。これにより、図39に示されるMコード50の仕様のM3の設定に基づいて、図52に示される機能処理プログラムLPBが生成される。Mコード機能生成部342Aは、Mコード50の仕様(図39)のM4の設定にも同様の動作を行うことにより、図52に示される機能処理プログラムLPCが生成される。
次に、上述のステップS144の動作について説明する。
図58は、上述のステップS144、つまり、処理の対象としている行に機能キャンセルが設定されていない場合に、Mコード機能生成部342Aが機能処理プログラムを生成する際の動作を示すフローチャートである。以下、Mコード50の仕様(図39)のM30の設定に基づいて、Mコード機能生成部342Aが、図52に示される機能処理プログラムLPDを生成する動作について説明する。
まず、ステップS161にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、Mコードの欄に設定されたMコード番号(ここではM30)を、そのままデバイスアドレスとして、図42に示されたAND条件処理プログラム部品10Eの再利用パラメータNo.1(ここではVB1)に適用する。
ステップS162にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)の機能開始の欄において、「ブロック軸移動完了後」が設定されているかを判定する。Mコード機能生成部342Aは、「ブロック軸移動完了後」が設定されていると判定した場合にはステップS163に進み、そうでない場合にはステップS163を行わずにステップS164に進む。なお、図39に示されるM30の設定では、機能開始の欄においてブロック軸移動完了後が設定されているから、ステップS162の後にステップS163が行われてから、ステップS164が行われることになる。
ステップS163にて、Mコード機能生成部342Aは、デバイスの仕様(図35)から、移動指令完了に対応するデバイスアドレスを抽出し、当該デバイスアドレスを、図42に示されたAND条件処理プログラム部品10Eの再利用パラメータNo.1(ここではVB1)に列挙して適用する。図39に示されるM30の設定においてステップS163が行われると、Mコード機能生成部342Aは、デバイスの仕様(図35)から、移動指令完了に対応するXC18を抽出し、当該デバイスアドレスを、AND条件処理プログラム部品10Eの再利用パラメータNo.1(ここではVB1)に適用されたM30に直列的に追加することになる。
ステップS164にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、機能出力に設定されたデバイスアドレス(ここではYC1A)を、図42に示されたAND条件処理プログラム部品10Eの再利用パラメータNo.2(ここではVB2)に適用する。
ステップS165にて、Mコード機能生成部342Aは、以上のパラメータの適用がされたAND条件処理プログラム部品10Eを、機能キャンセルがない機能処理プログラムとする。これにより、図39に示されるMコード50の仕様のM30の設定に基づいて、図52に示される機能処理プログラムLPDが生成される。
次に、Mコード機能生成部342Aが、Mコード50の完了処理プログラムLPEを生成する動作について説明する。
図59は、Mコード機能生成部342Aが、図18に示したMコード完了処理プログラム部品10Fを用いて、Mコード50の完了処理プログラムを生成する際の動作を示すフローチャートである。
ステップS171にて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、Mコードの欄に設定された全てのMコード番号(ここでは、M3,M4,M5,M30)のそれぞれを、そのままデバイスアドレスとして、図18に示したMコード完了処理プログラム部品10FのパラメータNo.1に相当する、図17に示したAND条件処理要素部品のパラメータNo.1に適用する。以下、このステップS171をステップS171AとステップS171Bに分けて詳細に説明する。
ステップS171Aにて、Mコード機能生成部342Aは、Mコード50の仕様(図39)から、1行目のMコードの欄に設定されたMコード番号を、そのままデバイスアドレスとして、図17に示したAND条件処理要素部品の再利用パラメータNo.1(ここではVB1)に適用する。そして、ステップS171Bにて、Mコード機能生成部342Aは、1行目の機能完了にデバイスアドレスが設定されている場合には、当該デバイスアドレスを、図17に示したAND条件処理要素部品の再利用パラメータNo.1(ここではVB1)に列挙して(直列的に追加して)適用し、ステップS171Aに戻って2行目以降の設定についても1行目と同様の動作を行っていく。一方、ステップS171Bにて、Mコード機能生成部342Aは、1行目の機能完了にデバイスアドレスが設定されていない場合には、そのまま、ステップS171Aに戻って2行目以降の設定についても1行目と同様の動作を行っていく。
例えば、図39に示される1行目の設定では、Mコードの欄に設定されたMコード番号はM3であるから、当該M3がAND条件処理要素部品のVB1に適用される。そして、同1行目の設定では、機能完了の欄にX188Dというデバイスアドレスが設定されているから、当該X188Dが、AND条件処理要素部品に適用されたM3に列挙されて(直列的に追加されて)適用される。これにより、図52に示される完了処理プログラムLPEの1段目の左部分(M3とX188D)が生成される。
次に、図39に示される2行目の設定では、Mコードの欄に設定されたMコード番号はM4であるから、当該M4がAND条件処理要素部品のVB1に適用される。そして、同2行目の設定では、機能完了の欄にX188Dというデバイスアドレスが設定されているから、当該X188Dが、AND条件処理要素部品に適用されたM4に列挙されて(直列的に追加されて)適用される。そして、Mコード機能生成部342Aは、こうして生成されたプログラムを、1行目の設定に基づいて得られたプログラム(M3とX188D)の下に並列的に追加する。これにより、図52に示される完了処理プログラムLPEの2段目(M4とX188D)が生成される。
同様に、図39に示される3行目の設定では、Mコードの欄に設定されたMコード番号はM5であるから、当該M5がAND条件処理要素部品のVB1に適用される。そして、同3行目の設定では、機能完了の欄にX188Cというデバイスアドレスが設定されているから、当該X188Cが、AND条件処理要素部品に適用されたM5に列挙されて(直列的に追加されて)適用される。そして、Mコード機能生成部342Aは、こうして生成されたプログラムを、2行目の設定に基づいて得られたプログラム(M4とX188D)の下に並列的に追加する。これにより、図52に示される完了処理プログラムLPEの3段目(M5とX188C)が生成される。
同様に、図39に示される4行目の設定では、Mコードの欄に設定されたMコード番号はM30であるから、当該M30がAND条件処理要素部品のVB1に適用される。そして、同4行目の設定では、機能完了の欄にデバイスアドレスが設定されていないから、Mコード機能生成部342Aは、当該M30がAND条件処理要素部品に適用されて得られるプログラムを、3行目の設定に基づいて得られたプログラム(M5とX188C)の下に追加する。これにより、図52に示される完了処理プログラムLPEの4段目(M30)が生成される。
ステップS172にて、Mコード機能生成部342Aは、デバイスの仕様(図35)から、Mコード完了に対応するデバイスアドレス(ここではYC1E)を抽出し、当該デバイスアドレスを、図18に示されたMコード完了処理プログラム部品10Fの再利用パラメータNo.2(ここではYC1E)を適用する。これにより、図52に示される完了処理プログラムLPEの1段目の右側が生成される。
ステップS173にて、Mコード機能生成部342Aは、以上のパラメータの適用がされたMコード完了処理プログラム部品10Fを、Mコード50の完了処理プログラムとする。これにより、図39に示されるMコード50の仕様からは、図52に示される完了処理プログラムLPEが生成される。
<まとめ>
以上、操作盤処理プログラム生成部341が操作盤処理プログラムを生成する動作と、Mコード処理プログラム生成部342がMコード処理プログラムを生成する動作について、それらプログラムがラダープログラムである場合を例にして説明した。プログラム編集部6は、操作盤処理プログラム生成部341が生成した操作盤処理プログラムと、Mコード処理プログラム生成部342が生成したMコード処理プログラムとを合わせて、CNC工作機械46のプログラムとする。このとき、1本のプログラムとして生成してもよいし、プログラムを部品単位で分割して生成してもよい。
部品単位で分割して生成する場合には、モード反転スイッチ処理、運転モード選択スイッチ処理、切削オーバライドスイッチ処理、Mコードデコード処理、Mコード機能処理、Mコード完了処理のようにプログラム生成を構成するプログラム部品単位で分割してもよいし(この場合6つの分割プログラムが生成される)、操作盤処理、Mコード処理のようにまとめてもよい(この場合2つの分割プログラムが生成される)。また、分割プログラムを同じファイルで生成してもよいし、分割プログラムごとに別ファイルに分けて生成してもよい。
プログラム編集部6で生成されるプログラムがラダープログラムの場合には、操作盤処理プログラムとMコード処理プログラムと合わせてなるラダープログラムの最後にEND処理命令を追記して、CNC工作機械46のラダープログラムとする。このとき、図60に示されるように1本のラダープログラムとして生成してもよいし、図61に示されるようにラダープログラムを部品単位で分割して生成してもよい。部品単位で分割して生成する場合には、モード反転スイッチ処理、運転モード選択スイッチ処理、切削オーバライドスイッチ処理、Mコードデコード処理、Mコード機能処理、Mコード完了処理のようにプログラム生成を構成するプログラム部品単位で分割してもよいし(この場合6つの分割ラダープログラムが生成される)、操作盤処理、Mコード処理のようにまとめてもよい(この場合2つの分割ラダープログラムが生成される)。なお、部品単位で分割する場合には、ラダープログラムの先頭に分割プログラムをコールするCALL命令からなるラダープログラムを生成する必要があり、また、分割プログラムの先頭にはジャンプ用ラベルであるプログラムポインタ、終端にはRET命令を生成する必要があるが、これらを生成する場合についても、本実施の形態で説明した技術を用いることが可能である。また、分割ラダープログラムを同じファイルで生成してもよいし、分割ラダープログラムごとに別ファイルに分けて生成してもよい。
ラダープログラム生成で使用したデバイスアドレスには、デバイスコメントを付与しておけば、ラダープログラムを確認するときに便利である。例えば、操作盤56の場合、スイッチ入力に設定されたデバイスアドレスに対して、スイッチ種別で選択された文字列とスイッチ動作で選択/設定された文字列を結合してデバイスコメントとして生成するように、操作盤処理プログラム生成部341を構成すればよい。また、Mコード50の場合、Mコード50と同じデバイスアドレスに対しては、機能名に設定された文字列をデバイスコメントとして付与し、機能出力に設定されたデバイスには、機能名に設定された文字列と機能出力に設定された文字列を結合してデバイスコメントとして生成するようにMコード処理プログラム生成部342を構成するなどすればよい。
具体的な例では、図45を用いて説明した、モード反転機能生成部341Aがプログラム生成の過程でデバイスコメントを合わせて生成する手順の通りであり、この手順によって、図43に示したデバイスコメントが生成される。
以上のような本実施の形態に係るプログラム作成支援装置1によれば、仕様記述ファイル30に記述されている仕様、及び、仕様設定部31で設定された仕様を、プログラム部品10の再利用時に適用すべきパラメータまたは列挙して適用すべきパラメータに適用しつつ、当該プログラム部品10から、コントローラやマイコンで実行される計測監視制御プログラムを生成する。したがって、プログラムがほぼ自動的に生成されることから、当該仕様に記述された機能で過不足なく及び不具合なく動作するプログラムを作成することができるとともに、プログラム作成における労力を軽減することができる。
この発明は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。