(57)【要約】【課題】高機能かつ低製造コストのコントローラを提供する。【解決手段】計測装置３６から出力される計測値が予め定められた条件を満たすか否かを判断するための監視プログラム４４ｃが記憶された共有メモリ４４と、監視プログラム４４ｃを実行する監視用プロセッサ４２と、予め定められた条件と対応付けられ、制御対象機器の制御を行なうサブプログラム４８ｆと、当該サブプログラムを呼び出し実行するメインプログラム４８ｇとが記憶されたメモリ４８と、メインプログラム４８ｇを実行するメインプロセッサ４６とを備え、計測値が予め定められた条件を満たした場合に、監視プログラム４４ｃがメインプログラム４８ｇに対してイベントを送信し、メインプログラム４８ｇは、当該イベントに応答して、当該条件に対応するサブプログラム４８ｆを呼び出し実行し、当該条件に応じた制御対象機器を制御する。【選択図】        図２
2004280222.tif 000002
【特許請求の範囲】
【請求項１】
制御対象装置を制御するコントローラであって、
機器から入力する信号が予め定められた条件を満たすか否かを判断するための監視プログラムと、前記条件と対応付けられ、前記制御対象機器の制御を行なうサブプログラムと、当該サブプログラムを呼び出して実行するメインプログラムとが記憶されたメモリと、
前記監視プログラムの少なくとも一部を実行する監視用プロセッサと、
前記メインプログラムを実行するメインプロセッサとを備え、
前記監視プログラムは、前記入力信号が前記条件を満たした場合に、前記メインプログラムに対してイベントを送信するプログラムであり、前記メインプログラムは、前記イベントに応答して、当該条件に対応する前記サブプログラムを呼び出して実行し、当該条件に応じた前記制御対象機器を制御するプログラムである
ことを特徴とするコントローラ。
【請求項２】
前記メモリには、さらに、
予め定められた規則に従い、前記監視プログラムを、前記監視用プロセッサで実行される第１監視プログラムと前記メインプロセッサで実行される第２監視プログラムとに分割する分割プログラムと、
分割された前記第１監視プログラムおよび前記第２監視プログラムを前記メモリに格納する格納プログラムとが記憶されており、
前記監視用プロセッサは、前記メモリに記憶された前記第１監視プログラムを実行し、
前記メインプロセッサは、前記メインプログラムと、前記第２監視プログラムと、前記分割プログラムと、前記格納プログラムとを実行する
ことを特徴とする請求項１に記載のコントローラ。
【請求項３】
前記監視用プロセッサと前記メインプロセッサとは通信網を介して相互に接続されていることを特徴とする請求項１または２に記載のコントローラ。
【請求項４】
前記監視用プロセッサに接続され、機器から入力する信号が記憶された第１共有メモリと、
前記メインプロセッサに接続され、前記機器とは異なる他の機器から入力する信号が記憶された第２共有メモリとをさらに備え、
前記監視用プロセッサおよび前記メインプロセッサは、相互に入力信号を交換し、前記第１共有メモリおよび前記第２共有メモリには、共通の入力信号が記憶されている
ことを特徴とする請求項３に記載のコントローラ。
【請求項５】
請求項１〜４のいずれかに記載のコントローラにメインプログラムと監視プログラムとを供給するプログラムであって、
実行形式のサブプログラムを呼び出して実行する、メインプロセッサの実行形式の前記メインプログラムを作成するステップと、
ソースプログラム形式の前記監視プログラムを前記メインプロセッサおよび監視用プロセッサのいずれの実行形式にも変換可能な中間言語に変換するステップと、
中間言語形式の前記監視用プログラムを、前記コントローラに向けてダウンロードするダウンロードステップとをコンピュータに実行させる
ことを特徴とするプログラム。
【請求項６】
さらに、ソースプログラム形式のサブプログラムをコンパイルし、メインプロセッサの実行形式に変換するステップを含み、
前記ダウンロードステップでは、中間言語形式の前記監視用プログラムと、実行形式の前記サブプログラムおよび前記メインプログラムとを、前記コントローラに向けてダウンロードする
ことを特徴とする請求項５に記載のプログラム。
【請求項７】
請求項１〜４のいずれかに記載のコントローラにメインプログラムと監視プログラムとを提供するプログラム提供方法であって、
実行形式のサブプログラムを呼び出して実行する、メインプロセッサの実行形式の前記メインプログラムを作成するステップと、
ソースプログラム形式の前記監視プログラムを前記メインプロセッサおよび監視用プロセッサのいずれの実行形式にも変換可能な中間言語に変換するステップと、
中間言語形式の前記監視用プログラムを、前記コントローラに向けてダウンロードするダウンロードステップとを含む
ことを特徴とするプログラム提供方法。
【請求項８】
プロセッサを２つ有し制御対象機器を制御するコントローラで実行される監視プログラムの分割配信方法であって、
一方のプロセッサでは前記制御対象機器の制御を行なうサブプログラムと、当該サブプログラムを呼び出して実行するメインプログラムとが実行され、
２つのプロセッサのいずれの実行形式にも変換可能な中間言語で記述され、機器から入力する信号が予め定められた条件を満たすか否かを判断するための監視プログラムを、予め定められた規則に基づき分割する分割ステップと、
分割された監視プログラムを前記一方のプロセッサおよび他方のプロセッサに配信する配信ステップとを含む
ことを特徴とする監視プログラムの分割配信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コントローラに関し、特に、複数のプロセッサを有するコントローラに関する。
【０００２】
【従来の技術】
ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）を実現するために、工場等の製造現場では、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）に代表されるコントローラが製品の製造ライン等で従来使用されている。特に、製造現場では、予め定められた時間内に一定の処理を確実に実行することができるコントローラが求められる。
【０００３】
従来のコントローラは、単一のプロセッサがコントローラの外部機器からの入力信号および内部のデータを監視し、一定の条件が満たされた場合に特定のプログラムを起動している（例えば、特許文献１参照。）。
【０００４】
（第１の従来例）
図１４は、従来のコントローラの構成の一例を示したブロック図である。従来のコントローラ９０は、単一のプロセッサ９２とメモリ９４とを含む。
【０００５】
プロセッサ９２は、外部の１つ以上の計測装置（外部機器）３６より出力される計測値をコントローラ９０の入力ポート（図示せず）より入力信号として受ける。メモリ９４には、プロセッサ９２で実行される入力信号の値を監視する監視プログラム９４ａとコントローラ９０の出力ポート（図示せず）に接続された制御対象機器（図示せず）を制御するためのサブプログラム９４ｂとが記憶されている。
【０００６】
プロセッサ９２は、メモリ９４に記憶されている監視プログラム９４ａを常時実行し、入力信号の監視を行なう。プロセッサ９２は、光電センサから出力されるオン信号またはオフ信号や、温度調節器などの計測装置３６から出力されるＰＩＤ（Ｐ：比例、Ｉ：積分、Ｄ：微分）値などを入力信号として入力ポートより受けとりメモリに記憶する。そしてプロセッサが監視プログラム９４ａに沿って実行することで、入力信号が所定の条件を満たすか否かを判断する。所定の条件を満たす場合には、プロセッサ９２は、サブプログラム９４ｂを実行し、当該条件に応じた制御対象機器を制御する。監視プログラム９４ａは、計測装置３６から出力される大量の計測値を入力信号として受け、複雑な条件演算処理を実行しなければならない。このことは、製造装置の分野において特徴的なことである。
【０００７】
（第２の従来例）
図１５は、従来のコントローラの他の構成の一例を示したブロック図である。従来のコントローラ１００は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）に代表される専用ハードウェア１０２と、プロセッサ１０４と、メモリ１０６とを含む。メモリ１０６には、コントローラ１００の出力ポート（図示せず）に接続された制御対象機器（図示せず）を制御するためのサブプログラム９４ｂが記憶されている。
【０００８】
専用ハードウェア１０２は、外部の計測装置３６より出力される計測値を入力信号として受け、所定の条件を満たすか否かを判断するための演算を実行し、所定の条件が満たされた場合に割込信号を出力する。プロセッサ１０４は、当該割込信号に応答して、メモリ１０６に記憶されているサブプログラム９４ｂを実行する。
【０００９】
（第３の従来例）
図１６は、従来のコントローラのさらに他の構成の一例を示したブロック図である。従来のコントローラ１１０は、上述したコントローラ９０および１００とは異なり、複数のプロセッサを備えるコントローラであり、ラダー言語プロセッサ１１２と、プロセッサ１１４と、メモリ１１６〜１２０とを含む。
【００１０】
メモリ１１６には、コントローラ１１０の入出力ポート（図示せず）より入出力される入出力データ１１６ａが記憶されている。メモリ１１８には、コントローラ１１０の入出力ポートに接続された制御対象機器（図示せず）を制御するための制御プログラム１１８ａが記憶されている。メモリ１２０には、制御対象機器の制御以外の補助的なデータ処理を実行するプログラムであるファームウェア１２０ａが記憶されている。制御プログラム１１８ａは、ラダー言語で記述されたソースプログラムをラダー言語プロセッサ１１２の実行形式に予めコンパイルしたものである。ラダー言語とは、ＰＬＣで汎用的に使われる計算機言語の一種である。
【００１１】
計測装置３６から出力される計測値は入力信号としてラダー言語プロセッサ１１２に入力され、入出力データ１１６ａとしてメモリ１１６に記憶される。ラダー言語プロセッサ１１２では、制御プログラム１１８ａが常に実行され、サイクリックスキャン方式に従い、制御対象機器の制御が実行される。プロセッサ１１４は、ラダー言語プロセッサ１１２と連携を取りつつ、制御対象機器の制御以外の補助的なプログラムを実行する。
【００１２】
【特許文献１】
特開平５−１８１５１２号公報
【００１３】
【発明が解決しようとする課題】
しかしながら、図１４に示される第１の従来例に係るコントローラ９０は、単一のプロセッサ９２が監視プログラム９４ａおよびサブプログラム９４ｂの２つのプログラムを実行している。このため、計測装置３６で何らかの事象が発生してから予め定められたタクトタイムが終了するまでの間に、サブプログラム９４ｂを起動し、制御対象機器を制御し、その処理を終了させるためには極めて処理能力の高いプロセッサ９２とデータの読出しおよび書込みを高速に処理可能なメモリ９４を使用しなければならない。このため、コントローラ９０の材料コストが高くなり、伴って製造コストが高くなるという問題がある。
【００１４】
また、図１５に示される第２の従来例に係るコントローラ１００は、計測装置３６から出力される入力信号の条件演算処理を専用ハードウェア１０２が実行している。このため、条件演算処理を高速に実行することができ、計測装置３６で何らかの事象が発生してから予め定められたタクトタイムが終了するまでの間に、確実に制御対象機器の処理を終了させるように制御可能である。その反面、入力信号の条件演算処理を専用ハードウェア１０２が担当しているため、予め定められた入力信号に対する予め定められた条件演算処理しか実行できない。よって、コントローラ１００を使用する製造装置が変われば計測装置３６も変わるので、それに伴い専用ハードウェア１０２も変えなければならない。また、入力信号数が多く条件演算処理が複雑な場合には、専用ハードウェア１０２の設計および開発に時間とコストとを要する。このように専用ハードウェア１０２を用いて入力信号の条件判断を行なうコントローラ１００は、製造装置の変化に柔軟に対応できないという問題がある。
【００１５】
さらに、図１６に示される第３の従来例に係るコントローラ１１０は、ラダー言語プロセッサ１１２およびプロセッサ１１４の２つのプロセッサを備えてはいるものの、ラダー言語プロセッサ１１２がサイクリックスキャン方式に従い計測装置３６からの入力信号に基づいて制御対象機器を制御しており、プロセッサ１１４は補助的な処理を実行するのみである。このため、ラダー言語プロセッサ１１２に接続されたメモリ１１６および１１８に大容量のメモリを使用しなければならず、コントローラ１１０の製造コストが高くなるという問題がある。また、プロセッサ１１４で補助的に実行されるプログラムはファームウェア１２０ａとして固定化されており、ユーザが自由にプログラムをすることができない。このため、コントローラ１１０は、製造装置の変化に柔軟に対応できないという問題がある。
【００１６】
そこで、本発明は、上述の問題点を解決するためになされたものであり、高機能かつ低製造コストのコントローラを提供することを目的とする。
また、製造装置の変化に柔軟に対応することができるコントローラを提供することも目的とする。
【００１７】
【課題を解決するための手段】
上記目的を達成するために本発明に係るコントローラは、制御対象装置を制御するコントローラであって、外部の機器から入力した信号が予め定められた条件を満たすか否かを判断するための監視プログラムと、前記条件と対応付けられ、前記制御対象機器の制御を行なうサブプログラムと、当該サブプログラムを呼び出して実行するメインプログラムとが記憶されたメモリ（第１の実施形態では「メモリ」および「共有メモリ」に対応。）と、前記監視プログラムの少なくとも一部を実行する監視用プロセッサと、前記メインプログラムを実行するメインプロセッサとを備え、前記監視プログラムは、前記入力信号が前記条件を満たした場合に、前記メインプログラムに対してイベントを送信するプログラムであり、前記メインプログラムは、前記イベントに応答して、当該条件に対応する前記サブプログラムを呼び出して実行し、当該条件に応じた前記制御対象機器を制御するプログラムであることを特徴とする。
【００１８】
この構成によると、コントローラに２つのプロセッサを使用しており、監視用プロセッサは、外部の機器から入力した入力信号の監視用として使用され、メインプロセッサは、制御対象機器の制御用として使用される。このように、プロセッサにかかる負荷を分散させているため、安価なプロセッサ２つでコントローラを構成することができる。このため、制御性能を保障した機能でかつ低製造コストのコントローラを提供することができる。
【００１９】
なお、「機器」は、コントローラの外部の機器であり、具体的には、メカニカルスイッチ、光電スイッチ、近接スイッチなどのオンオフ動作する機器や、距離計、圧力計、温度計などの物理量を計測する計測装置（計測器）や、光などを検出するセンサを含むものである。また、温度調節器、位置決め装置などの制御に関する信号を出力する装置も含む。実施の形態で「計測装置」と呼んでいるものは、この機器に相当する。
【００２０】
また「入力する信号」とは、外部の機器から出力された信号を含む。具体的には、スイッチなどの接点状態としてのオン／オフ信号や、センサなどのセンシング信号、計測装置の計測値、制御に関する信号なども含む。実施の形態で「計測値」や「入力信号」と呼んでいる信号は、この「入力信号」に相当する。
【００２１】
なおまた、「予め定められた条件を満たすか否かを判断する」とは、機器の状態を判断して予め定められた状態に変化したか否かを識別する意味を含む。または機器になんらかの事象が発生したことを判断することも含む。具体的な例は、あるスイッチがオフからオンに変化したことを判断することや、計測器の計測結果が所定のしきい値を超えたことを判断すること、温度調節器が異常状態になったことなどがある。つまり「条件」というのは、コントローラにとって、制御に関わる入力情報がある状態になることを判断するための「基準」という意味で、換言すると機器で生じた事象に基づいて何らかの制御をするかどうかを決めるための「基準」と言う意味でもある。
【００２２】
また、前記メモリには、さらに、予め定められた規則に従い、前記監視プログラムを、前記監視用プロセッサで実行される第１監視プログラムと前記メインプロセッサで実行される第２監視プログラムとに分割する分割プログラムと、分割された前記第１監視プログラムおよび前記第２監視プログラムを前記メモリに格納する格納プログラム（実施形態では「交換配信プログラム」に対応。）とが記憶されており、前記監視用プロセッサは、前記メモリに記憶された前記第１監視プログラムを実行し、前記メインプロセッサは、前記メインプログラムと、前記第２監視プログラムと、前記分割プログラムと、前記格納プログラムとを実行するようにしてもよい。
【００２３】
このように、監視プログラムの一部をメインプロセッサで実行させている。これにより、プロセッサにかかる負荷をさらに効率的に分散させることが可能となる。このため、より安価なプロセッサ２つでコントローラを構成することができる。つまりは、制御プログラムの構成に柔軟に対応しつつ、高機能かつ低製造コストのコントローラを提供することができる。
【００２４】
さらに、前記分割プログラムは、所定の時間内に前記メインプロセッサが処理可能な命令のステップ数と、前記メインプロセッサで実行される前記サブプログラムのうちの最大ステップ数との差以下の命令のステップ数を有するように前記第２監視プログラムを作成するプログラムであってもよい。
【００２５】
これにより、メインプロセッサでは、処理可能な命令のステップ数を超える処理を負担することはなくなる。このため、メインプロセッサで実行されるサブプログラムの処理時間が確保でき、所定の時間内に制御対象機器の処理が確実に実行されることが保証される。
【００２６】
さらにまた、前記監視プログラムは前記メインプロセッサおよび前記監視用プロセッサのいずれの実行形式にも変換可能な中間言語で記述されており、前記格納プログラムは、前記中間言語で記述された前記第１監視プログラムを前記監視用プロセッサの実行形式に変換してから格納し、前記中間言語で記述された前記第２監視プログラムを前記メインプロセッサの実行形式に変換してから格納するプログラムであってもよい。
【００２７】
これにより、格納プログラムは、中間言語形式で記述された監視プログラムを実行形式に変換するのみでよく、コントローラに大規模なコンパイラを用意する必要がなくなる。また、コントローラにはメインプロセッサおよび監視プロセッサのいずれの実行形式にも変換可能な中間言語の監視プログラムが供給されるため、コンピュータによる監視プログラムの変更に柔軟に対応することができる。
【００２８】
また、前記中間言語は、ＩＥＣ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ）６１１３１−３で規定されているＩＬ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｌｉｓｔ）言語であってもよい。
【００２９】
この言語は、ニーモニックプログラムを記述可能な中間言語であり、機械語に近いレベルの記述が可能である。したがって、この中間言語を実行形式に変換するために必要なコンパイラは小規模なもので済む。よって、コントローラに用意しなければならないコンパイラをより小規模なものにすることができる。
【００３０】
また、前記監視用プロセッサと前記メインプロセッサとは通信網を介して相互に接続されていてもよい。この発明は、第２の実施形態で実現されている。
これにより、外部の機器が離れた位置に存在する場合であっても２つのプロセッサで外部の機器の監視をすることができる。
【００３１】
また、前記監視用プロセッサは、ラダー言語で記述されたプログラムを実行するプロセッサであってもよい。ラダー言語のプロセッサはリアルタイム性能に優れていて、監視処理に適している。したがって、専用のプロセッサは通常のプロセッサに比べて高性能にでき、安価である。このため、より製造コストの低いコントローラを提供することができる。
【００３２】
本発明の他の局面に係るプログラムは、上述のコントローラにメインプログラムと監視プログラムとを供給するプログラムであって、実行形式のサブプログラムを呼び出して実行する、メインプロセッサの実行形式の前記メインプログラムを作成するステップと、ソースプログラム形式の前記監視プログラムを前記メインプロセッサおよび監視用プロセッサのいずれの実行形式にも変換可能な中間言語に変換するステップと、中間言語形式の前記監視用プログラムを、前記コントローラに向けてダウンロードするダウンロードステップとをコンピュータに実行させることを特徴とする。
【００３３】
このように、コンピュータからコントローラに提供される監視プログラムは予めメインプロセッサおよび監視プロセッサのいずれの実行形式にも変換可能な中間言語に変換され、コントローラに向けてダウンロードされる。このため、コントローラは中間言語形式で記述された監視プログラムを実行形式に変換するのみでよく、コントローラに大規模なコンパイラを用意する必要がなくなる。また、コントローラにはメインプロセッサおよび監視プロセッサのいずれの実行形式にも変換可能な中間言語の監視プログラムが供給されるため、コンピュータによる監視プログラムの変更に柔軟に対応することができる。
【００３４】
本発明のさらに他の局面に係る監視プログラムの分割配信方法は、プロセッサを２つ有し制御対象機器を制御するコントローラで実行される監視プログラムの分割配信方法であって、一方のプロセッサでは前記制御対象機器の制御を行なうサブプログラムと、当該サブプログラムを呼び出して実行するメインプログラムとが実行され、２つのプロセッサのいずれの実行形式にも変換可能な中間言語で記述され、外部の機器から出力される計測値が予め定められた条件を満たすか否かを判断するための監視プログラムを、予め定められた規則に基づき分割する分割ステップと、分割された監視プログラムを前記一方のプロセッサおよび他方のプロセッサに配信する配信ステップとを含むことを特徴とする好ましくは、前記分割ステップでは、所定の時間内に前記一方のプロセッサが処理可能な命令のステップ数と、前記一方のプロセッサで実行される前記サブプログラムのうちの最大ステップ数との差以下の命令のステップ数を有するように前記監視プログラムを分割する。
【００３５】
これにより、メインプロセッサでは、処理可能な命令のステップ数を超える処理を負担することはなくなる。このため、メインプロセッサで実行されるサブプログラムの処理時間が確保でき、所定の時間内に制御対象機器の処理が確実に実行されることが保証される。
【００３６】
【発明の実施形態】
以下、本発明の実施形態に係るコントローラについて図面を用いて詳細に説明する。
【００３７】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るコントローラの周辺環境を示した図である。コントローラ３４は、製造現場で用いられ、製品の製造装置等を制御するためのものである。コントローラ３４で実行されるプログラムは、予めパーソナルコンピュータやＥＷＳ（Ｅｎｇｉｎｅｅｒｉｎｇ  Ｗｏｒｋｓｔａｔｉｏｎ）などのコンピュータ３２で作成され、コントローラ３４にダウンロードされる。
【００３８】
コントローラ３４には、光電センサ３６ａ、圧力スイッチ３６ｂ、温度調節器３６ｃなどの計測装置（外部の機器）３６が接続されている。コントローラ３４は、計測装置３６の出力を入力信号として受け、プログラムを実行することで入力信号が所定の条件を満たすか否かの判断を行ない、所定の条件が満たされた場合には、制御対象機器（図示せず）を制御する。制御対象機器としては、ロボットアームやベルトコンベアなど製造装置に応じて様々なものが考えられる。
【００３９】
図２は、コントローラ３４の内部構成を示したブロック図である。コントローラ３４は２つのプロセッサにより制御対象機器の制御を行なう装置であり、主に計測装置３６からの入力信号を監視し、所定の条件を満たすか否かを判断する監視用プロセッサ４２と、主に制御対象機器を制御するメインプロセッサ４６と、監視用プロセッサ４２およびメインプロセッサ４６の双方に接続された共有メモリ４４と、メインプロセッサ４６のみに接続されたメモリ４８とを含む。
【００４０】
メモリ４８には、内部変数値４８ａと、分割プログラム４８ｂと、交換配信プログラム４８ｃと、監視プログラム４８ｄと、監視プログラム４８ｅと、サブプログラム４８ｆと、メインプログラム４８ｇとが記憶されている。
【００４１】
内部変数値４８ａは、コントローラ３４の内部状態を表す値である。監視プログラム４８ｄは、コンピュータ３２で開発され、計測装置３６からの入力信号を監視するようにメインプロセッサを動作させるためのプログラムであり、監視用プロセッサ４２およびメインプロセッサ４６のいずれの実行形式にも変換可能な中間言語形式で記述されている。サブプログラム４８ｆは、制御対象機器の制御処理を実行するためのプログラムであり、メインプロセッサ４６の実行形式で記述されている。メインプログラム４８ｇは、監視プログラム４８ｅからの指示に基づいてサブプログラム４８ｆを呼び出して実行する。分割プログラム４８ｂは、監視プログラム４８ｄを監視用プロセッサ４２で実行される部分とメインプロセッサ４６で実行される部分とに分割するプログラムである。交換配信プログラム４８ｃは、２つに分割された中間言語形式の監視プログラムを、それぞれコンパイルして実行形式に変換し、共有メモリ４４およびメモリ４８に配信するプログラムである。監視プログラム４８ｅは、交換配信プログラム４８ｃにより配信された実行形式のプログラムである。
【００４２】
共有メモリ４４には、入力データ４４ａと、内部変数値４４ｂと、監視プログラム４４ｃとが記憶されている。
入力データ４４ａは、計測装置３６より出力される計測値のことで、つまりは外部の各機器から入力するそれぞれの入力信号のことである（以下、計測値と呼ぶ）。内部変数値４４ｂは、メモリ４８に記憶された内部変数値４８ａをコピーしたものである。メインプロセッサ４６は一定の周期でメモリ４８に記憶された内部変数値４８ａを内部変数値４４ｂとして共有メモリ４４にコピーする。監視プログラム４４ｃは、交換配信プログラム４８ｃにより配信された実行形式のプログラムである。
【００４３】
計測装置３６より出力される計測値は、コントローラ３４の入力ポート（図示せず）より入力され、共有メモリ４４に入力データ４４ａが記憶される。
監視用プロセッサ４２上では、監視プログラム４４ｃが常に実行されている。監視プログラム４４ｃは、入力データ４４ａおよび内部変数値４４ｂを入力とし、所定の条件を満たすか否かを判断するプログラムである。
【００４４】
メインプロセッサ４６上では、監視プログラム４８ｅが常に実行されている。監視プログラム４８ｅは、入力データ４４ａおよび内部変数値４８ａを入力とし、所定の条件を満たすか否かを判断するプログラムである。
【００４５】
監視プログラム４４ｃまたは４８ｅで所定の条件を満たすと判断された場合には、メインプログラム４８ｇが制御対象機器を制御するための当該条件に応じたサブプログラム４８ｆを呼びだし実行する。
【００４６】
図３は、コントローラ３４で実行されるプログラムが生成されるまでの過程を示す図である。以下、この図を適宜参照しながらコンピュータ３２およびコントローラ３４でのプログラムの作成方法について説明する。
【００４７】
［コンピュータ３２におけるプログラムの開発処理］
図４は、コンピュータ３２におけるプログラムの開発処理を示すフローチャートである。ユーザは、コンピュータ３２上でサブプログラム５２ａと監視プログラム５２ｂとからなるソースプログラムを作成する（Ｓ２）。ユーザは、サブプログラム５２ａをメインプロセッサ４６用のコンパイラを用いて実行形式に変換し、実行形式のサブプログラム４８ｆを作成する。また、その際に実行形式のメインプログラム４８ｇがコンピュータ３２により自動生成される（Ｓ４）。ユーザは、監視プログラム５２ｂを、コンパイラを用いて監視用プロセッサ４２およびメインプロセッサ４６のいずれの実行形式にも変換可能な中間言語形式の監視プログラム４８ｄに変換する（Ｓ６）。ユーザは、コンピュータ３２からコントローラ３４へ、監視プログラム４８ｄ、メインプログラム４８ｇおよびサブプログラム４８ｆをダウンロードする（Ｓ８）。ダウンロードされた３つのプログラムは上述のようにメモリ４８に記憶される。
【００４８】
図５は、ソースプログラム作成処理（図４のＳ２）で作成されるソースプログラムに含まれるサブプログラムの一例を示す図である。ここでは、サブプログラムＢには、ＳＵＢ＿Ｂという識別子が付されており、「コントローラ３４の１００番地の出力ポート（図示せず）から１を出力する。」という意味の命令が記述されている。これにより、ある制御対象機器を上昇させるためのモータがＯＮとなる。
【００４９】
図６は、サブプログラム変換処理（図４のＳ４）において図５に示されるサブプログラム５２ａを実行形式に変換する際に、自動生成されるメインプログラム４８ｇのソースコードの一例を示す図である。メインプログラム４８ｇにはサブプログラム５２ａの出現順に連続する番号がメッセージコードとして付加される。
【００５０】
メインプログラム４８ｇでは、まず、命令「ＧＥＴ＿ＭＥＳＳＡＧＥ」が呼び出され、実行される。命令「ＧＥＴ＿ＭＥＳＳＡＧＥ」は、実行形式の監視プログラム４４ｃまたは４８ｅよりメッセージコードを受取るまで待機し、受取ったメッセージコードを変数ＭＥＳＳＡＧＥ＿ＣＯＤＥに格納する。その後、メインプログラム４８ｇでは、変数ＭＥＳＳＡＧＥ＿ＣＯＤＥの値に応じたサブプログラムが呼び出され、実行される。メインプログラム４８ｇは上述の処理を繰り返し実行する。すなわち、メインプログラム４８ｇはイベント駆動型のプログラム構成となっている。
【００５１】
図７は、メッセージコードとサブプログラムとの対応表である。この対応表は、サブプログラム変換処理（図４のＳ４）の際に合わせて作成され、監視プログラム変換処理（図４のＳ６）において参照される。ここでは、例えば、メッセージコード１がサブプログラムＢ（ＳＵＢ＿Ｂ）に対応付けられている。
【００５２】
図８は、ソースプログラム作成処理（図４のＳ２）で作成される監視プログラム５２ｂの一例を示す図である。ここでは、計測装置３６として２つのセンサと１つの水位計とを想定している。２つのセンサの入力信号をＳＥＮＳＯＲ１およびＳＥＮＳＯＲ２と表わし、水位計の液量をＬＥＶＥＬＡと表わす。
【００５３】
監視プログラム５２ｂは、例えば図８に示されるようにＩＦ−ＴＨＥＮルールの集合によって構成されており、ＩＦ節に記述された条件が満たされた場合には、ＴＨＥＮ節に記述されたサブプログラムが実行される。たとえば、図８の第１行目には、「信号ＳＥＮＳＯＲ１の値がＯＮであり、信号ＳＥＮＳＯＲ２の値がＯＦＦであり、かつ液量ＬＥＶＥＬＡの値が１００より小さければ、サブプログラムＳＵＢ＿Ｂを呼び出して実行する」という意味のルールが記述されている。
【００５４】
図９は、監視プログラム変換処理（図４のＳ６）で作成される中間言語形式の監視プログラムの一例を示す図である。図９に示される中間言語形式の監視プログラム４８ｄは、図８に示されるソース形式の監視プログラム５２ｂを元にしてＩＥＣ６１１３１−３で規定されているＩＬ言語を用いて記述されたプログラムである。ここで、命令「ＳＥＮＤ＿ＭＥＳＳＡＧＥ」は、引数として与えられたメッセージコードをメインプロセッサ４６に送信するシステム命令である。なお、メッセージコードの値は、上述のようにサブプログラムと一対一に対応付けられている。
【００５５】
コントローラ３４は、コンピュータ３２に比べてメモリ容量に制限があるため、大規模なコンパイラを記憶することができない。また、後述するように、コントローラ３４は、監視プログラムを２つに分割して実行形式にコンパイルする。このため、プロセッサに依存しない中間言語形式の監視プログラム４８ｄを予めコンピュータ３２で作成しておくのがよく、ＩＬ言語は中間言語として最適である。
【００５６】
［コントローラ３４の立ち上げ時処理］
次に、図２に示されるコントローラ３４の電源をＯＮにした場合に、予めコントローラ３４に組み込まれたシステムプログラム（図示せず）により実行される処理について説明する。図１０は、コントローラ３４の電源をＯＮにした場合に実行される処理を示すフローチャートである。
【００５７】
コントローラ３４の電源をＯＮにすると、メインプロセッサ４６が分割プログラム４８ｂを実行し、中間言語形式の監視プログラム４８ｄを監視用プロセッサ４２で実行される部分とメインプロセッサ４６で実行される部分とに分割する（Ｓ１２）。分割の具体的な方法については後に詳述する。
【００５８】
メインプロセッサ４６は、交換配信プログラム４８ｃを実行し、分割された中間言語形式より実行形式の監視プログラム４４ｃおよび４８ｅを作成する（Ｓ１４）。交換配信処理（Ｓ１４）については、後述する。
【００５９】
メインプロセッサ４６は、メモリ４８に記憶されたメインプログラム４８ｇを実行し（Ｓ１５）、メモリ４８に記憶されたメインプロセッサ４６用の実行形式の監視プログラム４８ｅを実行する（Ｓ１６）。また、メインプロセッサ４６は、共有メモリ４４に記憶された監視用プロセッサ４２用の実行形式の監視プログラム４４ｃを実行するように、監視用プロセッサ４２に指示する（Ｓ１８）。
【００６０】
［監視プログラム分割処理（図１０のＳ１２）］
図１１は、中間言語形式の監視プログラム４８ｄを分割するためのルールを示した表である。分割プログラム４８ｂは、この表に示されたルールに従って監視プログラム４８ｄを分割する。例えばルール２に示されるように、監視プログラム４８ｄのうち、条件節（ＩＦ節）に小数点の四則演算がｍ個以上含まれている部分のプログラムはメインプロセッサ４６で実行される監視プログラム５６ｂとされる。
【００６１】
ただし、コントローラ３４は、所定のタクトタイム内に確実に処理が完了するように制御対象機器を制御しなければならない。このため、所定のタクトタイム内でメインプロセッサ４６が処理可能な命令のステップ数と、メインプロセッサ４６で実行されるサブプログラムのうちの最大ステップ数とを求め、処理可能な命令のステップ数と最大ステップ数との差を越えない範囲で、メインプロセッサ４６で実行される監視プログラム５６ｂが割り当てられる。
【００６２】
［交換配信処理（図１０のＳ１４）］
図１２は、交換配信プログラム４８ｃに基づいて実行される交換配信処理（図１０のＳ１４）のフローチャートである。メインプロセッサ４６は、監視プログラム分割処理（図１０のＳ１２）により分割された中間言語形式の監視プログラムのうち、監視用プロセッサ４２が実行を担当する監視プログラム５６ａを実行形式にコンパイルする（Ｓ２２）。メインプロセッサ４６は、コンパイルされた監視プログラム４４ｃを共有メモリ４４に格納する（Ｓ２４）。次に、メインプロセッサ４６は、分割された中間言語形式の監視プログラムのうち、メインプロセッサ４６が実行を担当する監視プログラム５６ｂを実行形式にコンパイルする（Ｓ２６）。メインプロセッサ４６は、コンパイルされた監視プログラム４８ｅをメモリ４８に格納する（Ｓ２８）。
【００６３】
上述した処理により監視用プロセッサ４２において監視プログラム４４ｃが実行され、メインプロセッサ４６において監視プログラム４８ｄが実行される。また、メインプロセッサ４６においては、メインプログラム４８ｇが実行される。監視用プロセッサ４２において監視プログラム４４ｃが実行されることで、共有メモリ４４に記憶された入力データ４４ａおよび内部変数値４４ｂの状態が所定の条件を満たすか否かが判断され、所定の条件が満たされた場合には、メインプロセッサ４６にその条件に対応したメッセージコードを送信する。メッセージコードを受信したメインプロセッサ４６は、メインプログラムの実行によって当該メッセージコードに対応するサブプログラムをイベント駆動し、サブプログラムが実行される。
【００６４】
以上のように、第１の実施形態によれば、コントローラ３４に２つのプロセッサ４２および４６を使用しており、監視用プロセッサ４２は主に入力信号の監視用として使用し、メインプロセッサ４６は主に制御対象機器の制御用として使用している。このように、プロセッサにかかる負荷を分散させているため、安価なプロセッサ２つでコントローラ３４を構成することができる。このため、高機能かつ低製造コストのコントローラ３４を提供することができる。
【００６５】
また、入力信号の監視処理をソフトウェア処理により行なっている。このため、製造装置の変化に伴い計測装置３６が変化しても、ソフトウェアを作り直すだけで柔軟に対応することができる。
【００６６】
さらに、コントローラ３４では分割プログラム４８ｂが実行される。これにより、監視用プロセッサ４２にかかる負荷をさらに効率的に分散させることが可能となる。このため、より安価なプロセッサ２つでコントローラ３４を構成することができ、高機能かつ低製造コストのコントローラ３４を提供することができる。
【００６７】
さらにまた、コンピュータ３２からコントローラ３４に提供される監視プログラム４８ｄは予め汎用的に解読可能な中間言語に変換され、その後、交換配信プログラム４８ｃに従って２つのプロセッサ４２および４６の各々に対応した実行形式の監視プログラム４４ｃおよび４８ｅに変換される。このため、コントローラ３４は中間言語形式で記述された監視プログラム４８ｄを実行形式に変換するのみでよく、コントローラ３４に大規模なコンパイラを用意する必要がなくなる。また、コントローラ３４には汎用的に解読可能な中間言語の監視プログラム４８ｄが供給されるため、コンピュータ３２による監視プログラム４８ｄの変更に柔軟に対応することができる。
【００６８】
（第２の実施形態）
次に、プロセッサがネットワーク接続されたコントローラの実施形態について説明する。なお、第１の実施形態と同一の構成要素には同一の参照符号を付し、適宜説明を省略する。
【００６９】
図１３は、本発明の第２の実施形態に係るコントローラの内部構成を示したブロック図である。第２の実施形態に係るコントローラ６０は、２つのプロセッサにより制御対象機器の制御を行なう装置であり、第１コントロール部６１と、ネットワーク６４を介して第１コントロール部６１に接続された第２コントロール部６３とを含む。
【００７０】
第１コントロール部６１は、主に制御対象機器を制御する装置であり、通信モジュール６２ｂと、共有メモリ７４と、メインプロセッサ７６と、メモリ４８とを含む。
【００７１】
通信モジュール６２ｂは、ネットワーク６４を介して第２コントロール部６３に接続されており、第２コントロール部６３との間でデータ通信を行なう。
メモリ４８には、内部変数値４８ａと、分割プログラム４８ｂと、交換配信プログラム４８ｃと、監視プログラム４８ｄと、監視プログラム４８ｅと、サブプログラム４８ｆと、メインプログラム４８ｇとが記憶される。
【００７２】
共有メモリ７４には入力データ７４ａが記憶されている。入力データ７４ａは、第１コントロール部６１の入力ポート（図示せず）に接続された光電センサ等の計測装置７２の計測値と、第２コントロール部６３の入力ポート（図示せず）に接続された計測装置３６の計測値とを合わせたデータである。
【００７３】
メインプロセッサ７６は、通信モジュール６２ｂを制御してデータの送受信を行う。メインプロセッサ７６は、通信モジュール６２ｂを介して計測装置７２の計測値を第２コントロール部６３に送信するとともに、通信モジュール６２ｂを介して第２コントロール部６３より受信した計測装置３６の計測値を共有メモリ７４に記憶する。それ以外のメインプロセッサ７６で実行される処理は第１の実施形態と同様である。
【００７４】
第２コントロール部６３は、主に、計測装置３６および７２からの入力信号を監視し、所定の条件を満たすか否かを判断する装置であり、通信モジュール６２ａと、共有メモリ６６と、監視用プロセッサ６８と、メモリ７０とを含む。
【００７５】
通信モジュール６２ａは、ネットワーク６４を介して第１コントロール部６１に接続され、第１コントロール部との間でデータ通信を行なう。
メモリ７０には、内部変数値４４ｂと監視プログラム４４ｃとが記憶される。
【００７６】
共有メモリ６６には入力データ４４ａが記憶されている。入力データ４４ａは、第１コントロール部６１の入力ポートに接続された計測装置７２の計測値と、第２コントロール部６３の入力ポートに接続された計測装置３６の計測値とを合わせたデータである。すなわち、入力データ４４ａと入力データ７４ａとは常に同一なものである。
【００７７】
監視用プロセッサ６８は、通信モジュール６２ａを制御してデータの送受信を行う。監視用プロセッサ６８は、通信モジュール６２ａを介して計測装置３６の計測値を第１コントロール部６１に送信するとともに、通信モジュール６２ａを介して第１コントロール部６１より受信した計測装置７２の計測値を共有メモリ６６に記憶する。それ以外の監視用プロセッサ６８で実行される処理は第１の実施形態と同様である。
【００７８】
第２の実施形態によれば、第１の実施形態における効果に加え、ネットワーク６４を介して複数の計測装置３６および７２の入力信号を共有することが可能である。このため、計測装置３６および７２や制御対象機器が離れた位置に存在する場合であっても制御対象機器を制御可能な安価なコントローラ６０を提供することができる。
【００７９】
以上、本発明に係るコントローラについて、実施形態に基づいて説明したが、本発明は、この実施形態に限定されるものではない。
たとえば、メインプロセッサ４６（７６）では監視プログラム４８ｅの実行を行なわずに、監視用プロセッサ４２（６８）のみが監視プログラム４４ｃを実行するようにしてもよい。
【００８０】
また、監視用プロセッサ４２（６８）にラダー言語で記述されたプログラムを専門的に実行するプロセッサを用いるようにしてもよい。一般に、このような専用のプロセッサは通常のプロセッサよりも安価である。このため、より製造コストの低いコントローラ３４（６０）を提供することができる。
【００８１】
【発明の効果】
以上のように、本発明によると、高機能かつ低製造コストのコントローラを提供することができる。
【００８２】
また、製造装置の変化に柔軟に対応することができるコントローラを提供することもできる。
このため、特に、製品ごとに製造装置が変わるような多品種少量生産の製造ラインを構築する際にはその実用的価値は極めて高い。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るコントローラの周辺環境を示した図である。
【図２】本発明の第１の実施形態に係るコントローラの内部構成を示したブロック図である。
【図３】コントローラで実行されるプログラムが生成されるまでの過程を示す図である。
【図４】コンピュータおけるプログラムの開発処理を示すフローチャートである。
【図５】ソースプログラム作成処理で作成されるソースプログラムに含まれる複数のサブプログラムを示す図である。
【図６】サブプログラム変換処理においてサブプログラムを実行形式に変換する際に、自動生成されるメインプログラムのソースコードの一例を示す図である。
【図７】メッセージコードとサブプログラムとの対応表である。
【図８】ソースプログラム作成処理で作成される監視プログラムの一例を示す図である。
【図９】監視プログラム変換処理で作成される中間言語形式の監視プログラムの一例を示す図である。
【図１０】コントローラの電源をＯＮにした場合に実行される処理を示すフローチャートである。
【図１１】中間言語形式の監視プログラムを分割するためのルールを示した表である。
【図１２】交換配信プログラムに基づいて実行される交換配信処理のフローチャートである。
【図１３】本発明の第２の実施形態に係るコントローラの内部構成を示したブロック図である。
【図１４】従来のコントローラの構成の一例を示したブロック図である。
【図１５】従来のコントローラの他の構成の一例を示したブロック図である。
【図１６】従来のコントローラのさらに他の構成の一例を示したブロック図である。
【符号の説明】
３２  コンピュータ
３４，６０，９０，１００，１１０  コントローラ
３６  計測装置
３６ａ  光電センサ
３６ｂ  圧力スイッチ
３６ｃ  温度調節器
４２，６８  監視用プロセッサ
４４，６６，７４  共有メモリ
４４ａ，７４ａ  入力データ
４４ｂ，４８ａ  内部変数値
４４ｃ，４８ｄ，４８ｅ，５２ｂ，５６ａ，５６ｂ，９４ａ  監視プログラム
４６，７６  メインプロセッサ
４８，７０，９４，１０６，１１６，１１８，１２０  メモリ
４８ｂ  分割プログラム
４８ｃ  交換配信プログラム
４８ｆ  メインプログラム
５２ａ，９４ｂ  サブプログラム
６１  第１コントロール部
６２ａ，６２ｂ  通信モジュール
６３  第２コントロール部
６４  ネットワーク
７２  計測装置
９２，１０４，１１４  プロセッサ
１０２  専用ハードウェア
１１２  ラダー言語プロセッサ
１１６ａ  入出力データ
１１８ａ  制御プログラム
１２０ａ  ファームウェア
【図１】
2004280222.tif 000003
【図２】
2004280222.tif 000004
【図３】
2004280222.tif 000005
【図４】
2004280222.tif 000006
【図５】
2004280222.tif 000007
【図６】
2004280222.tif 000008
【図７】
2004280222.tif 000009
【図８】
2004280222.tif 000010
【図９】
2004280222.tif 000011
【図１０】
2004280222.tif 000012
【図１１】
2004280222.tif 000013
【図１２】
2004280222.tif 000014
【図１３】
2004280222.tif 000015
【図１４】
2004280222.tif 000016
【図１５】
2004280222.tif 000017
【図１６】
2004280222.tif 000018