(57)【要約】【課題】異なる機種間で、より簡易に制御プログラムを流用可能とすること。【解決手段】本発明のＰＬＣは、プログラム作成支援装置から制御プログラムを含む設定情報を取得する設定情報取得手段と、取得した制御プログラムに記述された特定の命令に用いられるパラメータに対し、ＰＬＣが実行可能なパラメータ値に関するパラメータ値情報を記憶するパラメータ値情報記憶手段と、前記パラメータ値情報記憶手段に記憶されたパラメータ値情報に基づいて、前記特定の命令の実行が可能か否かを判断する判断手段と、前記判断手段の判断結果に基づいて、前記設定情報取得手段により取得した制御プログラムを実行する制御プログラム実行手段と、を備える。【選択図】図３
2014052673.tif 000002
【特許請求の範囲】
【請求項１】
外部に接続されるプログラム作成支援装置から制御プログラムを含む設定情報を取得可能であって、取得した制御プログラムに基づき動作するプログラマブルロジックコントローラにおいて、
前記プログラム作成支援装置から設定情報を取得する設定情報取得手段と、
前記設定情報取得手段により取得した制御プログラムに記述された特定の命令に用いられるパラメータに対し、前記プログラマブルロジックコントローラが実行可能なパラメータ値に関するパラメータ値情報を記憶するパラメータ値情報記憶手段と、
前記パラメータ値情報記憶手段に記憶されたパラメータ値情報に基づいて、前記特定の命令の実行が可能か否かを判断する判断手段と、
前記判断手段の判断結果に基づいて、前記設定情報取得手段により取得した制御プログラムを実行する制御プログラム実行手段と、
を備えたプログラマブルコントローラ。
【請求項２】
前記制御プログラム実行手段は、前記判断手段により実行可能と判断された特定の命令については処理対象に含めて制御プログラムを実行し、前記判断手段により実行不可能と判断された特定の命令については処理対象から除外して制御プログラムを実行することを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項３】
前記判断手段は、前記設定情報取得手段により取得した制御プログラムの実行を開始する前に、前記特定の命令が実行可能か否かを判断することを特徴とする請求項１又は２のいずれかに記載のプログラマブルコントローラ。
【請求項４】
前記制御プログラムの実行形式への変換処理が行われる際に、前記判断手段により実行不可能と判断された特定の命令を処理対象から除外する無効化処理を行う無効化処理手段と、を備え、
前記制御プログラム実行手段は、前記無効化処理手段による無効化処理が行われた後に制御プログラムを実行することを特徴とする請求項３記載のプログラマブルコントローラ。
【請求項５】
前記制御プログラムの中間コードを実行形式のコードに変換するコード変換手段を備え、
前記無効化処理手段は、前記コード変換手段による変換処理が行われる際に前記無効化処理を行うことを特徴とする請求項４記載のプログラマブルコントローラ。
【請求項６】
前記判断手段は、前記設定情報取得手段により取得した制御プログラムに記述された個々の命令を実行する際に、前記特定の命令が実行可能か否かを判断することを特徴とする請求項１又は２のいずれかに記載のプログラマブルコントローラ。
【請求項７】
前記パラメータ値情報は、他機種のプログラマブルコントローラが実行可能なパラメータ値に関する情報を含み、
前記判断手段は、
前記パラメータ値情報に基づいて、自機種及び他機種の双方が前記特定の命令の実行が可能か否かを判断し、
前記判断手段が、自機種及び他機種の双方が前記特定の命令を実行できないと判断した場合にエラー終了する、
ことを特徴とする請求項１乃至６のいずれか１項に記載のプログラマブルコントローラ。
【請求項８】
請求項１に記載のプログラマブルコントローラに接続可能なプログラム作成支援装置であって、
ユーザの操作に基づいて、制御プログラムを編集する編集手段と、
前記編集手段で編集された制御プログラムについて、該制御プログラムを実行させるプログラマブルコントローラの機種変更指示を受け付ける受付手段と、
前記機種変更指示を受け付けた場合に、前記制御プログラムに記述された特定の命令に用いられるパラメータに対し、その機種のプログラマブルコントローラが実行できないパラメータ値を前記制御プログラムから検索して報知する報知手段と、
を備えたことを特徴とするプログラム作成支援装置。
【請求項９】
請求項１に記載のプログラマブルコントローラに接続可能なプログラム作成支援装置であって、
ユーザの操作に基づいて、制御プログラムを編集する編集手段と、
前記編集手段により編集された制御プログラムを含む設定情報をプログラマブルコントローラに送信する手段と、を備え、
前記編集手段は、
制御プログラムを実行するプログラマブルコントローラの機種を条件とした処理の定義を許容する、
ことを特徴とするプログラム作成支援装置。
【請求項１０】
請求項１に記載のプログラマブルコントローラに接続可能なプログラム作成支援装置を、
ユーザの操作に基づいて、制御プログラムを編集する編集手段、
前記編集手段で編集された制御プログラムについて、該制御プログラムを実行させるプログラマブルコントローラの機種変更指示を受け付ける受付手段、
前記機種変更指示を受け付けた場合に、前記制御プログラムに記述された特定の命令に用いられるパラメータに対し、その機種のプログラマブルコントローラが実行できないパラメータ値を前記制御プログラムから検索して報知する報知手段、
として機能させるプログラム。
【請求項１１】
請求項１に記載のプログラマブルコントローラに接続可能なプログラム作成支援装置を、
ユーザの操作に基づいて、制御プログラムを編集する編集手段、
前記編集手段により編集された制御プログラムを含む設定情報をプログラマブルコントローラに送信する手段、
として機能させるプログラムであり、
前記編集手段は、
制御プログラムを実行するプログラマブルコントローラの機種を条件とした処理の定義を許容する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラマブルコントローラに関する。
【背景技術】
【０００２】
工場等に設置される各種のアクチュエータを統括的に制御するための制御装置として、プログラマブルコントローラ（ＰＬＣ）が知られている。ラダープログラムに代表されるＰＬＣの制御プログラムは、プログラム支援ソフトウエアがインストールされたパソコン等において行われる（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２８２３６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年のＰＬＣには多様な機能が搭載されており、制御プログラムも長文化、大規模化する傾向にある。そこで、制御プログラムの開発効率を向上するため、特定の機種用に作成した制御プログラムを、該機種の一部の機能を除いて機能が共通している他機種に流用したい場合がある。しかし、この場合であっても、異なる機能に関する規定について制御プログラムの修正を必要とするため、制御プログラムの流用による開発効率の向上効果が薄れることになる。
【０００５】
本発明の目的は、異なる機種間で、より簡易に制御プログラムを流用可能とすることにある。
【課題を解決するための手段】
【０００６】
本発明によれば、外部に接続されるプログラム作成支援装置から制御プログラムを含む設定情報を取得可能であって、取得した制御プログラムに基づき動作するプログラマブルロジックコントローラにおいて、前記プログラム作成支援装置から設定情報を取得する設定情報取得手段と、前記設定情報取得手段により取得した制御プログラムに記述された特定の命令に用いられるパラメータに対し、前記プログラマブルロジックコントローラが実行可能なパラメータ値に関するパラメータ値情報を記憶するパラメータ値情報記憶手段と、前記パラメータ値情報記憶手段に記憶されたパラメータ値情報に基づいて、前記特定の命令の実行が可能か否かを判断する判断手段と、前記判断手段の判断結果に基づいて、前記設定情報取得手段により取得した制御プログラムを実行する制御プログラム実行手段と、を備えたプログラマブルコントローラが提供される。
【発明の効果】
【０００７】
本発明によれば、異なる機種間で、より簡易に制御プログラム（例えばラダープログラム）を流用可能とすることができる。より詳細には、外部接続されるプログラム作成支援装置から取得したラダープログラムに記述された特定の命令語に用いられるパラメータに対し、プログラマブルロジックコントローラが実行可能なパラメータ値に関するパラメータ値情報を記憶しておき、このパラメータ値情報に基づいて、特定の命令語の実行が可能か否かを判断し、その判断結果に基づいてラダープログラムを実行する。したがって、例えば、特定の命令語を実行可能な機種を制御するための制御プログラムを、特定の命令語を実行不可能な機種を制御するための制御プログラムに流用することができ、派生開発を簡素化することができ、ひいてはユーザの利便性を高めることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係るプログラマブルコントローラの外観図。
【図２】図１のプログラマブルコントローラ及び支援装置のブロック図。
【図３】（Ａ）及び（Ｂ）は支援装置の処理例を示すフローチャート、（Ｃ）はパラメータ値情報の例を示す図。
【図４】支援装置における編集画面例を示す図。
【図５】支援装置における報知例を示す図。
【図６】プログラマブルコントローラの機能ブロック図。
【図７】（Ａ）及び（Ｂ）はプログラマブルコントローラの処理例を示すフローチャート。
【図８】プログラマブルコントローラの処理例を示すフローチャート。
【図９】プログラマブルコントローラの処理例を示すフローチャート。
【図１０】コントロールリレーの定義例を示す図。
【発明を実施するための形態】
【０００９】
＜第１実施形態＞
＜構成例＞
図１は本発明の一実施形態に係るプログラマブルコントローラ１００の外観図である。プログラマブルコントローラ１００はいわゆるＣＰＵユニットを構成し、その筐体上部には端子台１が設けられている。端子台１は複数の出力端子及び複数の入力端子を含む。出力端子には出力機器が、入力端子には入力機器が、それぞれ接続可能である。出力機器にはリレー、ソレノイド、モータ等のアクチュエータ、或いは、アクチュエータのドライバが含まれる。入力機器にはセンサ、或いは、センサの信号処理回路が含まれる。なお、本実施例では、「制御プログラム」の一例としてラダープログラムを説明しているが、その他のプログラム（プログラミング言語）についても本発明は適用可能である。
【００１０】
接続部２は、拡張ユニット（不図示）を接続するための拡張バスである。図１では接続部２は、端子保護用のカバー部材２ａで覆われており、カバー部材２ａを取り外すことで露出する。拡張ユニットには更に拡張ユニットを接続することが可能であり、接続部２は複数の拡張ユニットを直列的に接続することが可能である。
【００１１】
拡張ユニットには、出力機器としてのアクチュエータのドライブユニット等が、入力機器としてのセンサユニット等が、それぞれ含まれる。
【００１２】
プログラマブルコントローラ１００の筐体正面には表示部３、操作部４、接続部５が設けられている。表示部３はデバイス情報等、各種の情報を表示可能である。操作部４は複数のボタンから構成され、表示部３の表示内容の切り替えなど、ユーザの指示をプログラマブルコントローラ１００に対して手動入力可能となっている。接続部５には、プログラマブルコントローラ１００と外部機器との有線通信を可能とする通信ケーブルが接続される。
【００１３】
図２はプログラマブルコントローラ１００、及び、外部機器としてのプログラム作成支援装置２００（以下、支援装置２００という。）のブロック図である。支援装置２００は、例えば、パソコンであり、ユーザによる制御プログラムの作成を支援する作成支援プログラムがインストールされている。
【００１４】
支援装置２００は、制御部５０を備える。制御部５０はＣＰＵ５１、記憶部５２、ＩＦ（インタフェース）部５３を含む。記憶部５２は、例えば、ＲＯＭ、ＲＡＭ、ハードディスクであり、上記の作成支援プログラムはこの記憶部５２に格納可能である。ＩＦ部５３は、例えば、表示部６０、操作部６１に対するＩ／Ｏインタフェース、プログラマブルコントローラ１００との通信のための通信インタフェースを含む。表示部６０はユーザに情報を表示する。操作部６１は、例えば、キーボード、マウス等である。
【００１５】
プログラマブルコントローラ１００は、制御部１０、記憶部２０、カウンタ３０及びパルス信号出力回路３１、を含む。制御部１０は例えば汎用の１チップマイコンであり、ＣＰＵ１１、記憶部１２、ＩＦ部１３を含む。記憶部１２は、例えば、ＲＯＭ、ＲＡＭである。ＩＦ部１３は、例えば、表示部３、操作部４に対するＩ／Ｏインタフェース、支援装置２００との通信のための通信インターフェースを含む。
【００１６】
記憶部２０は、本実施形態の場合、フラッシュＲＯＭ２１と、ＳＤＲＡＭ（シンクロナスダイナミックＲＡＭ）２２と、を含むが、他の種類のメモリでもよく、１つのメモリでもよい。フラッシュＲＯＭ２１には、例えば、支援装置２００からダウンロードされる制御プログラム（中間コード）及び後述するパラメータ値情報を含む設定情報、後述する各処理のプログラム等が格納される。また、中間コードをオブジェクトコードにコンパイルするプログラムも格納可能である。
【００１７】
ＳＤＲＡＭ２２には、例えば、実行形式の制御プログラムが格納される。記憶部２０はデバイスとしても利用可能であるが、記憶部１２をデバイスとして利用することで、デバイス情報の読み書き時間を短縮できる。
【００１８】
なお、デバイス情報とは、入力機器からの入力状態、出力機器への出力状態およびラダープログラム上で設定される内部リレー（補助リレー）、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイスとは、デバイス情報を格納するために設けられたメモリ上の領域を指す名称である。
【００１９】
制御動作中、ＣＰＵ１１は、ＳＤＲＡＭ２２に記憶された実行形式の制御プログラムを読み出し、実行する。ＣＰＵ１１は、例えば、入力端子からの情報を取得し、デバイス情報を更新する（入力リフレッシュ）。すなわち、入力端子から、入力機器からの入力状態を示すデバイス情報（ＯＮ／ＯＦＦ情報など）を取得し、記憶部１２においてデバイス情報を更新する（既に記憶されている入力機器用のデバイス情報を上書きする）。その後、制御プログラムを１スキャン実行しつつ、その中で記憶部１２のデバイス情報を更新する。すなわち、制御プログラムの実行結果に基づいて、出力機器への出力状態を示すデバイス情報（ＯＮ／ＯＦＦ情報など）を更新する。
【００２０】
そして、更新後のデバイス情報のうち、出力端子を介して接続される出力機器用のデバイス情報を出力端子から出力する（出力リフレッシュ）。その後、拡張ユニットとの通信処理等の付随処理（ＥＮＤ処理）が行われる。これらの処理を繰り返していくことで、制御が実行されることになる。このように、プログラマブルコントローラ１００のＣＰＵ１１は、入力リフレッシュ⇒制御プログラムの１スキャン実行⇒出力リフレッシュ⇒付随処理を一連の処理（１周期、１スキャンタイム）として、何度も繰り返し実行していく。
【００２１】
カウンタ３０は入力機器から送られてくる周期信号（例えばパルス信号）をカウントするカウンタであり、比較的高速（例えば１００ｋＨｚ）の周期信号をカウントする。このようなカウンタを設けることで、ＣＰＵ１１がこのようなカウントを行うことを必要とせず、ＣＰＵ１１の処理負担を軽減して全体として処理速度を向上できる。また、ＣＰＵユニットがこのようなカウンタを備えたことで、カウンタ機能を有する拡張ユニットを別途準備する必要がない。カウンタ３０は、例えば、ＣＰＵ１１からカウント開始指示を受信した場合にカウントを開始し、指定されたカウント値に達すると、特定情報としてカウント完了信号をデバイスを介さずに出力する。図中、破線矢印は制御部１０が出力するデータのうち、制御指令に関するものを示している。
【００２２】
パルス信号出力回路３１は周期信号としてパルス信号を出力する。パルス信号は例えば被制御対象の位置決め制御に利用される。このような出力回路を設けることで、ＣＰＵ１１がパルス出力処理を行うことを必要とせず、ＣＰＵ１１の処理負担を軽減して全体として処理速度を向上できる。また、ＣＰＵユニットがこのような出力回路を備えたことで、パルス信号出力機能を有する拡張ユニットを別途準備する必要がない。パルス信号出力回路３１は、例えば、ＣＰＵ１１から出力開始指示を受信した場合に特定情報としてデバイスを介さずにパルス信号の出力を開始し、出力停止指示を受信した場合に出力を停止する。
【００２３】
＜処理例＞
次に、プログラマブルコントローラ１００のＣＰＵ１１が実行する処理例、及び、支援装置２００のＣＰＵ５１が実行する処理例、について説明する。まず、支援装置２００の処理例について説明する。
【００２４】
＜支援装置の処理例＞
図３（Ａ）は支援装置２００の処理例を示すフローチャートである。制御プログラムの作成をする際、まず、各種の設定が必要となる。Ｓ１では、操作部６１に対するユーザの操作に基づいて、各種の設定を受け付ける。例えば、プログラマブルコントローラ１００に接続される拡張ユニット等の設定である。
【００２５】
Ｓ２では、操作部６１に対するユーザの操作に基づいて、制御プログラムを編集する。ここでは、ユーザによるラダー図の作成を支援し、受け付ける。その一例については後述する。
【００２６】
ラダー図が完成すると、ユーザの指示により、支援装置２００はラダー図を中間コード（例えばニモニックコード）に変換する（Ｓ３）。中間コードは記憶部５２に保存される。
【００２７】
Ｓ４ではＳ１で設定した各種の設定及びＳ３で変換した制御プログラム（中間コード）を含む設定情報（プロジェクトデータとも言う。）をプログラマブルコントローラ１００に送信する。このプロジェクトデータはプログラマブルコントローラ１００のフラッシュＲＯＭ２１に格納される。こうしてプログラマブルコントローラ１００は、設定情報を取得することになる。
【００２８】
＜制御プログラムの編集＞
Ｓ２の制御プログラムの編集例について、図３（Ｂ)を参照して説明する。図３（Ｂ）はＳ２のプログラム編集処理の例を示すフローチャートであり、特に、他機種について編集された既存の制御プログラム（ラダー図）を流用する場合を示す。
【００２９】
Ｓ１１では作成済みの他機種の制御プログラムを読み出す。Ｓ１２では、読み出した制御プログラムをユーザが今回の機種（自機種）に流用することを容易化すべく、機種変更指示を受け付ける。図４は、この場合における表示部６０の表示例を示す。
【００３０】
編集領域８０は、ユーザの操作に基づいてラダー図が表示される領域であり、同図の例では、作成済みの他機種のラダー図が表示されている。機能ボタン群８１は、各種の設定やユーザによるラダー図の作成を簡便化する機能ボタン群であり、例えば、定型的なラダー図のシンボル描画をボタン操作によって可能とする。例えば、機能ボタンには機種変更指示ボタンが含まれ、その操作によって、同図に示すように機種変更領域８２がポップアップされる。
【００３１】
その他、機能ボタン以外のボタン操作で、機種変更領域８２がポップアップされるようにしてもよい。機種変更領域８２は、コンボボックス８２ａで変更先の機種選択が可能となっており、同図の例では「Ａ」という機種が選択されているが、例えばプルダウンで「Ｂ」や「Ｃ」が表示されて選択可能となっている。所望の機種を選択した後、ＯＫボタン８２ｂを操作すると、変更先の機種が確定する。
【００３２】
図３（Ｂ）に戻り、機種変更を受け付けると、Ｓ１３で対応確認処理を行う。ここでは、変更後の機種では対応できない処理を制御プログラムから検索して報知する。対応確認処理では、まず、各機種の機能に関する情報を含むパラメータ値情報を参照する。パラメータ値情報は例えば記憶部５２に格納されている。図３（Ｃ）はパラメータ値情報の一例を示す。なお、パラメータ値情報は、設定ファイルに格納された情報であってもよいし、プログラムに直に書かれている等、本体ソフトにハードコーディングされている情報であってもよい。
【００３３】
パラメータ値情報は、制御プログラムに記述される特定の命令に用いられるパラメータに対し、その機種のプログラマブルコントローラが実行可能なパラメータ値に関する情報である。
【００３４】
図３（Ｃ）の例では、機種として、「Ａ」、「Ｂ」、「Ｃ」の３種類の機種が挙げられている。これらは、例えば、同一シリーズであるが、廉価版と上位版（高性能版）の関係にある。同図の例では、機種間の特定の命令に用いられるパラメータの違いとして、カウンタ３０のチャンネル（ＣＨ）数、パルス信号出力回路３１の軸数（出力ポート数）、現在時刻を取得可能か否かの時計機能（ＲＴＣの有無）が例示されている。
【００３５】
カウンタ３０のチャンネル数でみると、機種Ａは２つであって、最も低性能であり、機種Ｃは４つであって、最も高性能である。パルス信号出力回路３１の軸数でみると、機種Ａは２つであって、最も低性能であり、機種Ｂは４つであって、最も高性能である。時計機能でみると、機種Ａのみがこれを有していない。つまり、機種Ａは廉価版で機種Ｂ、Ｃはその上位版にあたる。
【００３６】
ここで、制御プログラムの流用例について説明する。例えば、機種Ｃを生産ラインの制御に用いていたが、増産のために生産ラインを増やす場合を想定する。その際、増加する生産ラインについては機種Ａで制御可能である場合、機種Ｃの制御プログラムを機種Ａに流用できれば効率がよい。機種Ａは、機種Ｃと比較してカウンタ３０のチャンネル数やパルス信号出力回路３１の軸数及び時計機能で劣るが、これら異なる機能を使用しないのであれば、機種Ｃの制御プログラムを基本的にそのまま使用できることになる。以下、機種Ｃの制御プログラムを機種Ａに流用する場合を想定する。
【００３７】
図３（Ｂ）のＳ１３の対応確認処理では、例えば、機種Ｃの制御プログラムを機種Ａに流用することが、機種変更（Ｓ１２）で指示された場合、パラメータ値情報から機種Ａが有していない機能を把握してラダー図を検索し、対応できない処理が規定されている場合、これをユーザに報知する。詳細には、制御プログラムに記述された特定の命令に用いられるパラメータに対し、機種Ａが実行できないパラメータ値を検索してこれをユーザに報知する。報知の方法は、音、表示等のいずれでもよいが、ここでは図４及び図５を参照して表示による報知例について説明する。図４、図５は機種Ｃ用のラダー図を、機種Ａに流用する場合を想定している。
【００３８】
まず、図４において、ラダー図８０ａは、カウンタ３０のチャンネルＣＨ３に関する処理を規定している。機種Ａは、チャンネルＣＨ３を有していない（図３（Ｃ））。そこで、図５に例示するように、チャンネルＣＨ３に関する処理が対応できない処理として強調表示されてもよい。これにより、ユーザは、機種Ａで対応できない処理を確認することができる。
【００３９】
本実施形態では、対応できない処理を報知することに留め、中間コードへの変換（図３（Ａ）のＳ３）及びプログラマブルコントローラ１００への転送は許容する。したがって、図３（Ａ）のＳ４では、機種Ａでは対応できない処理の規定を含む中間コードが、機種Ａとしてのプログラマブルコントローラ１００に送信されることになる。
【００４０】
＜プログラマブルコントローラの処理例＞
次に、プログラマブルコントローラ１００の処理例について説明する。まず、プログラマブルコントローラ１００の機能について概説する。
【００４１】
図６は、プログラマブルコントローラ１００の機能ブロック図である。図６に示す各手段は、図２に示すハードウェアブロック図の各要素により実現することができる。以下、具体的に説明する。
【００４２】
プログラマブルコントローラ１００は、外部接続されたプログラム支援装置から制御プログラムを含む設定情報を取得する設定情報取得手段、制御プログラムに記述された特定の命令（例えば上述したカウンタ３０など）に用いられるパラメータに対し、プログラマブルロジックコントローラ１００が実行可能なパラメータ値に関するパラメータ値情報（例えばカウンタ命令のＣＨ数や、時刻参照命令のＯＮ・ＯＦＦなど）を記憶するパラメータ値情報記憶手段と、パラメータ値情報に基づいて特定の命令の実行が可能か否かを判断する判断手段、判断手段の判断結果に基づいて制御プログラムを実行するプログラム実行手段、の各手段を有している。設定情報取得手段は、例えば、図２のＣＰＵ１１やＩＦ部１３等の要素により実現することができる。パラメータ値情報記憶手段は、例えば記憶部１２等の要素により実現することができ、例えば図３（Ｃ）に示すパラメータ値情報に関するテーブルを記憶する。判断手段及び制御プログラム実行手段は、ＣＰＵ１１や記憶部１２、記憶部２０等の要素により実現することができる。
【００４３】
そして、プログラマブルコントローラ１００は、判断手段により実行可能と判断された特定の命令については処理対象に含めて制御プログラムを実行し、判断手段により実行不可能と判断された特定の命令については処理対象から除外して制御プログラムを実行するようになっている。
【００４４】
ここで、判断手段による判断は、制御プログラムの実行を開始する前とすることができる。事前に判断しておくことで、実際に制御プログラムが実行される際に、実行スピード低下を防ぐことができる。また、プログラマブルコントローラは、制御プログラムの中間コードを実行形式のコードに変換するコード変換手段、コード変換手段による変換処理が行われる際に、判断手段により実行不可能と判断された特定の命令を処理対象から除外する無効化処理を行う無効化処理手段、を有しており、無効化処理手段による無効化処理が行われた後に制御プログラムが実行されるようにしてもよい。すなわち、コンパイル時に無効化してもよい。コンパイル時に無効化する実施形態については、後述する＜第２実施形態＞にて詳述する。
【００４５】
なお、中間コードを実行形式のコードに変換する処理は、プログラマブルコントローラ１００上で実行されても、支援装置２００上で実行されてもよい。また、制御プログラムは、中間コードを介さずに直接、実行形式のコードに変換されてもよい。
【００４６】
＜プログラマブルコントローラの処理例＞
次に、上述した機能を実現するための、プログラマブルコントローラ１００の処理例について説明する。まず、プログラマブルコントローラ１００が、支援装置Ｂから受信した中間コードを実行形式のコードに変換する処理について図７（Ａ）を参照して説明する。この変換は、フラッシュＲＯＭ２１に格納してあるコンパイラをＣＰＵ１１が実行することで行うことができ、実行形式の制御プログラムのコードは、上記の通り、ＳＤＲＡＭ２２に格納することができる。
【００４７】
プログラマブルコントローラ１００は自機種（機種Ａ）に関する情報を含むパラメータ値情報を例えばフラッシュＲＯＭ２１に格納している。本実施形態の場合、プログラマブルコントローラ１００側のパラメータ値情報は、図３（Ｃ）に示した支援装置２００のパラメータ値情報と同じ構成であって他機種（機種Ｂ、Ｃ）の情報を含むが、自機種の情報のみであってもよい。パラメータ値情報は、工場出荷時にフラッシュＲＯＭ２１等に格納してもよいし、支援装置２００からダウンロードしてもよい。
【００４８】
Ｓ２１では、１単位分の中間コードを読み出す。Ｓ２２ではパラメータ値情報を参照して、読み出した中間コードの命令に用いられるパラメータに関し、全機種が実行できない処理であるか否かを判定する。該当する場合はＳ２５へ進み、該当しない場合はＳ２３へ進む。例えば、カウンタ３０のチャンネル番号として”４”が指定された命令は、自機種Ａ及び他機種Ｂ〜Ｃの双方（つまり全機種）において実行できない。このように全機種が実行できない命令が規定されている場合はＳ２５へ進み、エラー終了する。エラー終了では、例えば、表示部３に変換に失敗した旨の表示を行う。ユーザは制御プログラムに誤りがあったことを認識できる。
【００４９】
なお、このＳ２５のエラー終了については、支援装置２００において行ってもよい。つまり、支援装置２００で中間コードを生成する段階で、支援装置２００のＣＰＵ５１は、全機種が対応できない命令のパラメータが規定されていると判断すると、表示部６０にエラー表示を行うようにしてもよい。
【００５０】
Ｓ２３では、Ｓ２１で読みだした中間コードを実行形式のコードに変換する。その際、パラメータ値情報を参照して、機種間で異なるパラメータについては、自機種で実行可能かを判断する処理を組み込む。例えば、カウンタ３０に関する命令については、チャンネル番号が自機種で実行可能なパラメータかを確認させる処理を組み込む。
【００５１】
Ｓ２４では、全中間コードについて実行形式のコードへの変換が完了したかを判定し、完了していない場合はＳ２１へ戻って同様の処理を繰り返す。
【００５２】
次に、こうして実行形式のコードに変換された制御プログラムを、パラメータ値情報に基づいて特定の命令の実行が可能か否かを判断しつつ、プログラマブルコントローラ１００が実行する場合の処理について図７（Ｂ）を参照して説明する。
【００５３】
Ｓ３１では、制御プログラムから命令語を取得する。ラダープログラムは、複数のセルからなり（例えば図４参照）、左から右へ、上から下へ、順番に実行される。したがって、この順番で各セル内の命令語に対応する、実行形式の命令語を取得することになる。
【００５４】
Ｓ３２では、パラメータ値情報を参照して、Ｓ３１で取得した命令語が自機種で実行可能な処理かを判断する。この処理は上述したＳ２３で組みこまれたものである。より具体的には、図３（Ｃ）のテーブルを参照して、ラダープログラムにおいてカウンタ３０に対して設定されているパラメータ値が、自機種で実行可能な処理かを判断する。実行可能な場合はＳ３３へ進み、命令語の処理を実行する。
【００５５】
実行できない場合は、この命令語の処理を実行せず、Ｓ３４へ進む。Ｓ３４では、制御プログラムの全命令語の処理が完了したか否かを判定し該当しない場合はＳ３１へ戻って次の命令語を処理し、該当する場合は１単位の処理（１スキャン）を終了する。
【００５６】
このように本実施形態では、自機種では対応できない処理を実行しないことで（或いはスキップすることで）、該処理を無効化している。この結果、機種Ｃ用の制御プログラムを機種Ａ用の制御プログラムとして、ラダー図を変更せずに流用することができ、異なる機種間で、より簡易に制御プログラムを流用可能とすることができる。言い換えると、装置の高性能機やカスタマイズ時にプログラマブルコントローラ１００が変わっても、プログラム資産を活かすことができる（プログラムファイルの互換性を向上することができる）。
【００５７】
＜第２実施形態＞
上記第１実施形態では、自機種では実行できない処理について、制御プログラムの実行時（図７（Ｂ））に無効化することとしたが、コンパイル時に無効化してもよい。
【００５８】
図８は、図７（Ａ）の変換処理に代わる本実施形態における変換処理のフローチャートであり、パラメータ値情報に基づいて特定の命令の実行が可能か否かを判断しつつ、中間コードをコンパイルする例である。この例では、特定の命令が実行が可能か否かの判断が制御プログラムの実行を開始する前に行われることになる。
【００５９】
Ｓ４１では、１単位分の中間コードを読み出す。Ｓ４２ではパラメータ値情報を参照して、読み出した中間コードの命令に用いられるパラメータに関し、全機種が実行できない処理であるか否かを判定する。図７（Ａ）の例のＳ２２と同じ処理である。該当する場合はＳ４７へ進み、該当しない場合はＳ４３へ進む。Ｓ４７の処理は図７（Ａ）のＳ２５と同じ処理である。
【００６０】
Ｓ４３では、パラメータ値情報を参照して、Ｓ４１で読みだした中間コードの命令に用いられるパラメータに関し、自機種が実行可能な処理であるか否かを判定する。該当する場合はＳ４４へ進み、該当しない場合はＳ４５へ進む。Ｓ４４ではＳ４１で読みだした中間コードを実行形式のコードに変換する。
【００６１】
Ｓ４５では、自機種で実行できない命令を無効化する。例えば、その処理を処理対象から除外（制御プログラムから削除）する。また、例えば、カウンタ３０について非対応ＣＨに関する処理であれば、カウント開始を指示しない。また、例えば、パルス信号出力回路３１について非対応軸に関する処理であれば、パルス出力を指示しない。また、例えば、時計機能に関し、指定された日時になったら特定の設定をＯＮにする処理であれば、ＯＮにしない（ＯＦＦにする）。
【００６２】
Ｓ４６では、全中間コードについて実行形式のコードへの変換が完了したかを判定し、完了していない場合はＳ４１へ戻って同様の処理を繰り返す。
【００６３】
このように本実施形態では、コンパイル時に、自機種で実行可能な命令については、制御プログラムを実行する上での処理対象に含め、実行不可能な命令については制御プログラムを実行する上での処理対象から除外することができる。本実施形態の場合、制御プログラムの実行形式のコードには、自機種が実行できない処理は含まれないことになる。このため、その実行においては、図７（Ｂ）の処理のうち、Ｓ３２の処理は不要となり、全命令語を順次実行することになる。
【００６４】
＜第３実施形態＞
上記第１実施形態では、自機種では実行できない処理がある場合には、何もせずにスルーしたが、機能エラーが生じたものとしてユーザに報知してもよい。この機能エラーは、制御プログラムの実行を停止するものではく、その機能を実現しないこと及びその報知でよい。
【００６５】
加えて、この機能エラーは、他機種における機能エラーと共用してもよい。例えば、機種Ｃではメモリカードが利用可能であり、機種Ａではメモリカードが利用不能であるとする。メモリカードに関する処理は、機種Ａでは実行できない処理として機能エラーとする。機能Ｃでは、実行できる処理であるが、メモリカードが挿入されていない場合は、その読み書きはできないため、同じく機能エラーとする。そうすることで、機種間の制御プログラムの流用を更に容易化することができる。
【００６６】
図９は図７（Ｂ）の判断・実行処理に代わる本実施形態における判断・実行処理のフローチャートである。
【００６７】
Ｓ３１では、制御プログラムから命令語を取得する。Ｓ３２では、パラメータ値情報を参照して、Ｓ３１で取得した命令語が自機種で実行可能な処理かを判断する。この処理は上述した図７（Ａ）のＳ２３で組みこまれたものである。実行可能な場合はＳ５３へ進み、実行できない場合はこの命令語の処理を実行せず、Ｓ５５へ進む。
【００６８】
Ｓ５３では、Ｓ３１で取得した命令語が処理可能かを判断する。上記のメモリカードの例で言えば、メモリーカードが挿入されていれば処理可能となり、挿入されていなければ処理可能ではない、と判断される。処理可能な場合はＳ５４へ進み、処理できない場合はこの命令語の処理を実行せず、Ｓ５５へ進む。
【００６９】
Ｓ５４ではＳ５１で取得した命令語の処理を実行する。Ｓ５５では機能エラー処理を行ってＳ５６へ進む。Ｓ５６では、制御プログラムの全命令語の処理が完了したか否かを判定し該当しない場合はＳ５１へ戻って次の命令語を処理し、該当する場合は１単位の処理（１スキャン）を終了する。
【００７０】
このように本実施形態では、自機種では実行できない命令に関する機能エラー処理と、実行できる処理ではあるが、現在実行できない状態にある場合の機能エラー処理とを共用したことで、機種間の制御プログラムの流用を更に容易化することができる。
【００７１】
＜第４実施形態＞
上記第１乃至第３実施形態では、自機種では実行できない命令について、プログラマブルコントローラ１００側で無効化したが、支援装置２００側で無効化してもよい。詳細には、ラダー図の作成時に、そのプログラムの文法上、プログラマブルコントローラ１００の機種を条件とした処理の定義を許容するようにしてもよい。
【００７２】
例えば、図１０の例では、図５に例示したラダー図８０ａについて、この制御プログラムを実行するプログラマブルコントローラが機種Ｃであるか否かを判断するコントロールリレーＣＲが追加されており、機種Ｃであることを条件として後続の処理を実行させるように定義されている。
【００７３】
このようなプログラミングを可能とすることで、機種Ｃ用の制御プログラムの作成時に、機種Ａ用の制御プログラムへの流用を予定することができる。こうして作成されたラダー図は中間コード、オブジェクトコードに順次通常の方式で変換することにより、上記第１実施形態における図７（Ａ）の変換処理を経たオブジェクトコードと同様のオブジェクトコードが作成される。よって、制御プログラムの実行においては、図７（Ｂ）の処理を実行することで、自機種では実行できない処理を無効化することができる。
【図１】
2014052673.tif 000003
【図２】
2014052673.tif 000004
【図３】
2014052673.tif 000005
【図４】
2014052673.tif 000006
【図５】
2014052673.tif 000007
【図６】
2014052673.tif 000008
【図７】
2014052673.tif 000009
【図８】
2014052673.tif 000010
【図９】
2014052673.tif 000011
【図１０】
2014052673.tif 000012