"複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチCPUモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援装置であって、前記複数のプロセッサへのプログラムの割り当てをユーザが明示的に指定するためのダイアログを表示し、該ユーザによるプログラム割り当て指示を記憶する処理と、前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザが指定するためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を記憶する処理と、を行うGUI部GraphicalUserInterface部を備え、前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み/書き込み属性を生成するグローバル変数属性生成部と、前記プログラム割り当て指示と前記グローバル変数の読み込み/書き込み属性とに基づいて、前記グローバル変数を前記共有メモリに割り付けるグローバル変数割付部と、を有することを特徴とするプログラマブルコントローラ用プログラム作成支援装置。前記グローバル変数割付部は、前記プログラムで用いられる前記グローバル変数が書き込み属性を有する場合に、前記グローバル変数を前記プログラムが割り当てられたプロセッサの共有メモリに割り付けることを特徴とする請求項1に記載のプログラマブルコントローラ用プログラム作成支援装置。前記GUI部が記憶したユーザによるプログラム割り当て指示に基づいて、中間コードおよび中間的なプログラムリストを生成する中間コード生成部と、前記生成された中間コード、中間的なプログラムリスト、グローバル変数の読み込み/書き込み属性をコンパイルして、前記プログラム割り当て指示と前記グローバル変数の読み込み/書き込み属性とに基づいて前記グローバル変数を前記共有メモリに割り付けたマシンコードと最終的なプログラムリストを生成するマシンコード生成部と、を備えることを特徴とする請求項1または2に記載のプログラマブルコントローラ用プログラム作成支援装置。前記マシンコード生成部は、中間的なプログラムリスト内のタスク名に基づいて、当該中間的なプログラムリストを各プロセッサに該当する内容のみを含む形に分割し、前記中間コードと該分割されたリストとをコンパイルして、マシンコードと最終的なプログラムリストを生成することを特徴とする請求項3記載のプログラマブルコントローラ用プログラム作成支援装置。前記マシンコードは、1以上生成されることを特徴とする請求項3記載のプログラマブルコントローラ用プログラム作成支援装置。更に、前記生成されたマシンコードを、前記生成された最終的なプログラムリストに基づいて各プロセッサにダウンロードするダウンロード部を備えることを特徴とする請求項3記載のプログラマブルコントローラ用プログラム作成支援装置。更に、前記プロセッサにダウンロードされたマシンコードを前記プログラマブルコントローラ用プログラム作成支援装置にアップロードするアップロード部と、前記アップロードされたマシンコードと、当該プログラマブルコントローラ用プログラム作成支援装置内のマシンコードを比較する比較部と、を備えることを特徴とする請求項6記載のプログラマブルコントローラ用プログラム作成支援装置。複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチCPUモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援をコンピュータによって行うための方法であって、当該コンピュータは処理部と記憶部とを備え、前記処理部が、前記各プロセッサへのプログラムの割り当てをユーザに明示的に指定させるためのダイアログを表示し、該ユーザによるプログラム割り当て指示を前記記憶部に記憶し、前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザに指定させるためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を前記記憶部に記憶し、前記記憶部に記憶されたユーザによるプログラム割り当て指示およびグローバル変数の宣言の指定に基づいて、中間コードおよび中間的なプログラムリストを生成し、前記中間コードおよび前記中間的なプログラムリストから、前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み/書き込み属性を表したリード/ライト表を生成し、前記生成された中間コードと中間的なプログラムリストとリード/ライト表をコンパイルし、前記プログラム割り当て指示と前記グローバル変数の読み込み/書き込み属性とに基づいて前記グローバル変数を前記共有メモリに割り付けたマシンコードと最終的なプログラムリストを生成し、前記生成された最終的なプログラムリストに基づいて、前記生成されたマシンコードを前記各プロセッサにダウンロードする、処理を行うことによってプログラマブルコントローラ用プログラムの作成支援を行うことを特徴とするプログラム作成支援方法。更に、前記各プロセッサにダウンロードされたマシンコードをアップロードし、前記アップロードされたマシンコードと、前記ダウンロードされたマシンコードを比較することを特徴とする請求項8記載のプログラム作成支援方法。しかし、共有メモリはいずれのプロセッサからも読み込み/書き込みが可能であるため、他のプロセッサによる誤ったメモリの上書きが発生しないように、通常、各プロセッサの書き込み領域を定めている。そのため、グローバル変数は、書き込みを行うプロセッサの共有メモリ領域に割り付ける必要があるため、プロセッサへのプログラムの割付を変更した際には必ずグローバル変数宣言も変更する必要があり、ユーザにとっても使い勝手が悪いものであった。そこで本願発明は、複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチCPUモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援装置またはプログラム作成支援方法を、ユーザにとってより使い易いものにすることを目的とする。上述した課題を解決するために、本発明のプログラマブルコントローラ用プログラム作成支援装置は、複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチCPUモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援装置であって、前記複数のプロセッサへのプログラムの割り当てをユーザが明示的に指定するためのダイアログを表示し、該ユーザによるプログラム割り当て指示を記憶する処理と、前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザが指定するためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を記憶する処理と、を行うGUI部GraphicalUserInterface部を備え、前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み/書き込み属性を生成するグローバル変数属性生成部と、前記プログラム割り当て指示と前記グローバル変数の読み込み/書き込み属性とに基づいて、前記グローバル変数を前記共有メモリに割り付けるグローバル変数割付部と、を有することを特徴とする。また、本発明のプログラム作成支援方法は、複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチCPUモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援をコンピュータによって行うための方法であって、当該コンピュータは処理部と記憶部とを備え、前記処理部が、前記各プロセッサへのプログラムの割り当てをユーザに明示的に指定させるためのダイアログを表示し、該ユーザによるプログラム割り当て指示を前記記憶部に記憶し、前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザに指定させるためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を前記記憶部に記憶し、前記記憶部に記憶されたユーザによるプログラム割り当て指示およびグローバル変数の宣言の指定に基づいて、中間コードおよび中間的なプログラムリストを生成し、前記中間コードおよび前記中間的なプログラムリストから、前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み/書き込み属性を表したリード/ライト表を生成し、前記生成された中間コードと中間的なプログラムリストとリード/ライト表をコンパイルし、前記プログラム割り当て指示と前記グローバル変数の読み込み/書き込み属性とに基づいて前記グローバル変数を前記共有メモリに割り付けたマシンコードと最終的なプログラムリストを生成し、前記生成された最終的なプログラムリストに基づいて、前記生成されたマシンコードを前記各プロセッサにダウンロードする、処理を行うことによってプログラマブルコントローラ用プログラムの作成支援を行うことを特徴とする。ユーザは、プロセッサへのプログラムの割り当てを意識することなく、グローバル変数宣言が可能となり、ユーザにとって使い勝手が良いプログラム支援装置またはプログラム作成支援方法が提供できる。以下、図面を参照して、本発明の実施の形態について説明する。図1に、本発明の実施形態に係るプログラマブルコントローラ用プログラム作成支援装置の構成を示す。プログラマブルコントローラ用プログラム作成支援装置101は、当該装置内の通信インターフェース113を介してプログラマブルコントローラ102と通信し、マシンコードなどのプログラム等のダウンロード、アップロード等を行う。図2は、プログラマブルコントローラ102の概略構成およびマルチCPUモジュールの概略構成を示す図である。プログラマブルコントローラ102はベースボード1021に、少なくともCPUモジュールを含む1以上のモジュールが接続されている。ここで本発明の実施形態においてCPUモジュール1022は、マルチCPUモジュール1022である。マルチCPUモジュール1022は、第1プロセッサ1024,第2プロセッサ1025、ベースボード用通信インターフェース1027、共有メモリ1028、通信インターフェース1029を備え、これらは共通のバスを介して接続されている。ここで、本実施形態においては、第1プロセッサ1024がMAINCPUとして機能し、第2プロセッサ1025がLOCALCPUとして機能している。ベースボード用通信インターフェース1027は、他のモジュール1023とベースボードを介して各種データや指令を授受するためのインターフェース部である。勿論、他のモジュール1023も備えている。共有メモリ1028は、第1プロセッサ1024および第2プロセッサ1025のいずれもが読み書き可能なメモリである。通信インターフェース1029は、プログラマブルコントローラ用プログラム作成支援装置101やイーサネット登録商標に接続するためのインターフェース部である。各プロセッサは、CPU、プログラムメモリ、ローカルメモリをそれぞれ備えている。ここで、共有メモリ1028は、図3のように予め第1プロセッサ用書き込み領域1031と第2プロセッサ用書き込み領域1032とが定められている。第1プロセッサ1024は、共有メモリ1028の第1プロセッサ書き込み領域1031について、データの読み込み/書き込みが自由に可能であるが、第2プロセッサ書き込み領域1032については読み込みのみ可能であり、書き込みは不可能である。同様に、第2プロセッサ1025は、共有メモリ1028の第2プロセッサ書き込み領域1032について、データの読み込み/書き込みが自由に可能であるが、第1プロセッサ書き込み領域1031については読み込みのみ可能であり、書き込みは不可能である。なお、図2における他のモジュール1023は、I/Oモジュールや通信モジュール等の任意の機能のモジュールである。また、マルチCPUモジュールはプロセッサを2つ以上備えていても良い。ここで、図1の説明に戻る。図示しないが、プログラマブルコントローラ用プログラム作成支援装置101は、CPUなどの処理部やRAMなどのメモリを備える情報処理装置PersonalComputerなどで構成されるものである。そして、プログラマブルコントローラ用プログラム作成支援装置101のプログラマブルコントローラ102の各プロセッサに割り当てるプログラムを作成する処理を行う部分は、前記情報処理装置におけるCPUなどで実現される処理部とRAMなどのメモリによってプログラムが実行されることによって、次のように実現される。すなわち、まず、システム設計者などのユーザがプログラムを作成記述するためのインターフェースを提供するGUI部GraphicalUserInterface部103、と、該GUI部103へのユーザからの指示等をキーボードやマウス入力により伝達する入力部104と、GUI部103の出力を表示画面やスピーカ、プリンタなどの出力装置に出力する出力部105とを備える。GUI部103は、ユーザがプログラムを作成記述するために様々な処理を行うが、本実施の形態として特徴がある点は、ユーザがプログラマブルコントローラ上の各プロセッサへのプログラムの割り当てを明示的に指定するためのダイアログを表示し、ユーザによって指定されたプログラム割り当て指示を記憶する処理を行う点と、プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をするためのダイアログを表示し、ユーザによって指定されたグローバル変数の宣言を記憶する処理を行う点である。そして、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置101は、ユーザによって指定された各プロセッサへのプログラムの割り当て、およびグローバル変数の宣言が記述されたグローバル変数シート106に基づいて、中間コード生成部107にて中間コード121とプログラムリスト122を生成する。さらに、グローバル変数属性生成部108は、中間コード121を解析してプログラム単位でグローバル変数が読み込み変数か書き込み変数かを判定し、プログラムごとにグローバル変数のリード/ライト表109を作成する。グローバル変数割付部110は、リードライト表109に基づいてグローバル変数を共有メモリの第1プロセッサ用書き込み領域1031と第2プロセッサ用書き込み領域1032に割付を行う。マシンコード生成部111は、中間コード121とプログラムリスト122とグローバル変数割付部110からの変数割付情報とから、マシンコード123やプログラムリスト124を生成する。マシンコード生成部111は、生成された中間コード121、中間的なプログラムリスト122、グローバル変数割付部110から出力される変数割付情報を複数回以上プロセッサの数分コンパイルし、プログラマブルコントローラの各プロセッサに対応するマシンコードを生成する。尚、コンパイルの際、マシンコードは1つのプロセッサに対して複数生成される場合もある。更に、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置101は、通信インターフェース113を介して、生成されたマシンコード123を生成されたプログラムリスト124に基づいて、プログラマブルコントローラの各プロセッサにダウンロードするダウンロード部112を備える。また、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置101は、プログラマブルコントローラ102にダウンロードされたマシンコードや、プログラマブルコントローラ102で作成されるプログラムリストを、通信インターフェース113を介してプログラマブルコントローラ用プログラム作成支援装置101にアップロードするアップロード部114を備える。アップロード部114によってアップロードされたマシンコード125やプログラムリスト126は、プログラマブルコントローラ用プログラム作成支援装置101からダウンロードされたマシンコード123およびプログラムリスト124と、比較部115によって比較することが可能である。比較部115の比較処理によって、ダウンロード時には、生成されたマシンコードが間違いなくダウンロードされているか確認することが可能であり、また、ダウンロード後に随時装置内のプログラム等とプログラマブルコントローラ102内のプログラム等を比較可能であるため、例えばプログラマブルコントローラ用プログラム作成支援装置101内のプログラムを変更してしまったかどうかわからない場合などは確認を行うことが可能である。図1に示したプログラマブルコントローラ用プログラム作成支援装置101において、例えばユーザが或るシステム構成を設定する、すなわち、新規に1つのコンフィグレーションを作成する場合のフローは図4に示すようになる。まず、S201で、新たなコンフィグレーションの名前を作成するなどの設定を行う。次にS202で、制御するリソースを設定し、S203でタスクの設定を行う。S204で、POUProgramOrganizationUnitを作成し、S205でPOUをインスタンス化し、S206でコンパイルし、S207でプログラマブルコントローラ102にコンパイルして生成されたマシンコードをダウンロードする。S208で、デバックを行う。図4に示したフローの各処理と上述の図1の各部との説明の対応は次のようになる。S203におけるタスクの設定の処理において、ユーザがGUI部103に対しプログラマブルコントローラ102の各プロセッサに割り当てるプログラムタスクの指定を行う。次に、S206のコンパイルにおいて中間コード生成部107やマシンコード生成部111におけるプログラムの生成が行われる。そして、S207のダウンロードは、ダウンロード部112により行われる。以下、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置の各部の処理についてより詳細に説明する。まず、図5、図6、図7を参照して、GUI部103において行われる、プログラマブルコントローラのプロセッサへのプログラムの割り当て処理について説明する。図5に、プロセッサへプログラムタスクを割り当てる際の、プログラマブルコントローラ用プログラム作成支援装置の表示画面例を示す。GUI上で、例えばLOCALCPUのあるTASKにプログラムを割り付けるには、図5のように、該当TASKを選択後、入力装置であるマウスで右クリックする。すると挿入のポップアップメニューが表示され、プログラムインスタンスを選択する。次に、図6に示すようなDialogダイアログが表示され、ユーザがインスタンス化するプログラムタイプを選択し、名称を設定すると、図5のTree構造を示す部分に挿入したプログラムインスタンスが表示される。図6に示すDialogが表示され、ユーザがインスタンス化するプログラムを設定する際に、ユーザはプログラマブルコントローラのLOCALCPUに割り当てたいプログラムタスクについては、‘L_’が付くタスクの名称プログラムインスタンスをつけ、またプログラマブルコントローラのMAINCPUに割り当てたいプログラムタスクについては‘L_’が付かないタスクの名称プログラムインスタンスをつける。すなわち、プログラマブルコントローラのプロセッサへのプログラムの割り当てが完了した際の図5のTree構造部分を拡大して表示すると、図7に示すようになる。つまり、ユーザがLOCALCPUに割り当てたいプログラムタスクについては‘L_’が付いた名称になっており、またMAINCPUに割り当てたいプログラムタスクについては‘L_’が付いていない名称となっている。GUI部103は、図5~図7に示したように、ユーザがプログラマブルコントローラ上の各プロセッサへのプログラムの割り当てを明示的に指定するためのダイアログ図6を表示し、ユーザによって指定されたプログラム割り当て指示を記憶する処理を行う図7。次に、図8a1および図8a2は作成されたプログラムの一例である。ここで、図8a1がMAINCPUに割り当てられたプログラムの一部であり、図8a2がLOCALCPUに割り当てられたプログラムの一部である。次に、図9に示す、複数のプログラムからアクセス可能な変数であるグローバル変数について説明する。グローバル変数とは1リソース内の複数プログラムからアクセス可能な変数を言う。プログラム作成支援装置では、図7に示したTree構造のグローバル変数シートにて、IEC61131-3に準拠し宣言される。なお、グローバル変数シートはMAINCPU,LOCALCPUごとに存在せず、どちらのCPUについてのグローバル変数宣言かの区別なく宣言を行う。そこで、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置では、どちらのCPUの変数宣言かを区別せず、図10に示すように宣言する。つまり、グローバル変数シート106の段階では、グローバル変数C000~C003は、MAINCPU第1プロセッサ1024およびLOCALCPU第2プロセッサ1025についての変数宣言かは行わない。GUI部103は、図10に示すように、ユーザによって入力され、グローバル変数シート106を生成する。次に、ユーザにより指定されたプログラムの割り当てやグローバル変数の指定に基づいて各プロセッサにダウンロードされるプログラムの生成処理コンパイルについて説明する。まず、図7に示したTree構造は、中間コード生成部107によって図11aに示すようなリスト図1の‘プログラムリスト112’にされる。図11aのうち、‘NPGI:2’は、プログラムの本数を示しており、L_DEF,DEFAULTはタスク名を示している。他の記号は特に本発明には関係がないので説明は省略する。さらに、中間コード生成部107によって図8b1および図8b2に示すような中間コード図1の‘中間コード121’が生成される。ここで、図8b1に示すMAINCPU用中間コードは、図8a1に示したMAINCPU用プログラムから生成した中間コードである。さらに、図8b2に示すLOCALCPU用中間コードは、図8a2に示したLOCALCPU用プログラムから生成した中間コードである。次に、グローバル変数属性生成部108は、中間コード121を解析してプログラム単位でグローバル変数が読み込み変数か書き込み変数かを判定し、プログラムごとに図8c1および図8c2に示すようなグローバル変数のリード/ライト表図1の‘リード/ライト表109’を作成する。ここで、図8c1に示すMAINCPU用リード/ライト表は、図8b1に示したMAINCPU用中間コードから生成したリード/ライト表である。さらに、図8c2に示すLOCALCPU用リード/ライト表は、図8b2に示すLOCALCPU用中間コードから生成したリード/ライト表である。ここで、Rの欄に○が付与されている変数が読み込みを行う変数、Wの欄に○が付与されている変数が書き込みを行う変数である。さらに、グローバル変数割付部110は、リードライト表109に基づいてグローバル変数の共有メモリへの割付を行う。具体的には、図8c1に示したMAINCPU用リード/ライト表から、書き込みを行う変数リード/ライト表のR欄に○が付与された変数であるグローバル変数C001およびC002を、共有メモリ1028の第1プロセッサ用書き込み領域1031のアドレスに割り付ける。さらに、図8c2に示したLOCALCPU用リード/ライト表から、書き込みを行う変数リード/ライト表のR欄に○が付与された変数であるグローバル変数C000およびC003を、共有メモリ1028の第2プロセッサ用書き込み領域1032のアドレスに割り付ける。さらに、マシンコード生成部109により図11aに示したリストが分割される。この分割は、タスク名をキーワードに、MAINCPUのリストとLOCALCPUのリストに分割される。図11bにMAINCPU用に分割したリストを示し、図11cにLOCALCPU用に分割したリストを示す。マシンコード生成部111は、グローバル変数割付部110からの変数割付情報を用い、該分割したリストをコンパイルし、各プロセッサCPUに対応するプログラムリストとプログラムのマシンコードを生成する。図12に、マシンコードが生成されるまでの概要を示した。即ち、図11aのリストは、マシンコード生成部111によりMAINCPU用のリスト図11bとLOCALCPU用のリスト図11cに分割され、コンパイル処理される。また、MAINCPU用プログラム図8a1とLOCALCPU用プログラム図8a2のプログラムは、マシンコード生成部111によりMAINCPU用中間ソース図8b1およびLOCALCPU用中間ソース図8b2が生成される。MAINCPU用中間ソース図8b1およびLOCALCPU用中間ソース図8b2から、グローバル変数属性生成部108によりMAINCPU用リード/ライト表図8c1およびLOCALCPU用リード/ライト表図8c2が生成され、グローバル変数割付部110にてグローバル変数が共有メモリのアドレスに割り付ける。コンパイル処理では、CPU毎にコンパイルが行われるため、この場合は2回コンパイルが行われる。例えば、1回目のコンパイルでMAINCPU用のプログラムリストおよびマシンコードが生成され、2回目のコンパイルでLOCALCPU用のプログラムリストおよびマシンコードが生成される。TASKに紐付けられるプログラムは複数可能であるため、1回のコンパイルで複数のマシンコードが生成されることが可能である。次に、マシンコード生成部111によって生成されたマシンコードのプログラマブルコントローラへのダウンロード処理ダウンロード部112の処理について説明する。図13に示すように、マシンコードのプログラマブルコントローラの各プロセッサへのダウンロードは、マシンコードと同時に各プロセッサCPU毎のプログラムリストに基づいて、各CPUに対して行われる。次に、マシンコードとプログラムリストの比較処理比較部115の処理について説明する。図14に示すように、プログラマブルコントローラ内にダウンロードされているマシンコード125と、プログラマブルコントローラが作成したプログラムリスト126がアップロード部114のアップロード処理により読み出され、プログラマブルコントローラ用プログラム作成支援装置内で持っているマシンコード123とプログラムリスト124が比較部115によって比較される。比較部115における上述のような比較処理によって、プログラマブルコントローラへのダウンロード時、生成されたプログラムが間違いなくダウンロードできているかの確認を行うことが可能で、また、ダウンロード後、プログラマブルコントローラ用プログラム作成支援装置内のプログラムを変更してしまった場合は、比較することによって不一致となるため、変更したことを確認することができる。以上のように本発明のプログラマブルコントローラ用プログラム作成支援装置について詳細に説明したが、本発明は以上に述べたことに限定されるものではなく、その他、本発明の要旨を逸脱しない範囲で様々の構成、または形状をつくることができることはいうまでもない。"