(57)【特許請求の範囲】
【請求項１】
外部機器が接続されるＩ／Ｏモジュールと、前記Ｉ／Ｏモジュールを管理する実行プログラムを実行するＣＰＵモジュールと、前記各モジュール間を互いに接続する連絡手段と、表示画面を有する表示装置とを備えるＰＬＣにおいて、
前記ＣＰＵモジュールは、
前記Ｉ／Ｏモジュールに対応する演算処理を示す演算プログラムと前記演算処理の入出力を示す入出力情報とをパッケージ化した固定且つ固有の制御プログラムを予め記憶した第一記憶部と、
前記演算処理を１つのシンボルで表したファンクションブロックを予め記憶した第二記憶部と、
前記入出力情報をグラフィカル言語で等価的に表した等価入出力情報を予め記憶した第三記憶部と、
前記連絡手段に接続された前記Ｉ／ＯモジュールのＩＤ番号を読み出すＩＤ番号取得部と、
読み出された前記ＩＤ番号に対応する前記制御プログラムを前記第一記憶部から引き当て、引き当てられた前記制御プログラムから前記実行プログラムを自動的に生成するプログラム生成部と、
前記プログラム生成部で生成された前記実行プログラムを記憶するメイン記憶部と、
を有し、
前記表示装置は、前記メイン記憶部に記憶された前記実行プログラムを、前記第二記憶部および前記第三記憶部を参照し、前記ファンクションブロックと前記等価入出力情報とで前記表示画面に表示させる表示手段を備え、
前記ＰＬＣは、前記Ｉ／Ｏモジュールを複数備え、
前記第一記憶部は、各前記Ｉ／Ｏモジュールに対応するよう複数の前記制御プログラムを予め記憶し、
前記第二記憶部は、各前記制御プログラムの前記演算処理に対応するよう複数の前記ファンクションブロックを予め記憶し、
前記第三記憶部は、各前記制御プログラムの前記入出力情報に対応するよう複数の前記等価入出力情報を予め記憶し、
前記プログラム生成部は、前記連絡手段に順次接続された前記複数のＩ／Ｏモジュールの接続順序および前記ＩＤ番号に基づいて、複数の前記制御プログラムを連結することにより前記実行プログラムを自動的に生成することを特徴とするＰＬＣ。
【請求項２】
前記ＣＰＵモジュールは、さらに、
前記制御プログラムの前記演算プログラムをグラフィカル言語で等価的に表した等価演算プログラムを予め記憶した第四記憶部を有し、
前記表示手段は、前記表示画面に表示された前記ファンクションブロックを、前記第四記憶部を参照し、前記等価演算プログラムに表示変換する請求項１に記載のＰＬＣ。
【請求項３】
前記表示装置は、前記表示画面に表示された、前記メイン記憶部に記憶された前記実行プログラムに沿った前記ファンクションブロックの並び順序を変更可能とする編集手段を有し、
前記ＣＰＵモジュールは、前記メイン記憶部とは別領域であり、前記編集手段により編集された前記実行プログラムを記憶するユーザー記憶部をさらに備える請求項１又は２に記載のＰＬＣ。
【請求項４】
前記表示装置は、前記表示画面に表示された前記等価入出力情報を前記グラフィカル言語で編集可能とする編集手段を有し、
前記ＣＰＵモジュールは、前記メイン記憶部とは別領域であり、前記編集手段により編集された前記実行プログラムを記憶するユーザー記憶部をさらに備える請求項１〜３の何れか一項に記載のＰＬＣ。
【請求項５】
前記表示装置は、前記表示画面に表示された前記等価演算プログラムを前記グラフィカル言語で編集可能とする編集手段を有し、
前記ＣＰＵモジュールは、前記メイン記憶部とは別領域であり、前記編集手段により編集された前記実行プログラムを記憶するユーザー記憶部をさらに備える請求項２〜４の何れか一項に記載のＰＬＣ。
【請求項６】
前記グラフィカル言語は、ラダーダイアグラム、ファンクションブロックダイヤグラム、ストラクチャードテキスト、または、インストラクションリストである請求項１〜５の何れか一項に記載のＰＬＣ。
【請求項７】
前記外部機器は、安全制御に関する安全機器であり、
前記実行プログラムは、安全プログラムである請求項１〜６の何れか一項に記載のＰＬＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＬＣ（プログラマブルロジックコントローラ）に関するものである。
【背景技術】
【０００２】
ＰＬＣは、外部機器が接続されたＩ／Ｏモジュールと、Ｉ／Ｏモジュールを介して外部機器を制御する実行プログラムを実行するＣＰＵモジュール等とを備えている。ＰＬＣにおいて、ユーザーは、実行プログラムを自由にプログラミングすることができる。ただし、実行プログラムをプログラミングするには、ＰＬＣに関する相当の知識が必要となる。つまり、ユーザーによる実行プログラムの作成には、相当の知識と労力が必要となる。
【０００３】
ここで、ＰＬＣの一例として安全ＰＬＣを挙げると、安全ＰＬＣでは、ＰＬＣの知識に加え、安全制御に関する高度な知識も要求される。この安全ＰＬＣとは、緊急停止スイッチやライトカーテンなどの安全機器が接続されたＩ／Ｏモジュールと、Ｉ／Ｏモジュールを介して安全機器を制御する安全プログラム（上記「実行プログラム」に相当する）を実行するＣＰＵモジュール等とを備えたものである。
【０００４】
安全ＰＬＣは、例えば、製造ラインに用いられた場合、その製造ラインが危険状態となったとき、所定のフェイルセーフ動作に基づいて、製造ラインの一部またはすべてを安全に停止させる。ここで、危険状態とは、例えば、緊急停止スイッチが押されたときの状態や、ライトカーテン等のセンサが人の進入を検出したときの状態等である。つまり、安全ＰＬＣは、製造ライン等における作業者がより安全に作業できるよう製造ライン等に用いられる。
【０００５】
また、安全ＰＬＣは、欧州安全規格や国際安全規格等の安全規格に適合していなければならず、認証機関で審査され、認証を受ける必要がある。
【０００６】
ここで、安全ＰＬＣは、安全機器が接続されるＩ／Ｏモジュールと、ＣＰＵモジュールとを備えている。そして、一つのＩ／Ｏモジュールには、一つのパッケージ化された固有の制御プログラムが対応している。制御プログラムは、Ｉ／ＯモジュールまたはＣＰＵモジュールに内蔵され、安全ＰＬＣとして実行される安全プログラムを構成している。
【０００７】
このような安全ＰＬＣにおいて、安全プログラムをプログラミングするには、上記のように、安全規格および安全制御に関する高度な専門知識や豊富な経験等が必要であり、一般の実行プログラムの作成以上に、多大な時間と高い製造コストを要していた。
【０００８】
そこで、本願出願人が以前出願した特開２００７−２５７３６号公報（特許文献１）では、Ｉ／ＯモジュールをＣＰＵモジュールに連結するだけで自動的に安全プログラムが生成される安全ＰＬＣが提案されている。詳細には、安全規格に適合した固定のファンクションブロックが予め準備されており、Ｉ／Ｏモジュールの接続順序に基づいて、ファンクションブロックが連結される。これにより、高度な専門知識なしに安全ＰＬＣを使用できるに至った。
【０００９】
このように、ＰＬＣにおいて、実行プログラム（安全プログラム）が自動生成されることにより、専門知識の乏しいユーザーであっても、時間やコストをかけることなくＰＬＣを使用可能となった。
【特許文献１】特開２００７−２５７３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記ＰＬＣにおいて、自動生成された実行プログラムは、ブラックボックス化されており、編集はおろか見ることもできなかった。実行プログラムを構成する固有の制御プログラム（特許文献１におけるファンクションブロック）も、パッケージ化した固定のプログラムとされ、ブラックボックス化されていた。
【００１１】
つまり、自動生成された実行プログラムの一部を編集したいという要請に対して、編集はおろか実行プログラムを見ることもできなかった。従って、例えば、製造ライン等に多少の変更があった場合でも、Ｉ／Ｏモジュールを組み替えたり、外部機器を変更したりとハードウエア的な変更が必要であった。つまり、自動生成された実行プログラムが編集できないことにより、配線の煩雑化、機器設置スペースの増大、および、コスト増大等の問題が発生する虞もある。
【００１２】
本発明は、このような事情に鑑みてなされたものであり、自動生成された実行プログラムを見ることができるＰＬＣを提供することを目的とする。さらに、本発明は、自動生成された実行プログラムを編集できるＰＬＣを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明のＰＬＣは、外部機器が接続されるＩ／Ｏモジュールと、Ｉ／Ｏモジュールを管理する実行プログラムを実行するＣＰＵモジュールと、各モジュール間を互いに接続する連絡手段と、表示画面を有する表示装置とを備えるＰＬＣにおいて、ＣＰＵモジュールは、Ｉ／Ｏモジュールに対応する演算処理を示す演算プログラムと演算処理の入出力を示す入出力情報とをパッケージ化した固定且つ固有の制御プログラムを予め記憶した第一記憶部と、演算処理を１つのシンボルで表したファンクションブロックを予め記憶した第二記憶部と、入出力情報をグラフィカル言語で等価的に表した等価入出力情報を予め記憶した第三記憶部と、連絡手段に接続されたＩ／ＯモジュールのＩＤ番号を読み出すＩＤ番号取得部と、読み出されたＩＤ番号に対応する制御プログラムを第一記憶部から引き当て、引き当てられた制御プログラムから実行プログラムを自動的に生成するプログラム生成部と、プログラム生成部で生成された実行プログラムを記憶するメイン記憶部と、を有し、表示装置は、メイン記憶部に記憶された実行プログラムを、第二記憶部および第三記憶部を参照し、ファンクションブロックと等価入出力情報とで表示画面に表示させる表示手段を備え、前記ＰＬＣは、Ｉ／Ｏモジュールを複数備え、第一記憶部は、各Ｉ／Ｏモジュールに対応するよう複数の制御プログラムを予め記憶し、第二記憶部は、各制御プログラムの演算処理に対応するよう複数のファンクションブロックを予め記憶し、第三記憶部は、各制御プログラムの入出力情報に対応するよう複数の等価入出力情報を予め記憶し、プログラム生成部は、連絡手段に順次接続された複数のＩ／Ｏモジュールの接続順序およびＩＤ番号に基づいて、複数の制御プログラムを連結することにより実行プログラムを自動的に生成することを特徴とする。
【００１４】
本発明のＰＬＣでは、Ｉ／Ｏモジュールに対応する固定且つ固有の制御プログラムが予めＣＰＵモジュールに記憶されており（第一記憶部）、それを用いて実行プログラムが生成される。そして、ＣＰＵモジュールは、制御プログラム内の演算処理に関する部分（演算プログラム）をシンボル化したファンクションブロックを記憶した第二記憶部と、制御プログラム内の入出力に関する部分（入出力情報）をグラフィカル言語で等価的に表した等価入出力情報を記憶する第三記憶部とを有する。
【００１５】
つまり、本発明のＣＰＵモジュールには、予め、ブラックボックス化された第一記憶部内の制御プログラムと同一の意味を表すファンクションブロックおよび等価入出力情報が記憶されている。そして、接続されたＩ／ＯモジュールのＩＤ番号に対応する制御プログラムから、ＣＰＵモジュールが実行する実行プログラムが生成される。つまり、実行プログラムは、固有の制御プログラムで構成されている。そして、生成された実行プログラムは、メイン記憶部に記憶される。
【００１６】
表示装置は、ＣＰＵモジュールが第二記憶部および第三記憶部を有するため、生成された実行プログラムに基づいて、ファンクションブロックおよび等価入出力情報で等価的に変換された実行プログラムを表示画面に表示することができる。つまり、本発明のＰＬＣによれば、ユーザーは、ブラックボックス化された制御プログラムを、対応するファンクションブロックおよび等価入出力情報で見ることができる。
【００１７】
なお、入出力情報とは、Ｉ／Ｏモジュールに割り当てられている入出力端子数や、演算処理間の接続に関する設定事項等である。また、グラフィカル言語とは、例えば、ＩＥＣ６１１３１−３に規程されたプログラム記述言語や、視覚的に表現された図形シンボルを用いたもの等である。また、外部機器とは、Ｉ／Ｏモジュールと電気的に接続可能な各種装置（電気機器等）である。
【００１９】
プログラム生成部は、接続されたＩ／ＯモジュールのＩＤ番号から対応する制御プログラムを特定し、Ｉ／Ｏモジュールの接続順序に基づいて制御プログラムを順に連結する。例えば、ＣＰＵモジュールに近い側から遠い側に向けて番号が大きくなるスロット（連絡手段）にＩ／Ｏモジュールが順次接続された場合、スロット番号の大きい順がＩ／Ｏモジュールの接続順序に相当する。なお、実行プログラムの自動生成に関しては、特許文献１に詳細に記載されている。このように、実行プログラムは、自動的に生成され、メイン記憶部に記憶される。
【００２０】
すなわち、本発明のＰＬＣは、Ｉ／Ｏモジュールが複数接続される場合であっても、メイン記憶部に記憶された実行プログラムを、ファンクションブロックおよび等価入出力情報で表示画面に表示することができる。
【００２１】
ここで、本発明のＰＬＣにおいて、ＣＰＵモジュールは、さらに、制御プログラムの演算プログラムをグラフィカル言語で等価的に表した等価演算プログラムを予め記憶した第四記憶部を有し、表示手段は、表示画面に表示されたファンクションブロックを、第四記憶部を参照し、等価演算プログラムに表示変換することが好ましい。
【００２２】
これにより、本発明のＰＬＣは、ブラックボックス化された制御プログラムのうち、さらに、演算処理に関する部分についても等価演算プログラムとして表示させることができる。
【００２３】
表示手段は、実行プログラムをファンクションブロックおよび等価入出力情報で表示させることができる上、例えばユーザーがファンクションブロックを選択等することにより、そのファンクションブロックの中身である演算プログラムを、等価演算プログラムとして表示させることができる。
【００２４】
ここで、本発明のＰＬＣにおいて、表示装置は、表示画面に表示された、メイン記憶部に記憶された実行プログラムに沿ったファンクションブロックの並び順序を変更可能とする編集手段を有することが好ましい。
【００２５】
これにより、ユーザーは、表示されたファンクションブロックの並び順序、すなわち、実行プログラムにおけるファンクションブロックの連結順序を編集することができる。編集は、従来の一般のＰＬＣで行われていたように、表示画面上でソフト的に実行することができる。編集手段は、例えば、表示装置にインストールされた編集ツールと、キーボードやマウス等とを含んでいる。
【００２６】
さらに、表示装置は、表示画面に表示された等価入出力情報をグラフィカル言語で編集可能とする編集手段を有することが好ましい。つまり、編集手段は、ファンクションブロックの並び順序の変更に加え、等価入出力情報の編集機能を有することが好ましい。
【００２７】
ブラックボックス化されている入出力情報を、等価入出力情報として表示できるため、等価的な表示のために用いられたグラフィカル言語によって編集することが可能となる。従って、従来、見ることができなかったため編集できなかった入出力情報を、自在に編集することができる。
【００２８】
さらに、表示装置は、表示画面に表示された等価演算プログラムをグラフィカル言語で編集可能とする編集手段を有することが好ましい。つまり、編集手段は、上記機能に加え、等価演算プログラムの編集機能を有することが好ましい。
【００２９】
これにより、上記同様、ブラックボックス化されている演算プログラムを編集可能となる。ユーザーは、表示された等価演算プログラムを、グラフィカル言語で編集することができる。つまり、実行プログラムにおいて、より高度な編集が可能となる。これら編集手段を有するＰＬＣでは、ハードウエア的な追加変更をすることなく、自動生成された実行プログラムを修正変更（ｍｏｄｉｆｙ）できる。
【００３０】
ここで、本発明のＰＬＣにおいて、ＣＰＵモジュールは、メイン記憶部とは別領域であり、編集手段により編集された実行プログラムを記憶するユーザー記憶部をさらに備えることが好ましい。つまり、編集後の実行プログラムはユーザー記憶部に記憶され、プログラム生成部により生成された実行プログラムは、編集により上書きされずそのままメイン記憶部に記憶されている。
【００３１】
これにより、ユーザーは、自動的に生成された実行プログラム（ディフォルトプログラム）を実行させることもでき、編集した実行プログラム（ユーザープログラム）を実行させることもできる。なお、ユーザー記憶部は、編集した実行プログラム全体を記憶してもよいし、編集部分を記憶するようにしてもよい。編集部分のみを記憶させるようにすると、その分メモリは小さくてもよくなるが、プログラム設計は全体を記憶するのに比べて困難となる。
【００３２】
ところで、本発明のＰＬＣにおいて、グラフィカル言語は、ラダーダイアグラム、ファンクションブロックダイヤグラム、ストラクチャードテキスト、または、インストラクションリストであることが好ましい。これらの言語は、ＰＬＣにおいて、多く用いられており、ユーザーの理解および編集を容易とすることができる。
【００３３】
また、本発明のＰＬＣは、安全ＰＬＣとして用いてもよい。この場合、本発明のＰＬＣにおいて、外部機器は、安全制御に関する安全機器であり、実行プログラムは、安全プログラムである。ＰＬＣにおいて、特に安全ＰＬＣでは、安全プログラムの自動生成が実際に行われているため（特許文献１）、生成された安全プログラムを表示・編集したいという要請が非常に高い。従って、本発明のＰＬＣを安全ＰＬＣに適用することにより、上記要請に応えることができ、本発明のＰＬＣの上記効果を顕著に発揮させることができる。
【００３４】
なお、安全機器としては、例えば、二重化された緊急停止ボタン、ライトカーテン、ドアロックセンサ、マットスイッチ、レーザースキャナー等の検出装置や、安全制御に関するモーター等の駆動装置が挙げられる。安全制御に関する駆動装置とは、例えば、上述した検出装置により危険状態が検出されたとき停止させなければならないような製造ライン上の各種装置（工作ロボット等）や、安全制御において必要な動作を実行させる駆動装置等である。安全プログラムは、上記安全機器が接続されるＩ／Ｏモジュールを管理しＣＰＵモジュールにより実行されるプログラムであり、安全規格に適合する。
【発明を実施するための最良の形態】
【００３５】
次に、実施形態を挙げ、本発明をより詳しく説明する。本実施形態では、本発明のＰＬＣを安全ＰＬＣに適用したものについて説明する。まず、本実施形態の安全ＰＬＣの構成について、図１および図２を参照して説明する。図１は、本実施形態の安全ＰＬＣの模式図である。図２は、システム記憶部２１の模式図である。
【００３６】
本実施形態の安全ＰＬＣは、図１に示すように、Ｉ／Ｏモジュール１１、１２と、ＣＰＵモジュール２と、入出力バス３と、パーソナルコンピュータ（以下、「ＰＣ」と略称する）４とを備えている。なお、入出力バス３のＩ／Ｏモジュールとの接続を、ＣＰＵモジュール側から順に接続点（３００、３０１、・・・）と称する。
【００３７】
Ｉ／Ｏモジュール１１は、入出力バス３の接続点３００に接続されている。Ｉ／Ｏモジュール１１は、Ｓ−ＳＴＰモジュールであり、ライトカーテン５１が接続されている。Ｉ／Ｏモジュール１１は、ライトカーテン５１からの入力が遮断されると、出力を遮断する。つまり、このＩ／Ｏモジュール１１に接続されている安全機器は、危険状態が発生したか否かを検出するための検出装置である。そして、Ｉ／Ｏモジュール１１には、固有のＩＤ番号が記憶されている。
【００３８】
Ｉ／Ｏモジュール１２は、入出力バス３の接続点３０１に接続されている。Ｉ／Ｏモジュール１２は、リレー（Ｒｅｌａｙ）モジュールであり、安全制御される駆動装置５２が接続されている。Ｉ／Ｏモジュール１２は、入力信号をそのまま出力する。このＩ／Ｏモジュール１２に接続されている安全機器は、例えば、ライトカーテン５１などの検出装置により危険状態が検出された場合などに、動作を停止させる機器などである。そして、Ｉ／Ｏモジュール１２には、Ｉ／Ｏモジュール１１に記憶されているＩＤ番号とは異なる固有のＩＤ番号が記憶されている。
【００３９】
ＣＰＵモジュール２は、システム記憶部２１と、ＩＤ番号取得部２２と、プログラム生成部２３と、安全プログラム記憶部２４とを有している。システム記憶部２１は、制御プログラム記憶部２１１（本発明の「第一記憶部」に相当する）と、ライブラリ２１２（本発明の「第二記憶部」に相当する）と、ヘッダーファイル２１３（本発明の「第三記憶部」に相当する）と、等価演算記憶部２１４（本発明の「第四記憶部」に相当する）とを有している。
【００４０】
図２に示すように、制御プログラム記憶部２１１には、入出力バス３によりＣＰＵモジュール２に接続され得るＩ／Ｏモジュールのパッケージ化された制御プログラム（Ｐ１、Ｐ２、・・・）が予め記憶されている。これら制御プログラムは、Ｃ言語で生成されており、接続され得るＩ／Ｏモジュールに対応するようそれぞれパッケージ化されている。具体的には、各制御プログラム（Ｐ１、Ｐ２、・・・）は、Ｉ／Ｏモジュールに対応する演算処理を示す演算プログラムと、演算処理の入出力情報とをパッケージ化している。なお、本実施形態において、制御プログラムＰ１はＩ／Ｏモジュール１２に対応するプログラムであって、制御プログラムＰ２はＩ／Ｏモジュール１１に対応するプログラムである。
【００４１】
ライブラリ２１２には、制御プログラム記憶部２１１に記憶された各制御プログラム（Ｐ１、Ｐ２、・・・）の演算プログラムを１つのシンボルで示したファンクションブロック（ＦＢ１、ＦＢ２、・・・）が予め記憶されている。ここでは、ファンクションブロックＦＢ１は制御プログラムＰ１の演算処理に対応し、同様に、ＦＢ２はＰ２に、ＦＢ３はＰ３に、それぞれ対応する。
【００４２】
ヘッダーファイル２１３には、制御プログラム記憶部２１１に記憶された各制御プログラム（Ｐ１、Ｐ２、・・・）の入出力情報を、ラダーダイアグラムで等価的に表した等価入出力情報（Ｘ１、Ｘ２、・・・）が予め記憶されている。
【００４３】
等価演算記憶部２１４には、制御プログラム記憶部２１１に記憶された各制御プログラム（Ｐ１、Ｐ２、・・・）の演算プログラムを、ラダーダイアグラムで等価的に表した等価演算プログラム（Ｙ１、Ｙ２、・・・）が予め記憶されている。等価演算プログラムは、それぞれ対応するファンクションブロック（ＦＢ１、ＦＢ２、・・・）の中身に相当する。
【００４４】
システム記憶部２１において、１つの制御プログラムにファンクションブロックと等価入出力情報とが関連付けされている。また、制御プログラムの演算プログラムおよびファンクションブロックに等価演算プログラムが関連付けされている。本実施形態では、制御プログラムＰ１に、ファンクションブロックＦＢ１および等価入出力情報Ｘ１が対応し、ファンクションブロックＦＢ１に等価演算プログラムＹ１が対応する。なお、各記憶については、ＲＯＭ等の記憶手段が用いられる。
【００４５】
ＩＤ番号取得部２２は、入出力バス３に接続されたＩ／Ｏモジュール１１、１２のＩＤ番号を読み出す。ＣＰＵモジュール２は、ＩＤ番号取得部２２により、接続点３００にＩ／Ｏモジュール１１が接続され、接続点３０１にＩ／Ｏモジュール１２が接続されていることを認識する。つまり、ＣＰＵモジュール２は、ＩＤ番号と接続順序を認識する。
【００４６】
プログラム生成部２３は、Ｉ／Ｏモジュール１１、１２の接続順序およびＩＤ番号に基づいて、複数の制御プログラムを連結することにより安全プログラムを自動的に生成する。詳細には、まず、読み出されたＩＤ番号に対応する制御プログラムが、制御プログラム記憶部２１１から一意的に決定される。つまり、ここでは、Ｉ／Ｏモジュール１２と制御プログラムＰ１、Ｉ／Ｏモジュール１１と制御プログラムＰ２とがそれぞれ対応する。
【００４７】
そして、決定された制御プログラムを、接続順序に基づいて連結する。本実施形態では、接続点３００に向かって（３０１→３００）、対応する制御プログラムを順に連結し、安全プログラムが生成される。この安全プログラムは、後述する安全プログラム記憶部２４のメイン記憶部２４１に記憶される。
【００４８】
安全プログラム記憶部２４は、メイン記憶部２４１と、ユーザー記憶部２４２とを有している。メイン記憶部２４１は、プログラム生成部２３で生成された安全プログラムを記憶する。ユーザー記憶部２４２は、メイン記憶部２４１とは別領域に設けられ、編集後の安全プログラムを記憶する。編集については、後述する。ユーザーは、実行する安全プログラムを、メイン記憶部２４１の安全プログラムとユーザー記憶部２４２の安全プログラムとから選択することができる。
【００４９】
ＰＣ４は、ディスプレイ４１と、図示しない入力手段（キーボード、マウス等）とを有し、ＣＰＵモジュール２に接続されている。ＰＣ４には、ラダー編集ツール４２（本発明の「表示手段」および「編集手段」に相当する）がインストールされている。ラダー編集ツール４２は、メイン記憶部２４１に記憶された安全プログラムを、ファンクションブロック（ＦＢ１、ＦＢ２、・・・）および等価入出力情報（Ｘ１、Ｘ２、・・・）、または、等価演算プログラム（Ｙ１、Ｙ２、・・・）でディスプレイ４１に表示させる。
【００５０】
メイン記憶部２４１に記憶された安全プログラムは、制御プログラム（Ｐ１、Ｐ２、・・・）が連結されて生成されたものである。従って、ＰＣ４は、ラダー編集ツール４２により、ライブラリ２１２およびヘッダーファイル２１３を参照して対応するファンクションブロック（ＦＢ１、ＦＢ２、・・・）および等価入出力情報（Ｘ１、Ｘ２、・・・）を決定し、安全プログラムを等価的に表示することができる。
【００５１】
ここで、メイン記憶部２４１に記憶された安全プログラムの表示および編集について、図３〜５を参照して詳細に説明する。図３は、安全プログラムをファンクションブロックおよび等価入出力情報で表示したディスプレイ４１の表示を示す図である。図４は、ファンクションブロックＦＢ１（Ｒｅｌａｙ）に対応する等価演算プログラムを表示したディスプレイ４１の表示を示す図である。図５は、図３を編集した後の安全プログラムを表示したディスプレイ４１の表示を示す図である。
【００５２】
図３に示すように、ラダー編集ツール４２により、メイン記憶部２４１に記憶された安全プログラムが、ファンクションブロックＦＢ１、ＦＢ２および等価入出力情報Ｘ１、Ｘ２で表示される。ファンクションブロックＦＢ１および等価入出力情報Ｘ１は、Ｉ／Ｏモジュール１２（Ｒｅｌａｙ）に対応している。また、ファンクションブロックＦＢ２および等価入出力情報Ｘ２は、Ｉ／Ｏモジュール１１（Ｓ−ＳＴＰ）に対応している。
【００５３】
つまり、本実施形態では、自動生成された安全プログラムがディスプレイ４１にラダーダイアグラムとして表示される。例えば、等価入出力情報Ｘ１のＱ１は、Ｉ／Ｏモジュール１２に接続された駆動装置５２の第一モーター５２１への出力接点であり、同様に、Ｑ２は第二モーター５２２への出力接点である。この場合、Ｑ１とＱ２は同じ出力となる。つまり、Ｑ１がＯＮならばＱ２もＯＮである。  
【００５４】
さらに、ここで、ユーザーによりファンクションブロックＦＢ１が選択されると、図４に示すように、ファンクションブロックＦＢ１の中身に相当する等価演算プログラムＹ１が表示される。つまり、ラダー編集ツール４２は、選択された制御プログラムの演算プログラムをラダーダイアグラムとしてディスプレイ４１に表示させる。また、図４の右上に表示された表には、ラダーダイアグラム中のタグ名（ｉｎ１、ｏｕｔ１等）と内部レジスタ（図示せず）におけるアドレスとの関係が示される。
【００５５】
図３に示すラダーダイアグラムは、メイン記憶部２４１に記憶された安全プログラムと等価であり、ＣＰＵモジュール２がライブラリ２１２およびヘッダーファイル２１３を有することにより表示可能となる。また、図４に示すラダーダイアグラムは、制御プログラムＰ１の演算プログラムと等価であり、ＣＰＵモジュール２が等価演算記憶部２１４を有することにより表示可能となる。
【００５６】
ここで、図３に示すラダーダイアグラムを編集する場合について説明する。編集は、ユーザーがキーボードやマウスを用いて、ラダー編集ツール４２で行われる。編集後のラダーダイアグラムとして、図５に示すラダーダイアグラムを例に説明する。図５に示すように、この編集は、図３の出力接点Ｑ２を編集したもの（編集後のＱ２をＱ２１およびＱ２２と称する）である。
【００５７】
具体的には、まず、Ｑ２の出力情報において、ファンクションブロックＦＢ１とＱ２の出力先との間に、ＣＰＵモジュール２の内部レジスタ（図示せず）を挿入する（Ｑ２１）。そして、さらに、その内部レジスタとＱ２の出力先との間にＢ接点を挿入する（Ｑ２２）。この編集により、Ｑ２の出力信号は、一旦内部レジスタに記憶され、その内部レジスタに記憶させた信号がＢ接点を介して反転し出力されるようになる。
【００５８】
図５に示すように編集された後、当該編集後の安全プログラムは、ＣＰＵモジュール２のユーザー記憶部２４２に記憶することができる。そして、ユーザーは、メイン記憶部２４１の安全プログラム（ディフォルトプログラム）か、ユーザー記憶部２４２の安全プログラム（ユーザープログラム）かを選択し、実行させることができる。
【００５９】
上記編集によって、編集前ではＱ１とＱ２が同じ出力であったのが、編集後ではＱ２がＱ１を反転させた出力、すなわち、Ｑ１がＯＮで出力するときＱ２はＯＦＦで出力するようになる。この場合、編集後の安全プログラムが実行されると、例えば、編集前では第一モーター５２１と第二モーター５２２とが同じ動作をしていたのに対し、第一モーター５２１が動作しているとき第二モーター５２２が動作しないようになる。
【００６０】
つまり、第二モーター５２２が駆動力を供給する対象が変更された場合であっても、ラダー編集ツール４２により等価入出力情報Ｘ１を編集することで、当該変更に合うような安全プログラムに編集することができる。
【００６１】
従来、上記のように制御プログラムを編集したい場合であっても、各制御プログラムや安全プログラムはブラックボックス化されていて見ることすらできなかった。このため、当然、プログラムを編集することはできず、上記のようなちょっとした変更であっても、新たなＩ／Ｏモジュールの追加や、複雑な配線変更作業等が必要であった。
【００６２】
しかし、本実施形態の安全ＰＬＣによれば、制御プログラムを含む安全プログラムをディスプレイ４１に表示させることができ、それを編集し実行させることが可能となる。これに伴い、本実施形態の安全ＰＬＣでは、さらに、ハードワイヤ回路のシンプル化、省配線・省スペース化、配線ミス発生の抑制、設計作業の効率化、および、コスト削減等の効果も得ることができる。
【００６３】
また、図４に示すように、選択されたファンクションブロックの中身（制御プログラムの演算処理）が表示可能であるため、上記同様、表示されたラダーダイアグラムをラダー編集ツール４２により編集することができる。
【００６４】
また、ファンクションブロックの配置を並び替えることも可能である。つまり、安全プログラムに沿って表示されたファンクションブロックの並び順序（ＦＢ１→ＦＢ２）を変更することができる（ＦＢ２→ＦＢ１）。
【００６５】
以上、本実施形態の安全ＰＬＣによれば、安全プログラム、および、安全プログラムを構成する固有の制御プログラムを見ることができ、さらに、それらを編集することができる。
【００６６】
なお、本実施形態における等価入出力情報および等価演算プログラムは、ラダーダイアグラムに限らず、ラダーダイアグラム以外のグラフィカル言語を用いたものであってもよい。グラフィカル言語とは、ラダーダイアグラム、ファンクションブロックダイヤグラム、ストラクチャードテキスト、インストラクションリストなどのＩＥＣ６１１３１−３に規程されたプログラム記述言語や、視覚的に表現された独自の図形シンボルを用いたもの等である。また、シンボル（ファンクションブロック）の形状および絵柄等も、本実施形態に限られるものではない。これら何れの場合であっても、上記同様の効果を得ることができる。
【００６７】
また、本実施形態の安全ＰＬＣは、安全ＰＬＣに限らず、一般のＰＬＣにも適用できる。本実施形態の安全ＰＬＣによれば、一般のＰＬＣに適用した場合であっても、上記同様、自動生成された実行プログラムを表示編集することが可能となる。
【図面の簡単な説明】
【００６８】
【図１】本実施形態の安全ＰＬＣの模式図である。
【図２】システム記憶部２１の模式図である。
【図３】安全プログラムをファンクションブロックおよび等価入出力情報で表示したディスプレイ４１の表示を示す図である。
【図４】ファンクションブロックＦＢ１（Ｒｅｌａｙ）に対応する等価演算プログラムを表示したディスプレイ４１の表示を示す図である。
【図５】図３を編集した後の安全プログラムを表示したディスプレイ４１の表示を示す図である。
【符号の説明】
【００６９】
１１、１２：Ｉ／Ｏモジュール、  ２：ＣＰＵモジュール、
２１：システム記憶部、  ２１１：制御プログラム記憶部、  ２１２：ライブラリ、
２１３：ヘッダーファイル、  ２１４：等価演算記憶部、
２２：ＩＤ番号取得部、  ２３：プログラム生成部、
２４：安全プログラム記憶部、  ２４１：メイン記憶部、  ２４２：ユーザー記憶部、
３：入出力バス、  ４：パーソナルコンピュータ、  ４１：ディスプレイ、
４２：ラダー編集ツール
【図１】
0004952401.tif 000002
【図２】
0004952401.tif 000003
【図３】
0004952401.tif 000004
【図４】
0004952401.tif 000005
【図５】
0004952401.tif 000006