(57)【要約】  ＣＰＵユニット（１００）は、演算装置として、命令を処理するＭＰＵ（１４２）及びＦＰＧＡ（１４３）とを有する。命令は、命令を処理する演算装置としてユーザが選択した演算装置を示す演算装置情報を含む。ＭＰＵ（１４２）は、演算装置情報がＭＰＵ（１４２）を示す場合、命令を処理する。ＦＰＧＡ（１４３）は、演算装置情報がＦＰＧＡ（１４３）を示す場合、命令を処理する。演算装置情報が変更されると、変更後の演算装置情報に基づいて、ＭＰＵ（１４２）またはＦＰＧＡ（１４３）が命令を処理する。
2019171501.tif 000002
【特許請求の範囲】
【請求項１】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスとを有するプログラマブルロジックコントローラのＣＰＵユニットであって、
ユーザプログラム内の命令それぞれは、ユーザが選択した、前記命令を処理する演算装置を示す演算装置情報を含み、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
プログラマブルロジックコントローラのＣＰＵユニット。
【請求項２】
前記演算装置として、ＡＳＩＣを更に備え、
前記命令は、前記ＡＳＩＣが実行可能な特定の命令と、前記特定の命令以外のＡＳＩＣ非対応命令とを含み、
前記ＡＳＩＣは、前記特定の命令を処理し、
前記ＡＳＩＣ非対応命令が含む前記演算装置情報は、前記マイクロプロセッサ及び前記プログラマブルロジックデバイスのうち、前記ＡＳＩＣ非対応命令を処理する演算装置を示し、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記ＡＳＩＣ非対応命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記ＡＳＩＣ非対応命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記ＡＳＩＣ非対応命令を処理する、
請求項１に記載のプログラマブルロジックコントローラのＣＰＵユニット。
【請求項３】
前記ＡＳＩＣが処理する前記特定の命令は、前記特定の命令を処理する演算装置を示す演算装置情報を含む、
請求項２に記載のプログラマブルロジックコントローラのＣＰＵユニット。
【請求項４】
ＣＰＵユニットと、前記ＣＰＵユニットに検出器の出力データを供給する入力ユニットと、前記ＣＰＵユニットから被制御機器を制御するための制御データが供給される出力ユニットと、を有するプログラマブルロジックコントローラであって、
前記ＣＰＵユニットは、演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスとを有し、
ユーザプログラム内の命令それぞれは、ユーザが選択した、前記命令を処理する演算装置を示す演算装置情報を含み、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
プログラマブルロジックコントローラ。
【請求項５】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するＣＰＵユニットが、ユーザプログラムを実行する方法であって、
前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれかが、前記ユーザプログラム内の命令を処理するステップ、
を含み、
前記命令は、ユーザが選択した、前記命令を処理する前記演算装置を示す演算装置情報を含み、
前記ステップにおいて、前記演算装置情報が前記マイクロプロセッサを示す場合、前記マイクロプロセッサが前記命令を処理し、
前記ステップにおいて、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記プログラマブルロジックデバイスが前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
方法。
【請求項６】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットに、接続可能であるコンピュータであって、
前記コンピュータは、
ユーザプログラムと、前記プログラマブルロジックデバイスの定義情報と、を記憶する記憶部と、
前記ユーザプログラムと前記定義情報とに基づいて、前記ユーザプログラム内の命令から、前記プログラマブルロジックデバイスが処理する第１命令と、前記プログラマブルロジックデバイスが処理しない第２命令とを判別する判別部と、
前記第１命令と判別された命令の、前記命令を処理する演算装置を示す演算装置情報を、前記プログラマブルロジックデバイスを示す値で更新する更新部と、
前記演算装置情報が更新された前記ユーザプログラムを、前記ＣＰＵユニットの記憶部に転送する転送部と、
を備えるコンピュータ。
【請求項７】
前記プログラマブルロジックデバイスの定義情報は、命令それぞれの処理のため使用される前記プログラマブルロジックデバイスのゲート数と前記プログラマブルロジックデバイスの総ゲート数とを含み、
前記判別部は、前記ゲート数と前記総ゲート数に基づいて、前記第１命令と前記第２命令とをそれぞれ判別する、
請求項６に記載のコンピュータ。
【請求項８】
前記判別部は、更に、前記ユーザプログラム内の前記各命令のコール数と、前記プログラマブルロジックデバイスによる前記各命令の処理時間と、に基づいて、前記プログラマブルロジックデバイスが処理する前記第１命令と、前記プログラマブルロジックデバイスが処理しない前記第２命令とを判別する、
請求項７に記載のコンピュータ。
【請求項９】
前記演算装置情報のデフォルト値は、前記マイクロプロセッサを示す値である、
請求項６から８のいずれか１項に記載のコンピュータ。
【請求項１０】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットに、接続可能であるコンピュータであって、
前記コンピュータは、
ユーザプログラムを記憶する記憶部と、
前記ユーザプログラム内の命令それぞれを処理する演算装置について、前記マイクロプロセッサ及び前記プログラマブルロジックデバイスのうちのどちらかを選択するユーザの指示を受け付ける受付部と、
前記ユーザから前記プログラマブルロジックデバイスを選択する指示を受け付けた場合、前記命令に含まれ、前記命令を処理する演算装置を示す演算装置情報を、前記プログラマブルロジックデバイスを示す値で更新し、前記ユーザから前記マイクロプロセッサを選択する指示を受け付けた場合、前記演算装置情報を、前記マイクロプロセッサを示す値で更新する更新部と、
前記演算装置情報が更新された前記ユーザプログラムを、前記ＣＰＵユニットの記憶部に転送する転送部と、
を備えるコンピュータ。
【請求項１１】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットに、接続可能なコンピュータに実行させるコンピュータプログラムであって、
前記コンピュータプログラムは、前記コンピュータに、
ユーザプログラムと、前記プログラマブルロジックデバイスの定義情報と、に基づいて、前記ユーザプログラム内の命令から、前記プログラマブルロジックデバイスが処理する第１命令と、前記プログラマブルロジックデバイスが処理しない第２命令とを判別させ、
前記第１命令と判別された命令の、前記命令を処理する演算装置を示す演算装置情報を、前記プログラマブルロジックデバイスを示す値で更新させる、
コンピュータプログラム。
【請求項１２】
前記プログラマブルロジックデバイスの定義情報は、命令それぞれの処理のため使用される前記プログラマブルロジックデバイスのゲート数と前記プログラマブルロジックデバイスの総ゲート数とを含み、
前記コンピュータプログラムは、前記コンピュータに、
前記ゲート数と前記総ゲート数に基づいて、前記第１命令と前記第２命令とをそれぞれ判別させる、
請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記コンピュータに、
更に、前記ユーザプログラム内の前記各命令のコール数と、前記プログラマブルロジックデバイスによる前記各命令の処理時間と、に基づいて、前記第１命令と前記第２命令とをそれぞれ判別させる、
請求項１２に記載のコンピュータプログラム。
【請求項１４】
前記演算装置情報のデフォルト値は、前記マイクロプロセッサを示す値である、
請求項１１から１３のいずれか１項に記載のコンピュータプログラム。
【請求項１５】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットに、接続可能なコンピュータに実行させるコンピュータプログラムであって、
前記コンピュータプログラムは、前記コンピュータに、
ユーザプログラム内の命令それぞれを処理する演算装置について、前記マイクロプロセッサ及び前記プログラマブルロジックデバイスのうちのどちらかを選択するユーザの指示を受け付けさせ、
前記ユーザから前記命令の演算装置として前記プログラマブルロジックデバイスを選択する指示を受け付けた場合、前記命令の、前記命令を処理する演算装置情報を、前記プログラマブルロジックデバイスを示す値で更新させ、前記ユーザから前記命令の演算装置として前記マイクロプロセッサを選択する指示を受け付けた場合、前記命令の前記演算装置情報を、前記マイクロプロセッサを示す値で更新させる、
コンピュータプログラム。
【請求項１６】
前記ユーザプログラム内に、同じ前記命令が２以上含まれている場合、前記ユーザの指示に基づいて、同じ前記命令の前記演算装置情報をすべて、前記マイクロプロセッサと前記プログラマブルロジックデバイスのいずれかの演算装置を示す値で更新させる、
請求項１５に記載のコンピュータプログラム。
【請求項１７】
前記ユーザプログラム内に、同じ前記命令が２以上含まれている場合であっても、前記ユーザの指示に基づいて、前記命令の演算装置情報を個別に前記マイクロプロセッサと前記プログラマブルロジックデバイスのいずれかの演算装置を示す値で更新させる、
請求項１５に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラのＣＰＵユニット、プログラマブルロジックコントローラ、方法、コンピュータ、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
ファクトリーオートメーションの分野で使用されているプログラマブルロジックコントローラ（Programmable Logic Controller: PLC）において、ＣＰＵ（Central Processing Unit）ユニットは、特定用途向け集積回路であるＡＳＩＣ（Application Specific Integrated Circuit）と、汎用的な処理を行うマイクロプロセッサ（Microprocessor: MPU）とを備える。ＡＳＩＣは、設計時に決められた特定の処理を実行し、マイクロプロセッサは、ＡＳＩＣが設計上処理することができない処理を実行する。マイクロプロセッサの演算性能は、ＡＳＩＣほど高くないため、マイクロプロセッサの処理能力が、ＣＰＵユニットの動作の高速化の難点となっていた。【０００３】
ＡＳＩＣにすべての命令を処理させれば、ＣＰＵユニットの動作の高速化が可能である。しかし、ＡＳＩＣにプログラム内のすべての処理に特化した演算回路を追加することが必要となり、開発コストがかかりすぎてしまうため現実的ではない。【０００４】
特許文献１には、マイクロプロセッサの処理の一部をプログラマブルロジックデバイスに相当するリコンフィギャラブルプロセッサに実行させる処理の高速化の方法が開示されている。この方法では、プログラマブルロジックデバイスが、処理に時間がかかる関数を含むプログラム要素を実行し、マイクロプロセッサが、関数を含まないプログラム要素を実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２５１７８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の方法では、プログラマブルロジックデバイスは、関数を含むプログラム要素の処理のみを実行する。【０００７】
このため、新規にプログラムを作成する場合、プログラマブルロジックデバイスに実行させたい処理については、その処理を関数に含ませるようユーザが演算装置を意識して初期プログラムを作成しなければならない。【０００８】
また、既存のプログラムのある処理を、マイクロプロセッサではなくプログラマブルロジックデバイスが実行するように変更する場合には、その処理を関数に含ませるようにプログラムを修正する必要があり、手間がかかる。【０００９】
本発明は、上記実情に鑑みてなされたものであり、プログラマブルロジックコントローラにおいて、マイクロプロセッサの処理をプログラマブルロジックデバイスに分散する場合において、プログラム作成後に演算装置の選択を可能とし、さらに、大幅なプログラム修正を要することなく、演算装置の変更を可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の第１の観点に係るプログラマブルロジックコントローラのＣＰＵユニットは、演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスとを有する。ユーザプログラム内の命令それぞれは、ユーザが選択した、命令を処理する演算装置を示す演算装置情報を含む。マイクロプロセッサは、演算装置情報がマイクロプロセッサを示す場合、命令を処理する。プログラマブルロジックデバイスは、演算装置情報がプログラマブルロジックデバイスを示す場合、命令を処理する。演算装置情報が変更されると、変更後の演算装置情報に基づいて、マイクロプロセッサまたはプログラマブルロジックデバイスが命令を処理する。
【発明の効果】
【００１１】
本発明の第１の観点に係るプログラマブルロジックコントローラのＣＰＵユニットにおいては、命令を処理する演算装置としてユーザが選択した演算装置情報がマイクロプロセッサを示す場合、マイクロプロセッサが命令を処理し、命令の演算装置情報がプログラマブルロジックデバイスを示す場合、プログラマブルロジックデバイスが命令を処理する。演算装置情報が変更されると、変更後の演算装置情報に基づいて、マイクロプロセッサまたはプログラマブルロジックデバイスが命令を処理する。このような構成を備えることで、プログラム作成時に各処理を実行する演算装置を意識することなく、プログラム作成後に演算装置の選択が可能となる。さらに、大幅なプログラム修正を要することなく、演算装置の変更が可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係るＰＬＣの構成を示すブロック図
【図２】実施の形態に係るＰＬＣのＣＰＵユニットのプログラムのスキャンのフローチャート
【図３】図２のプログラム実行の詳細なフローチャート
【図４】実施の形態に係る演算装置情報を変更するエンジニアリングツールのメニュー画面の一例を示す図
【図５】実施の形態に係る演算装置情報を変更するエンジニアリングツールのサブメニュー画面の一例を示す図
【図６】実施の形態に係る演算装置情報を変更するエンジニアリングツールの自動選択モードにおける、演算装置の選択の処理を示すフローチャート
【図７】実施の形態に係る演算装置情報を変更するエンジニアリングツールの手動選択モード１における選択画面の一例を示す図
【図８】実施の形態に係る演算装置情報を変更するエンジニアリングツールの手動選択モード２における選択画面の一例を示す図
【図９】実施の形態に係る演算装置情報を変更するエンジニアリングツールの手動選択モード１における選択画面の他の例を示す図
【図１０】実施の形態に係る演算装置情報を変更するエンジニアリングツールの手動選択モード２における選択画面の他の例を示す図
【発明を実施するための形態】
【００１３】
（実施の形態）
以下、本発明の実施の形態に係るプログラマブルロジックコントローラ（Programmable Logic Controller、以下、ＰＬＣと示す）１を説明する。
図１に示すように、ＰＬＣ１は、ＰＬＣ１全体を制御するＣＰＵユニット１００と、ＣＰＵユニット１００の演算の入力データをＣＰＵユニット１００に供給する入力ユニット２００と、ＣＰＵユニット１００から出力データが供給される出力ユニット３００とを含む。
【００１４】
入力ユニット２００には、センサ、スイッチ等を含む検出器９０１が接続されている。入力ユニット２００からＣＰＵユニット１００には、検出器９０１のセンサ、スイッチ等から出力されたオン／オフ信号が供給される。
【００１５】
例えば、入力ユニット２００は、検出器９０１のスイッチがオンしたことの通知としてオン信号を、スイッチがオフしたことの通知としてオフ信号を、ＣＰＵユニット１００に供給する。オン信号を“１”、オフ信号を“０”と表した場合、入力ユニット２００は、スイッチがオンすると、“１”をＣＰＵユニット１００に供給する。入力ユニット２００は、スイッチがオフすると、“０”をＣＰＵユニット１００に供給する。
【００１６】
出力ユニット３００には、アクチュエータ、表示灯等を含む被制御機器９０２が接続されている。ＣＰＵユニット１００から出力ユニット３００には、被制御機器９０２のアクチュエータ、表示灯等を制御するオン／オフ信号が供給される。
【００１７】
例えば、ＣＰＵユニット１００は、被制御機器９０２のアクチュエータを駆動させる指示としてオン信号を、アクチュエータを停止させる指示としてオフ信号を、出力ユニット３００に供給する。オン信号を“１”、オフ信号を“０”として表した場合、ＣＰＵユニット１００は、アクチュエータを駆動させるため、“１”を出力ユニットに供給する。ＣＰＵユニット１００は、アクチュエータを停止させるため、“０”を出力ユニットに供給する。
【００１８】
ＣＰＵユニット１００と入力ユニット２００と出力ユニット３００とは、共有バス４００を介して接続され、共有バス４００を介して通信を行う。また、図示していないが、ＣＰＵユニット１００と入力ユニット２００と出力ユニット３００とは、ベースユニットを介して電源ユニットに接続されており、電源ユニットから供給される電源によって動作する。
【００１９】
ＣＰＵユニット１００は、各種データを記憶する記憶部１１０と、後述するエンジニアリングツール５００との通信のためのツールインタフェース１２０と、共有バス４００を介した通信のための共有バスインタフェース１３０と、演算装置としてＡＳＩＣ（Application Specific Integrated Circuit）１４１とマイクロプロセッサ１４２（以下、ＭＰＵ１４２と称する）とＦＰＧＡ（Field Programmable Gate Array）１４３とを有する演算部１４０とを含む。ＣＰＵユニット１００の各部はバス１９０を介して接続されている。ＦＰＧＡ１４３は、プログラマブルロジックデバイスの一例である。
【００２０】
記憶部１１０は、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、メモリカード等を含む。記憶部１１０は、ユーザプログラム１１１を格納する。
【００２１】
ユーザプログラム１１１は、被制御機器９０２を制御するためのプログラムである。ユーザが後述のエンジニアリングツール５００を用いてユーザプログラム１１１を作成する。作成されたユーザプログラム１１１は、ニーモニック方式のアセンブリ言語に変換された後、ＰＬＣ１のＣＰＵユニット１００にアップロードされ、記憶部１１０に格納される。ユーザプログラム１１１において、オン／オフ信号の入力により、各命令はオンまたはオフの状態になる。実行されるのはオンの状態になった命令のみである。
【００２２】
ユーザプログラム１１１内の各命令は、当該命令が演算部１４０のいずれの演算装置により実行されるかを示す情報として演算装置情報を含む。例えば、ＡＳＩＣ１４１を“１”、ＭＰＵ１４２を“２”、ＦＰＧＡ１４３を“３”で表すものとし、これらの値を示すビット列が、各命令に追加されている。本実施の形態では、ＡＳＩＣが処理するよう決められた特定の命令については、演算装置情報を変更することができない。
【００２３】
ツールインタフェース１２０は、ＣＰＵユニット１００がエンジニアリングツール５００と通信するためのインタフェースである。ツールインタフェース１２０は、演算部１４０の制御に従って動作する。
【００２４】
共有バスインタフェース１３０は、ＣＰＵユニット１００が共有バス４００を介して入力ユニット２００と出力ユニット３００と通信するための通信インタフェースである。共有バスインタフェース１３０は、演算部１４０の制御に従って動作する。
【００２５】
演算部１４０は、入力ユニット２００から供給される入力データを使用して、ユーザプログラム１１１の各命令を実行する。より具体的には、ユーザプログラム１１１内の各命令の演算装置情報で指定された演算装置が、その命令を実行する。入力データは、検出器９０１のセンサ、スイッチ等が出力したオン／オフ信号を示す値である。演算部１４０は、オン信号により、オンの状態になった命令のみを実行し、演算の結果得られた出力に基づいてオン／オフ信号を出力ユニット３００に供給する。出力ユニット３００は供給されたオン／オフ信号に従って被制御機器９０２を制御する。
【００２６】
ＡＳＩＣ１４１は、命令の実行時に一時的にデータを格納するレジスタ１４１１と、次に実行すべき命令のアドレスを格納するプログラムカウンタ１４１２とを有する。ＡＳＩＣ１４１は、ユーザプログラム１１１の実行において、特定の命令のみを処理する。ＡＳＩＣ１４１は設計段階に決められた特定の命令しか実行できないからである。この特定の命令をＡＳＩＣ対応命令という。また、ユーザプログラム１１１のＡＳＩＣ対応命令以外の命令をＡＳＩＣ非対応命令という。
【００２７】
ＭＰＵ１４２は、命令の実行時に一時的にデータを格納するレジスタ１４２１を有する。ＭＰＵ１４２は、ＡＳＩＣ非対応命令のうち、ＭＰＵ１４２が処理するように選択された命令を処理する。
【００２８】
ＦＰＧＡ１４３は、命令の実行時に一時的にデータを格納するレジスタ１４３１を有する。ＦＰＧＡ１４３は、ＡＳＩＣ非対応命令のうち、ＦＰＧＡ１４３が処理するよう選択された命令を処理する。ＦＰＧＡ１４３については、製造後に、ユーザがＦＰＧＡ１４３の論理回路の構成を変更することが可能である。例えば、ユーザプログラム１１１の変更により、ユーザプログラム１１１に新たな命令が追加され、その命令がＡＳＩＣ対応命令でない場合には、ＡＳＩＣ１４１は、追加された新たな命令を実行することができない。一方、ＦＰＧＡ１４３は、論理回路の構成の変更により、新たに追加された命令を実行することができる。ＭＰＵ１４２も、ＦＰＧＡ１４３と同様に、ＡＳＩＣ非対応命令を実行することができるが、処理速度については、ＦＰＧＡ１４３の方が高速である。
ＭＰＵ１４２が実行する命令とＦＰＧＡ１４３が実行する命令の選択方法については後述する。
【００２９】
入力ユニット２００は、各種データを記憶する記憶部２１０と、ＣＰＵユニット１００とのデータ交換のための共有メモリ２２０と、共有バス４００を介した通信のための共有バスインタフェース２３０と、入力ユニット２００全体を制御するＭＰＵ２４０とを含む。入力ユニット２００の各部はバス２９０を介して接続されている。
【００３０】
記憶部２１０は、ＲＯＭ、ＲＡＭ、メモリカード等を含む。記憶部２１０は、入力ユニット２００の動作のための動作プログラム２１１を格納する。
【００３１】
共有メモリ２２０は、ＣＰＵユニット１００、入力ユニット２００のいずれもが読み書き可能なメモリである。共有メモリ２２０には、検出器９０１のセンサ、スイッチ等が出力したオン／オフ信号を示す値が格納される。
【００３２】
共有バスインタフェース２３０は、入力ユニット２００が共有バス４００を介してＣＰＵユニット１００と通信するための通信インタフェースである。共有バスインタフェース１３０は、ＭＰＵ２４０の制御に従って動作する。
【００３３】
ＭＰＵ２４０は、動作プログラム２１１を実行して、検出器９０１のセンサ、スイッチ等が何らかの対象物を検出している状態をオン、何らかの対象物を検出していない状態をオフとして、検出したオンまたはオフを示す値を共有メモリ２２０に格納する。この値がＣＰＵユニット１００での演算における入力のオン／オフ信号となる。
【００３４】
出力ユニット３００は、各種データを記憶する記憶部３１０と、ＣＰＵユニット１００とのデータ交換のための共有メモリ３２０と、共有バス４００を介した通信のための共有バスインタフェース３３０と、出力ユニット３００全体を制御するＭＰＵ３４０とを含む。出力ユニット３００の各部はバス３９０を介して接続されている。
【００３５】
記憶部３１０は、ＲＯＭ、ＲＡＭ、メモリカード等を含む。記憶部３１０は、出力ユニット３００の動作のための動作プログラム３１１を格納する。
【００３６】
共有メモリ３２０は、ＣＰＵユニット１００、出力ユニット３００のいずれもが読み書き可能なメモリである。共有メモリ３２０には、ＣＰＵユニット１００の演算の出力であるオン／オフ信号を示す値が格納される。この値は、被制御機器９０２のアクチュエータ、表示灯等を制御するための制御データであり、ＣＰＵユニット１００により共有メモリ３２０に書き込まれる。
【００３７】
共有バスインタフェース３３０は、出力ユニット３００が共有バス４００を介してＣＰＵユニット１００と通信するための通信インタフェースである。共有バスインタフェース３３０は、ＭＰＵ３４０の制御に従って動作する。
【００３８】
ＭＰＵ３４０は、動作プログラム３１１を実行して、ＣＰＵユニット１００から供給されたオン／オフ信号に基づいて被制御機器９０２を制御する。例えば、オン信号が供給された場合、ＭＰＵ３４０は、被制御機器９０２のアクチュエータをオンする。
【００３９】
前述のように、ユーザは、エンジニアリングツール５００を使用して、ＣＰＵユニット１００が実行するユーザプログラム１１１を作成する。作成されたユーザプログラム１１１は、通信ケーブル５０１によりエンジニアリングツール５００とＣＰＵユニット１００とを接続した状態で、ＣＰＵユニット１００にアップロードされる。
【００４０】
エンジニアリングツール５００は、パーソナルコンピュータにプログラム作成用のアプリケーションをインストールした装置である。エンジニアリングツール５００は、各種データを記憶する記憶部５１０と、ユーザの操作を受け付ける操作入力部５２０と、画像を表示装置に表示する表示部５３０と、ＣＰＵユニット１００との通信のためのツールインタフェース５４０と、エンジニアリングツール５００全体を制御するＣＰＵ５５０とを含む。エンジニアリングツール５００の各部はバス５９０により接続されている。
【００４１】
記憶部５１０は、オペレーティングシステム５１１、プログラム作成アプリケーション５１２を含む。オペレーティングシステム５１１は、エンジニアリングツール５００全体を制御するためのプログラムである。プログラム作成アプリケーション５１２は、ユーザプログラム１１１を作成し、作成したユーザプログラム１１１の各命令の演算装置を選択するためのプログラムである。
【００４２】
操作入力部５２０は、キーボード、マウス等の入力装置を含み、ユーザからの操作入力を受け付け、受け付けた操作に基づく信号をＣＰＵ５５０に出力する。表示部５３０は、画像表示装置を含み、ＣＰＵ５５０の制御に従って、画像を画像表示装置の画面に出力する。操作入力部５２０と表示部５３０は、ユーザの指示を受け付ける受付部として機能する。
【００４３】
ツールインタフェース５４０は、ＣＰＵ５５０の制御に従って、通信ケーブル５０１で接続されたＣＰＵユニット１００との間でデータの送受信を行う。
【００４４】
ＣＰＵ５５０は、オペレーティングシステム５１１を実行して、エンジニアリングツール５００全体を制御する。また、ＣＰＵ５５０は、プログラム作成アプリケーション５１２を実行して、ユーザプログラム１１１を作成する機能、ユーザプログラム１１１内の各命令について演算装置の選択を変更する機能を実現する。
【００４５】
上述のＣＰＵユニット１００は、ユーザプログラム１１１を次のように実行する。ＣＰＵユニット１００は、ユーザプログラム１１１を先頭の命令から順次処理し、プログラム終了を示すＥＮＤ命令を読み込むと、再び先頭の命令の処理へ戻る。この方式をスキャン方式という。
【００４６】
ＣＰＵユニット１００は、ユーザプログラム１１１の各命令の実行に加え、各命令の実行に必要な入力の取得と、命令の実行結果の出力を行う。具体的には、図２に示すように、ＣＰＵユニット１００の演算部１４０は、リフレッシュ処理（ステップＳ１１）、プログラム実行（ステップＳ１２）、エンド処理（ステップＳ１３）の一連の処理を１サイクルとして実行し、このサイクルを繰り返す。
【００４７】
ステップＳ１１のリフレッシュ処理では、まず、演算部１４０は、記憶部１１０に格納されている前回のサイクルでユーザプログラム１１１を実行して得られた出力データを出力ユニット３００の共有メモリ３２０に書き込む。その後、当該出力データを記憶部１１０から削除する。さらに、演算部１４０は、共有バス４００を介して、入力ユニット２００の共有メモリ２２０から入力データを読み出し、読み出した入力値を記憶部１１０に格納する。
【００４８】
ステップＳ１２のプログラム実行では、演算部１４０は、ユーザプログラム１１１の命令を最初から順次読み出し、読み出した命令を実行する。本実施の形態では、ＡＳＩＣ１４１がＡＳＩＣ対応命令を処理し、ＭＰＵ１４２またはＦＰＧＡ１４３がＡＳＩＣ非対応命令を処理する。演算部１４０は、ユーザプログラム１１１のプログラム終了を示すＥＮＤ命令を読み出すと、ユーザプログラム１１１の実行を終了する。ＭＰＵ１４２またはＦＰＧＡ１４３によるＡＳＩＣ非対応命令の処理は、本発明のマイクロプロセッサまたはプログラマブルロジックデバイスのいずれかが命令を処理するステップの一例である。
【００４９】
ステップＳ１３のエンド処理では、ＣＰＵユニット１００は、ネットワークを介して他の機器と通信する不図示のネットワークユニットとのデータ転送処理、その他の共通処理を実行する。
【００５０】
本実施の形態では、ユーザプログラム１１１の命令をＡＳＩＣ１４１、ＭＰＵ１４２、ＦＰＧＡ１４３が分担して処理する。以下、図２のステップＳ１２のプログラム実行のステップにおける、ＡＳＩＣ１４１、ＭＰＵ１４２、ＦＰＧＡ１４３の動作をより詳しく説明する。
【００５１】
ＡＳＩＣ１４１のプログラムカウンタ１４１２には、ユーザプログラム１１１の最初の命令のアドレスが格納されているものとする。
【００５２】
図３に示すように、ＡＳＩＣ１４１は、プログラムカウンタ１４１２のアドレスが示す命令を、ユーザプログラム１１１からレジスタ１４１１に読み出す（ステップＳ１２１）。ＡＳＩＣ１４１は、併せてプログラムカウンタ１４１２のアドレスをカウントアップする。従って、プログラムカウンタ１４１２には、次の命令を指すアドレスがセットされる。
【００５３】
ＡＳＩＣ１４１は、読み出した命令がＥＮＤ命令であるか否かを判別する（ステップＳ１２２）。ＥＮＤ命令でないと判別すると（ステップＳ１２２；Ｎｏ）、ＡＳＩＣ１４１は、読み出した命令がＡＳＩＣ対応命令であるか否かを判別する（ステップＳ１２３）。具体的には、その命令に含まれる演算装置情報を示すビット列が、ＡＳＩＣ１４１を示すビット列であるか否かを判別する。
【００５４】
ＡＳＩＣ１４１は、読み出した命令がＡＳＩＣ対応命令であると判別すると（ステップＳ１２３；Ｙｅｓ）、その命令を実行する（ステップＳ１２４）。続いて、ＡＳＩＣ１４１は、プログラムカウンタ１４１２にセットされているアドレスの命令をレジスタ１４１１に読み出す（ステップＳ１２１）。
【００５５】
ステップＳ１２３で、ＡＳＩＣ１４１が、読み出した命令がＡＳＩＣ対応命令でない（ステップＳ１２３；Ｎｏ）と判別すると、ＡＳＩＣ１４１は、ＭＰＵ１４２に割り込み命令を出力した後、プログラムカウンタ１４１２の値を保持し、停止する。
【００５６】
ＭＰＵ１４２は、ＡＳＩＣ１４１から割り込み命令を受けると、ＡＳＩＣ１４１のレジスタ１４１１に格納された命令を自身のレジスタ１４２１に読み出す。ＭＰＵ１４２は、読み出した命令の演算装置情報に基づいて、その命令が、ＭＰＵ１４２が処理するよう選択された命令であるか否かを判別する（ステップＳ１２５）。ＭＰＵ１４２は、その命令が、ＭＰＵ１４２が処理するよう選択された命令であると判別すると（ステップＳ１２５；Ｙｅｓ）、その命令を実行する（ステップＳ１２６）。その後、ＭＰＵ１４２は、ＡＳＩＣ１４１を再起動するため、ＡＳＩＣ１４１のレジスタ１４１１に再起動を指示する値を書き込む。これにより、ＡＳＩＣ１４１は、再起動し、プログラムカウンタ１４１２に保持したアドレスが示す命令をレジスタ１４１１に読み出し（ステップＳ１２１）、命令の実行を再開する。
【００５７】
一方、ＭＰＵ１４２は、ステップＳ１２５で読み出した命令が、ＭＰＵ１４２が処理するよう選択された命令ではないと判別すると（ステップＳ１２５；Ｎｏ）、ＦＰＧＡ１４３のレジスタ１４３１にその命令を書き込み、ＦＰＧＡ１４３にその命令を実行させる（ステップＳ１２７）。ＦＰＧＡ１４３は、自身のレジスタ１４３１に格納された命令を実行し、演算が終了したことを示すリターン値をレジスタ１４３１に書き込む。ＭＰＵ１４２は、リターン値がレジスタ１４３１に書き込まれると、ＡＳＩＣ１４１を再起動するため、ＡＳＩＣ１４１のレジスタ１４１１に再起動を指示する値を書き込む。これにより、ＡＳＩＣ１４１は、プログラムカウンタ１４１２に保持したアドレスが示す命令をレジスタ１４１１に読み出し（ステップＳ１２１）、命令の実行を再開する。
【００５８】
また、ステップＳ１２２で、ＡＳＩＣ１４１は、読み出した命令がＥＮＤ命令であると判別すると（ステップＳ１２２；Ｙｅｓ）、ユーザプログラム１１１の実行を終了する。
その後、ＣＰＵユニット１００は、図２のステップＳ１３のエンド処理を実行する。
【００５９】
前述のように、ＡＳＩＣ非対応命令は，演算装置情報に設定された値に応じて、ＭＰＵ１４２またはＦＰＧＡ１４３により処理される。ユーザプログラム作成時においては、すべてのＡＳＩＣ非対応命令の演算装置情報には、デフォルト値としてＭＰＵ１４２を示す値が設定されている。
【００６０】
以下、エンジニアリングツール５００を使用して、ＡＳＩＣ非対応命令の演算装置情報を変更する方法を説明する。
【００６１】
まず、ユーザは、キーボード、マウス等の操作入力部５２０を操作して、エンジニアリングツール５００のプログラム作成アプリケーション５１２を起動する。ユーザは、表示部５３０に表示された図４に示すようなメニュー画面から、「ユーザプログラムの作成」メニューを選択し、不図示のプログラム作成画面を表示部５３０に表示させる。ユーザは、ユーザプログラム１１１を不図示のプログラム作成画面上で作成し、保存する。作成されたユーザプログラム１１１はエンジニアリングツール５００の記憶部５１０に格納される。
【００６２】
続いて、ユーザは、操作入力部５２０を操作して、再び図４に示すメニュー画面を表示部５３０に表示させる。ユーザは、「演算装置の選択」メニューを選択し、図５に示すようなサブメニュー画面を表示部５３０に表示させる。
【００６３】
図５に示すように、演算装置の選択のサブメニューには、「自動選択モード」、「手動選択モード１」、「手動選択モード２」がある。自動選択モードにおいては、エンジニアリングツール５００が、ユーザプログラム１１１を分析し、ＦＰＧＡ１４３が実行することで、高速化、性能向上が見込める命令をＦＰＧＡ１４３が実行する命令として選択し、選択した命令の演算装置情報にＦＰＧＡ１４３を示す値を設定する。手動選択モード１、２においては、ユーザが、各命令の演算装置を選択する。
【００６４】
（自動選択モード）
自動選択モードを実行する場合、ユーザは、サブメニュー画面で、対象プログラムとして、任意のユーザプログラム１１１を選択し、「自動選択モード」を指定する。図示する例では、ユーザプログラム１１１として「プログラム００１」が選択されている。
【００６５】
「自動選択モード」が選択されると、エンジニアリングツール５００のＣＰＵ５５０は、プログラム作成アプリケーション５１２を実行して下記の処理を行う。
【００６６】
ここで、あらかじめ記憶部５１０には下記の情報が格納されている。
（１）ＡＳＩＣ非対応命令の数：Ｎ１。この値は、全てのＡＳＩＣ非対応命令の種類の数である。ユーザプログラム１１１である「プログラム００１」内に含まれているか否かを問わない。
（２）ＦＰＧＡ１４３の総ゲート数：ＧＦＰＧＡ。この値は、ＦＰＧＡ１４３のハードウェアの仕様に基づく値である。
（３）各命令の処理のために使用されるＦＰＧＡ１４３のゲート数（使用ゲート数）：Ｇｎ（ｎ＝１、２、…、Ｎ１）。
（４）各命令について、ＦＰＧＡ１４３を使用することで削減することが可能な時間（削減可能時間）：Ｔｎ（ｎ＝１、２、…、Ｎ１）。ここでは。ＭＰＵ１４２の命令の処理の時間と、ＦＰＧＡ１４３の当該命令の処理の時間との差分とする。削減可能時間は、本発明のプログラマブルロジックデバイスによる各命令の処理時間の一例である。また、上記（２）、（３）、（４）は、本発明のプログラマブルロジックデバイスの定義情報の一例である。
【００６７】
図６に示すように、Ｎ１種類の命令のそれぞれが、ユーザプログラム１１１内でコールされている回数（コール数）Ｃｎ（ｎ＝１、２、…、Ｎ１）をカウントする（ステップＳ２１）。
【００６８】
各命令について、ＦＰＧＡ１４３の１ゲート当たりの処理時間を求める（ステップＳ２２）。ここでは、次の式（１）を使用する。
各命令についての１ゲート当たりの処理時間Ｐｎ＝削減可能時間Ｔｎ×ステップＳ２１で求めたコール数Ｃｎ÷使用ゲート数Ｇｎ（ｎ＝１、２、…、Ｎ１）・・・・・式（１）
【００６９】
命令を、ステップＳ２２で求めた各命令についての１ゲート当たりの処理時間Ｐｎでソートする（ステップＳ２３）。ここでは、降順にソートする。
【００７０】
１ゲート当たりの処理時間Ｐｎが一番大きな命令から、当該命令の使用ゲート数Ｇｎを順次加算する。使用ゲート数Ｇｎの合計が、ＦＰＧＡ１４３の総ゲート数ＧＦＰＧＡを超えない間、加算を続ける。
【００７１】
具体的には、まず、カウンタｉに“１”をセットし、ステップＳ２３でソートされたｉ番目の命令の使用ゲート数Ｇｎを、現在のＧｉとして合計値ｓにセットする（ステップＳ２４）。
【００７２】
次に、合計値ｓが総ゲート数ＧＦＰＧＡより大きいか否かを判別する（ステップＳ２５）。合計値ｓが総ゲート数ＧＦＰＧＡ以下であると判別すると（ステップＳ２５；Ｎｏ）、ｉ番目の命令の演算装置情報にＦＰＧＡ１４３を設定する（ステップＳ２６）。カウンタｉをインクリメントし、現在の合計値ｓと、ｉ番目の命令の使用ゲート数Ｇｉとを加算したものを、新たな合計値ｓとする（ステップＳ２７）。再び、ステップＳ２５へ戻る。
【００７３】
ステップＳ２５で、合計値ｓがＧＦＰＧＡより大きいと判別すると（ステップＳ２５；Ｙｅｓ）、処理を終了する。
【００７４】
上記処理により、ＣＰＵ５５０は、ＦＰＧＡ１４３が実行する命令として選択した命令の演算装置情報にＦＰＧＡ１４３を設定する。一方、ＦＰＧＡ１４３が実行する命令として選択しなかった命令の演算装置情報を更新しない。このように、ＣＰＵ５５０は、ＦＰＧＡ１４３が処理する命令と、ＦＰＧＡ１４３が処理しない命令とを判別する判別部、ＦＰＧＡ１４３が処理する命令と判別した命令の演算装置情報を更新する更新部として機能する。ＦＰＧＡ１４３が処理する命令として選択された命令は、本発明の第１命令の一例である。ＦＰＧＡ１４３が処理しない命令は、本発明の第２命令の一例である。
【００７５】
自動選択モードでの処理が終わると、ユーザは操作入力部５２０を操作して、再び図５に示すサブメニュー画面を表示させる。ユーザは、更新後のプログラム００１をＣＰＵユニット１００にアップロードするため、サブメニュー画面で、「プログラムのアップロード」を選択する。なお、エンジニアリングツール５００とＣＰＵユニット１００とはあらかじめ通信ケーブル５０１で接続されているものとする。ＣＰＵ５５０は、「プログラムのアップロード」が選択されると、記憶部５１０に格納されているユーザプログラム１１１である「プログラム００１」を、ＣＰＵユニット１００の記憶部１１０に転送する。このように、ＣＰＵ５５０は、演算装置情報が更新されたユーザプログラム１１１を、ＣＰＵユニット１００に転送する転送部として機能する。
【００７６】
上記の自動選択モードにおいては、同じＡＳＩＣ非対応命令がユーザプログラム１１１内でコールされた回数を示す同一のＡＳＩＣ非対応命令のコール数、各命令の１回当たりの処理時間、使用するゲート数に基づいて分析を行い、１ゲート当たりの処理時間が大きい命令から順に、ＦＰＧＡ１４３が処理を実行する命令として選択する。処理の負荷が大きい命令をＦＰＧＡ１４３に割り当てることで、ＰＬＣ１の動作の高速化を図ることができる。
【００７７】
上述の自動選択モードでは、ユーザプログラム１１１を分析して、ＦＰＧＡ１４３で実行する命令が選択されたが、以下の手動選択モード１ではユーザ自身が、各命令の演算装置を選択することができる。
【００７８】
（手動選択モード１）
手動選択モード１を実行する場合、ユーザは、操作入力部５２０を操作して、図５のサブメニュー画面を表示させ、サブメニュー画面で、対象プログラムとして任意のユーザプログラム１１１を選択し、「手動選択モード１」を指定する。
【００７９】
「手動選択モード１」が選択されると、エンジニアリングツール５００のＣＰＵ５５０は、図７に示すような選択画面を表示部５３０に表示する。この画面には、ユーザプログラム１１１内でコールされているＡＳＩＣ非対応命令の一覧が表示される。ここでは、ユーザプログラム１１１内でコールされているＡＳＩＣ非対応命令の一覧と、各命令がユーザプログラム１１１内でコールされている回数を示すコール回数と、各命令を１回実行することによる負荷を表すリソース負荷と、それぞれの命令の現在の実行部とを表示する。実行部の値は、当該命令を実行する演算装置がＭＰＵ１４２とＦＰＧＡ１４３のいずれであるかを示す。実行部が「Ｓ／Ｗ」である場合、ＭＰＵ１４２が命令を処理することを表す。実行部が「Ｈ／Ｗ」である場合、ＦＰＧＡ１４３が命令を処理することを表す。手動選択モード１においては、同じＡＳＩＣ非対応命令はすべて、ＭＰＵ１４２あるいはＦＰＧＡ１４３のうち指定されたいずれかの演算装置が処理する。例えば、命令Ａの実行部を「Ｓ／Ｗ」から「Ｈ／Ｗ」に更新した場合、ＦＰＧＡ１４３がユーザプログラム１１１内のすべての命令Ａを処理する。
【００８０】
ユーザが、選択した命令の実行部の値を変更し、画面下部の「保存」を選択して、変更内容を保存する。従って、ＣＰＵ５５０は、ユーザプログラム１１１内のそれぞれの命令について、演算装置情報を選択された実行部の値で更新する。例えば、ユーザが、命令Ａの実行部を「Ｓ／Ｗ」から「Ｈ／Ｗ」に変更して、「保存」を選択する。この場合、ユーザプログラム１１１内のすべての命令Ａの演算装置情報は、ＦＰＧＡ１４３を示す値に更新される。
【００８１】
手動選択モード１での処理が終わると、ユーザは自動選択モードのときと同様に、図５に示すサブメニュー画面上で、「プログラムのアップロード」を選択して、演算装置情報が変更されたユーザプログラム１１１をＣＰＵユニット１００にアップロードする。
【００８２】
また、図７に示す画面では、各命令のコール回数、リソース負荷を併せて表示する。よって、ユーザは、各命令の呼び出し回数、リソース負荷を考慮した上で、当該命令をＭＰＵ１４２とＦＰＧＡ１４３のどちらの演算装置で処理するかを選択することができる。
【００８３】
ユーザプログラム１１１の各命令はオンした場合のみ実行されるので、例えば、ユーザプログラム１１１に含まれる命令Ａがすべて１サイクル内で実行されるわけではない。このような実情もあり、現場の状況を知るユーザが各命令をＭＰＵ１４２とＦＰＧＡ１４３のどちらの演算装置で処理するかを選択するほうが、より好適な選択を行うことも可能である。
【００８４】
上述の手動選択モード１では、同じＡＳＩＣ非対応命令はすべて、ＭＰＵ１４２あるいはＦＰＧＡ１４３のうち指定されたいずれかの演算装置が処理する。このため、選択内容が変更されない間は、当該命令が何度呼び出されたとしても、その命令を実行するのは、ＭＰＵ１４２またはＦＰＧＡ１４３のいずれか選択された方である。次に説明する手動選択モード２では、より細かな選択が可能な構成を有する。
【００８５】
（手動選択モード２）
次に手動選択モード２を説明する。ユーザは、操作入力部５２０を操作して、図５のサブメニュー画面を表示させる。ユーザは、サブメニュー画面で、対象とするユーザプログラムとして「プログラム００１」を選択し、選択モードとして「手動選択モード２」を選択する。
【００８６】
「手動選択モード２」が選択されると、エンジニアリングツール５００のＣＰＵ５５０は、表示部５３０に図８に示すように、ユーザが選択したプログラム００１のラダー図と、各命令の実行部とを表示する。実行部の値は、手動選択モード１と同様に、当該命令を実行する演算装置がＭＰＵ１４２とＦＰＧＡ１４３のいずれであるかを示す。図示する例では、ユーザプログラム１１１内のすべての命令の演算装置を個別に選択する。前述の手動選択モード１では、同じＡＳＩＣ非対応命令はすべて、ＭＰＵ１４２あるいはＦＰＧＡ１４３のうち一方の演算装置が処理するように設定した。これに対し、手動選択モード２では、ユーザプログラム１１１内で同じＡＳＩＣ非対応命令が複数回コールされていても、それぞれのＡＳＩＣ非対応命令の演算装置を個別に指定する。例えば、同じ命令Ａであっても、１番始めにコールされる命令ＡをＭＰＵ１４２に実行させ、次にコールされる命令ＡをＦＰＧＡ１４３に実行させるように指定することが可能である。
【００８７】
ユーザが、選択した命令の実行部の値を変更し、画面下部の「保存」を選択して、変更内容を保存する。従って、ＣＰＵ５５０は、ユーザプログラム１１１内のそれぞれの命令について、演算装置情報を選択された実行部の値で更新する。
【００８８】
手動選択モード２での処理が終わると、ユーザは自動選択モードのときと同様に、図５に示すサブメニュー画面上で、「プログラムのアップロード」を選択して、演算装置情報が変更されたユーザプログラム１１１をＣＰＵユニット１００にアップロードする。
【００８９】
手動選択モード２おいても、手動選択モード１と同様に、以下のようなメリットがある。ユーザプログラム１１１の各命令はオンした場合のみ実行されるので、ユーザプログラム１１１に含まれるすべての命令が１サイクル内で実行されるわけではない。このような実情もあり、現場の状況を知るユーザが各命令をＭＰＵ１４２とＦＰＧＡ１４３のどちらの演算装置で処理するかを選択することができ、より好適な選択を行うことも可能である。
【００９０】
以上説明したように、本発明の実施の形態に係るＰＬＣ１では、ＡＳＩＣ非対応命令に含まれる演算装置情報に、ＭＰＵ１４２またはＦＰＧＡ１４３を示す情報を設定する。プログラム実行時には、演算装置情報が示す演算装置が命令を処理する。また、エンジニアリングツール５００を使用して、演算装置情報を変更することができる。このような構成を備えることで、ユーザは、プログラム作成時に各処理を実行する演算装置を意識する必要がなく、プログラム作成後に演算装置を選択することができる。さらに、大幅なプログラム修正を要することなく、演算装置を変更することができる。
【００９１】
さらに、上記の実施の形態に係る構成においては、以下のような有利な効果が期待できる。
【００９２】
自動選択モードでは、同一のＡＳＩＣ非対応命令のユーザプログラム１１１内でのコール数、各命令の1回当たりの処理時間、各命令の実行に使用されるゲート数に基づいて分析を行い、処理の負荷が大きい命令をＦＰＧＡ１４３に割り当てることで、ＰＬＣ１の動作の高速化を図ることができる。また、ユーザ自身が設定せずとも、好適な演算装置の選択をすることができるため、ハードウェアの知識がないユーザであっても操作が容易である。
【００９３】
ユーザプログラム１１１を修正した場合、自動選択モードで演算装置の選択の処理を再度実行し、演算装置情報を更新したユーザプログラム１１１をＣＰＵユニット１００にアップロードすればよく、操作が容易である。また、ユーザプログラム１１１を変更しなくとも、ＦＰＧＡ１４３の仕様を変更した場合、作成済みのユーザプログラム１１１を別の仕様の異なるＣＰＵユニット１００で実行する場合には、上述の（１）〜（４）の各種パラメータをエンジニアリングツール５００の記憶部５１０に格納した上で、自動選択モードで演算装置の選択の処理を再度実行すればよい。このようにして、好適な演算装置の選択をすることが可能である。
【００９４】
自動選択モードでは、ＦＰＧＡ１４３の仕様を踏まえて、個々のユーザプログラム１１１を分析するため、実行環境に応じた演算装置の好適な選択が可能である。
【００９５】
また、分析処理は、エンジニアリングツール５００において行われるため、実行時のＰＬＣ１の性能に影響することはない。
【００９６】
手動選択モード１及び２では、現場の状況を知るユーザが各命令を処理する演算装置を選択することで、自動選択モードより好適な選択を行うことが可能である。手動選択モード１及び２においても、ユーザプログラム１１１の作成後に演算装置を変更することができるので、ユーザプログラム１１１の作成時に演算装置を意識する必要がない。同様に、ユーザプログラム１１１を変更する際も、ユーザプログラム１１１を修正後は、演算装置の選択を再度行えばよいため、ユーザプログラム１１１の変更時においても演算装置を意識する必要がない。また、エンジニアリングツール５００を使用して、演算装置情報を容易に変更することができるため、作成済みのユーザプログラム１１１を、別の仕様の異なるＣＰＵユニット１００で実行する場合、最適な演算装置を選択できるまで、演算装置の選択を何度か繰り返すこともできる。
【００９７】
また、手動選択モード１を使用して、ＰＬＣ１の性能を評価することができる。例えば、１つの命令について、ＭＰＵ１４２で処理した場合の処理時間、ＦＰＧＡ１４３で処理した場合の処理時間をそれぞれ計測して、実処理時間の差を求める可能である。各命令について、事前に演算装置の実処理時間の統計データを作成しておく。この統計データに基づいて、手動選択モード１または手動選択モード２において、命令毎に演算装置を選択することができる。
また、手動選択モードで、特定の箇所でのある命令だけをＭＰＵ１４２またはＦＰＧＡ１４３のユーザプログラム１１１内の他の命令とは異なる演算装置で実行させることもできる。このようにして、ユーザプログラム１１１のバグの発見のために使用することも可能である。
【００９８】
手動選択モード１の選択画面では、図９に示すように、ラダー図を併せて表示してもよい。命令がユーザプログラム１１１内のどこでコールされているかをユーザが確認することができ、ユーザがその点も考慮して演算装置を選択することが可能となる。
【００９９】
手動選択モード２の選択画面では、図８に示すようにラダー図だけ表示するのではなく、図１０のように、命令の一覧と、コール回数、その命令を実行する場合のリソースの負荷を併せて表示してもよい。
【０１００】
上述の自動選択モードでは、プログラマブルロジックデバイスによる各命令の処理時間の一例として、ＦＰＧＡ１４３を使用することで削減することが可能な時間を使用した。あるいは、プログラマブルロジックデバイスによる各命令の処理時間の実際の計測値を使用してもよい。あるいは、プログラマブルロジックデバイスによる各命令の処理時間として理論上予測される値を使用してもよい。
【０１０１】
自動選択モードにおける、演算装置の選択の方法は、上記のように、１ゲートあたりの処理時間の大きな命令から順にＦＰＧＡ１４３に割り当てていたが、この方法に限られない。例えば、ユーザプログラム１１１内の各命令のコール回数と、プログラマブルロジックデバイスによる各命令の処理時間とを乗じて得られた値の大きな命令から順にＦＰＧＡ１４３に割り当ててもよい。あるいは、ユーザプログラム１１１内の各命令のコール回数と、プログラマブルロジックデバイスによる各命令の処理時間と、各命令で使用されるゲート数とを乗じて得られた値の大きな命令から順にＦＰＧＡ１４３に割り当ててもよい。または、単に、コール回数の多い命令から順に、または、プログラマブルロジックデバイスによる各命令の処理時間が大きな命令から順に、ＦＰＧＡ１４３に割り当ててもよい。
【０１０２】
上記プログラムを記録する記録媒体としては、ＵＳＢメモリ、フレキシブルディスク、ＣＤ、ＤＶＤ、Ｂｌｕ−ｒａｙ（登録商標）、ＭＯ、ＳＤカード、メモリースティック（登録商標）、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
【０１０３】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【０１０４】
１  ＰＬＣ、１００  ＣＰＵユニット、１１０  記憶部、１１１  ユーザプログラム、１２０  ツールインタフェース、１３０  共有バスインタフェース、１４０  演算部、１４１  ＡＳＩＣ、１４１１  レジスタ、１４１２  プログラムカウンタ、１４２  ＭＰＵ、１４２１  レジスタ、１４３  ＦＰＧＡ、１４３１  レジスタ、１９０  バス、２００  入力ユニット、２１０  記憶部、２１１  動作プログラム、２２０  共有メモリ、２３０  共有バスインタフェース、２４０  ＭＰＵ、２９０  バス、３００  出力ユニット、３１０  記憶部、３１１  動作プログラム、３２０  共有メモリ、３３０  共有バスインタフェース、３４０  ＭＰＵ、３９０  バス、４００  共有バス、５００  エンジニアリングツール、５０１  通信ケーブル、５１０  記憶部、５１１  オペレーティングシステム、５１２  プログラム作成アプリケーション、５２０  操作入力部、５３０  表示部、５４０  ツールインタフェース、５５０  ＣＰＵ、５９０  バス、９０１  検出器、９０２  被制御機器
【図１】
2019171501.tif 000003
【図２】
2019171501.tif 000004
【図３】
2019171501.tif 000005
【図４】
2019171501.tif 000006
【図５】
2019171501.tif 000007
【図６】
2019171501.tif 000008
【図７】
2019171501.tif 000009
【図８】
2019171501.tif 000010
【図９】
2019171501.tif 000011
【図１０】
2019171501.tif 000012
【手続補正書】
【提出日】令和1年5月10日(2019.5.10)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、プログラマブルロジックコントローラのＣＰＵユニット、プログラマブルロジックコントローラ、方法、及びコンピュータに関する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
上記目的を達成するため、本発明の第１の観点に係るプログラマブルロジックコントローラのＣＰＵユニットは、演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有する。ユーザプログラム内の命令それぞれは、ユーザが選択した、命令を処理する演算装置を示す演算装置情報を含む。ユーザが同じ命令をすべて同じ演算装置が処理することを選択した場合、同じ命令の演算装置情報には、マイクロプロセッサまたはプログラマブルロジックデバイスのいずれかを示す値が設定されている。ユーザが命令を処理する演算装置を個別に選択した場合、命令の演算装置情報には、ユーザが個別に選択した演算装置を示す値が設定されている。マイクロプロセッサは、演算装置情報がマイクロプロセッサを示す場合、命令を処理する。プログラマブルロジックデバイスは、演算装置情報がプログラマブルロジックデバイスを示す場合、命令を処理する。演算装置情報が変更されると、変更後の演算装置情報に基づいて、マイクロプロセッサまたはプログラマブルロジックデバイスが命令を処理する。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットであって、
ユーザプログラム内の命令それぞれは、ユーザが選択した、前記命令を処理する演算装置を示す演算装置情報を含み、
（ｉ）前記ユーザが同じ前記命令をすべて同じ演算装置が処理することを選択した場合、同じ前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれかを示す値が設定され、（ｉｉ）前記ユーザが前記命令を処理する演算装置を個別に選択した場合、前記命令の前記演算装置情報には、前記ユーザが個別に選択した演算装置を示す値が設定され、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
プログラマブルロジックコントローラのＣＰＵユニット。
【請求項２】
前記演算装置として、ＡＳＩＣを更に備え、
前記命令は、前記ＡＳＩＣが実行可能な特定の命令と、前記特定の命令以外のＡＳＩＣ非対応命令とを含み、
前記ＡＳＩＣは、前記特定の命令を処理し、
前記ＡＳＩＣ非対応命令が含む前記演算装置情報は、前記マイクロプロセッサ及び前記プログラマブルロジックデバイスのうち、前記ＡＳＩＣ非対応命令を処理する演算装置を示し、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記ＡＳＩＣ非対応命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記ＡＳＩＣ非対応命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記ＡＳＩＣ非対応命令を処理する、
請求項１に記載のプログラマブルロジックコントローラのＣＰＵユニット。
【請求項３】
前記ＡＳＩＣが処理する前記特定の命令は、前記特定の命令を処理する演算装置を示す演算装置情報を含む、
請求項２に記載のプログラマブルロジックコントローラのＣＰＵユニット。
【請求項４】
ＣＰＵユニットと、前記ＣＰＵユニットに検出器の出力データを供給する入力ユニットと、前記ＣＰＵユニットから被制御機器を制御するための制御データが供給される出力ユニットと、を有するプログラマブルロジックコントローラであって、
前記ＣＰＵユニットは、演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有し、
ユーザプログラム内の命令それぞれは、ユーザが選択した、前記命令を処理する演算装置を示す演算装置情報を含み、
（ｉ）前記ユーザが同じ前記命令をすべて同じ演算装置が処理することを選択した場合、同じ前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれかを示す値が設定され、（ｉｉ）前記ユーザが前記命令を処理する演算装置を個別に選択した場合、前記命令の前記演算装置情報には、前記ユーザが個別に選択した演算装置を示す値が設定され、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
プログラマブルロジックコントローラ。
【請求項５】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するＣＰＵユニットが、ユーザプログラムを実行する方法であって、
前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれかが、前記ユーザプログラム内の命令を処理するステップ、
を含み、
前記命令は、ユーザが選択した、前記命令を処理する前記演算装置を示す演算装置情報を含み、（ｉ）前記ユーザが同じ前記命令をすべて同じ演算装置が処理することを選択した場合、同じ前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれかを示す値が設定され、（ｉｉ）前記ユーザが前記命令を処理する演算装置を個別に選択した場合、前記命令の前記演算装置情報には、前記ユーザが個別に選択した演算装置を示す値が設定され、
前記ステップにおいて、前記演算装置情報が前記マイクロプロセッサを示す場合、前記マイクロプロセッサが前記命令を処理し、
前記ステップにおいて、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記プログラマブルロジックデバイスが前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
方法。
【請求項６】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットに、接続可能であるコンピュータであって、
前記コンピュータは、
ユーザプログラムを記憶する記憶部と、
前記ユーザプログラム内の命令それぞれを処理する演算装置について、前記マイクロプロセッサ及び前記プログラマブルロジックデバイスのうちのどちらかを選択するユーザの指示を受け付ける受付部と、
前記ユーザから前記プログラマブルロジックデバイスを選択する指示を受け付けた場合、前記命令に含まれ、前記命令を処理する演算装置を示す演算装置情報を、前記プログラマブルロジックデバイスを示す値で更新し、前記ユーザから前記マイクロプロセッサを選択する指示を受け付けた場合、前記演算装置情報を、前記マイクロプロセッサを示す値で更新する更新部と、
前記演算装置情報が更新された前記ユーザプログラムを、前記ＣＰＵユニットの記憶部に転送する転送部と、
を備え、
前記更新部は、
（ｉ）前記ユーザが同じ前記命令をすべて同じ演算装置が処理することを選択した場合、同じ前記命令の前記演算装置情報をすべて、前記マイクロプロセッサと前記プログラマブルロジックデバイスのいずれかの演算装置を示す値で更新し、（ｉｉ）前記ユーザが前記命令を処理する演算装置を個別に選択した場合、前記命令の前記演算装置情報を、前記ユーザが個別に選択した演算装置を示す値で更新する、
コンピュータ。
【手続補正書】
【提出日】令和1年7月12日(2019.7.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
上記目的を達成するため、本発明の第１の観点に係るプログラマブルロジックコントローラのＣＰＵユニットは、演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有する。ユーザプログラム内の命令それぞれは、ユーザが選択した、命令を処理する演算装置を示す演算装置情報を含む。命令を処理する演算装置を選択する第１モードにおいて、ユーザが同じ命令をマイクロプロセッサまたはプログラマブルロジックデバイスのいずれか一方が処理することを選択した場合、同じ命令の演算装置情報には、マイクロプロセッサまたはプログラマブルロジックデバイスのうちユーザが選択したいずれか一方を示す値が設定されている。命令を処理する演算装置を選択する第２モードにおいて、ユーザが命令それぞれを処理する演算装置としてマイクロプロセッサまたはプログラマブルロジックデバイスのいずれか一方を個別に選択した場合、命令の演算装置情報には、マイクロプロセッサまたはプログラマブルロジックデバイスのうちユーザが個別に選択したいずれか一方を示す値がそれぞれ設定されている。マイクロプロセッサは、演算装置情報がマイクロプロセッサを示す場合、命令を処理する。プログラマブルロジックデバイスは、演算装置情報がプログラマブルロジックデバイスを示す場合、命令を処理する。演算装置情報が変更されると、変更後の演算装置情報に基づいて、マイクロプロセッサまたはプログラマブルロジックデバイスが命令を処理する。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットであって、
ユーザプログラム内の命令それぞれは、ユーザが選択した、前記命令を処理する演算装置を示す演算装置情報を含み、
（ｉ）前記命令を処理する演算装置を選択する第１モードにおいて、前記ユーザが同じ前記命令を前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方が処理することを選択した場合、同じ前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのうち前記ユーザが選択したいずれか一方を示す値が設定され、（ｉｉ）前記命令を処理する演算装置を選択する第２モードにおいて、前記ユーザが前記命令それぞれを処理する演算装置として前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方を個別に選択した場合、前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのうち前記ユーザが個別に選択したいずれか一方を示す値がそれぞれ設定され、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
プログラマブルロジックコントローラのＣＰＵユニット。
【請求項２】
前記演算装置として、ＡＳＩＣを更に備え、
前記命令は、前記ＡＳＩＣが実行可能な特定の命令と、前記特定の命令以外のＡＳＩＣ非対応命令とを含み、
前記ＡＳＩＣは、前記特定の命令を処理し、
前記ＡＳＩＣ非対応命令が含む前記演算装置情報は、前記マイクロプロセッサ及び前記プログラマブルロジックデバイスのうち、前記ＡＳＩＣ非対応命令を処理する演算装置を示し、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記ＡＳＩＣ非対応命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記ＡＳＩＣ非対応命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記ＡＳＩＣ非対応命令を処理する、
請求項１に記載のプログラマブルロジックコントローラのＣＰＵユニット。
【請求項３】
前記ＡＳＩＣが処理する前記特定の命令は、前記特定の命令を処理する演算装置を示す演算装置情報を含む、
請求項２に記載のプログラマブルロジックコントローラのＣＰＵユニット。
【請求項４】
ＣＰＵユニットと、前記ＣＰＵユニットに検出器の出力データを供給する入力ユニットと、前記ＣＰＵユニットから被制御機器を制御するための制御データが供給される出力ユニットと、を有するプログラマブルロジックコントローラであって、
前記ＣＰＵユニットは、演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有し、
ユーザプログラム内の命令それぞれは、ユーザが選択した、前記命令を処理する演算装置を示す演算装置情報を含み、
（ｉ）前記命令を処理する演算装置を選択する第１モードにおいて、前記ユーザが同じ前記命令を前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方が処理することを選択した場合、同じ前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのうち前記ユーザが選択したいずれか一方を示す値が設定され、（ｉｉ）前記命令を処理する演算装置を選択する第２モードにおいて、前記ユーザが前記命令それぞれを処理する演算装置として前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方を個別に選択した場合、前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのうち前記ユーザが個別に選択したいずれか一方を示す値がそれぞれ設定され、
前記マイクロプロセッサは、前記演算装置情報が前記マイクロプロセッサを示す場合、前記命令を処理し、
前記プログラマブルロジックデバイスは、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
プログラマブルロジックコントローラ。
【請求項５】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するＣＰＵユニットが、ユーザプログラムを実行する方法であって、
前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれかが、前記ユーザプログラム内の命令を処理するステップ、
を含み、
前記命令は、ユーザが選択した、前記命令を処理する前記演算装置を示す演算装置情報を含み、（ｉ）前記命令を処理する演算装置を選択する第１モードにおいて、前記ユーザが同じ前記命令を前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方が処理することを選択した場合、同じ前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのうち前記ユーザが選択したいずれか一方を示す値が設定され、（ｉｉ）前記命令を処理する演算装置を選択する第２モードにおいて、前記ユーザが前記命令それぞれを処理する演算装置として前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方を個別に選択した場合、前記命令の前記演算装置情報には、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのうち前記ユーザが個別に選択したいずれか一方を示す値がそれぞれ設定され、
前記ステップにおいて、前記演算装置情報が前記マイクロプロセッサを示す場合、前記マイクロプロセッサが前記命令を処理し、
前記ステップにおいて、前記演算装置情報が前記プログラマブルロジックデバイスを示す場合、前記プログラマブルロジックデバイスが前記命令を処理し、
前記演算装置情報が変更されると、変更後の前記演算装置情報に基づいて、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスが前記命令を処理する、
方法。
【請求項６】
演算装置としてマイクロプロセッサ及びプログラマブルロジックデバイスを有するプログラマブルロジックコントローラのＣＰＵユニットに、接続可能であるコンピュータであって、
前記コンピュータは、
ユーザプログラムを記憶する記憶部と、
前記ユーザプログラム内の命令それぞれを処理する演算装置について、前記マイクロプロセッサ及び前記プログラマブルロジックデバイスのうちのどちらかを選択するユーザの指示を受け付ける受付部と、
前記ユーザから前記プログラマブルロジックデバイスを選択する指示を受け付けた場合、前記命令に含まれ、前記命令を処理する演算装置を示す演算装置情報を、前記プログラマブルロジックデバイスを示す値で更新し、前記ユーザから前記マイクロプロセッサを選択する指示を受け付けた場合、前記演算装置情報を、前記マイクロプロセッサを示す値で更新する更新部と、
前記演算装置情報が更新された前記ユーザプログラムを、前記ＣＰＵユニットの記憶部に転送する転送部と、
を備え、
前記更新部は、
（ｉ）前記命令を処理する演算装置を選択する第１モードにおいて、前記ユーザが同じ前記命令を前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方が処理することを選択した場合、同じ前記命令の前記演算装置情報をすべて、前記マイクロプロセッサと前記プログラマブルロジックデバイスのうち前記ユーザが選択したいずれか一方を示す値で更新し、（ｉｉ）前記命令を処理する演算装置を選択する第２モードにおいて、前記ユーザが前記命令それぞれを処理する演算装置として前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのいずれか一方を個別に選択した場合、前記命令の前記演算装置情報を、前記マイクロプロセッサまたは前記プログラマブルロジックデバイスのうち前記ユーザが個別に選択したいずれか一方を示す値でそれぞれ更新する、
コンピュータ。
【国際調査報告】
2019171501.tif 000013
2019171501.tif 000014
2019171501.tif 000015
2019171501.tif 000016