(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチＣＰＵモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援装置であって、
前記複数のプロセッサへのプログラムの割り当てをユーザが明示的に指定するためのダイアログを表示し、該ユーザによるプログラム割り当て指示を記憶する処理と、
前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザが指定するためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を記憶する処理と、
を行うＧＵＩ部（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ部）を備え、
前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み／書き込み属性を生成するグローバル変数属性生成部と、
前記プログラム割り当て指示と前記グローバル変数の読み込み／書き込み属性とに基づいて、前記グローバル変数を前記共有メモリに割り付けるグローバル変数割付部と、
を有し、
前記グローバル変数割付部は、前記プログラムで用いられる前記グローバル変数が書き込み属性を有する場合に、前記グローバル変数を前記プログラムが割り当てられたプロセッサの共有メモリに割り付けることを特徴とするプログラマブルコントローラ用プログラム作成支援装置。
【請求項２】
前記ＧＵＩ部が記憶したユーザによるプログラム割り当て指示に基づいて、中間コードおよび中間的なプログラムリストを生成する中間コード生成部と、
前記生成された中間コード、中間的なプログラムリスト、グローバル変数の読み込み／書き込み属性をコンパイルして、前記プログラム割り当て指示と前記グローバル変数の読み込み／書き込み属性とに基づいて前記グローバル変数を前記共有メモリに割り付けたマシンコードと最終的なプログラムリストを生成するマシンコード生成部と、
を備えることを特徴とする請求項１に記載のプログラマブルコントローラ用プログラム作成支援装置。
【請求項３】
前記マシンコード生成部は、中間的なプログラムリスト内のタスク名に基づいて、当該中間的なプログラムリストを各プロセッサに該当する内容のみを含む形に分割し、前記中間コードと該分割されたリストとをコンパイルして、マシンコードと最終的なプログラムリストを生成することを特徴とする請求項２記載のプログラマブルコントローラ用プログラム作成支援装置。
【請求項４】
前記マシンコードは、１以上生成されることを特徴とする請求項２記載のプログラマブルコントローラ用プログラム作成支援装置。
【請求項５】
更に、前記生成されたマシンコードを、前記生成された最終的なプログラムリストに基づいて各プロセッサにダウンロードするダウンロード部を備えることを特徴とする請求項２記載のプログラマブルコントローラ用プログラム作成支援装置。
【請求項６】
更に、前記プロセッサにダウンロードされたマシンコードを前記プログラマブルコントローラ用プログラム作成支援装置にアップロードするアップロード部と、
前記アップロードされたマシンコードと、当該プログラマブルコントローラ用プログラム作成支援装置内のマシンコードを比較する比較部と、
を備えることを特徴とする請求項５記載のプログラマブルコントローラ用プログラム作成支援装置。
【請求項７】
複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチＣＰＵモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援をコンピュータによって行うための方法であって、当該コンピュータは処理部と記憶部とを備え、
前記処理部が、
前記各プロセッサへのプログラムの割り当てをユーザに明示的に指定させるためのダイアログを表示し、該ユーザによるプログラム割り当て指示を前記記憶部に記憶し、
前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザに指定させるためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を前記記憶部に記憶し、
前記記憶部に記憶されたユーザによるプログラム割り当て指示およびグローバル変数の宣言の指定に基づいて、中間コードおよび中間的なプログラムリストを生成し、
前記中間コードおよび前記中間的なプログラムリストから、前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み／書き込み属性を表したリード／ライト表を生成し、
前記生成された中間コードと中間的なプログラムリストとリード／ライト表をコンパイルし、前記プログラム割り当て指示と前記グローバル変数の読み込み／書き込み属性とに基づき、該グローバル変数が書き込み属性を有する場合に前記グローバル変数を前記プログラムが割り当てられたプロセッサの前記共有メモリに割り付けたマシンコードと最終的なプログラムリストを生成し、
前記生成された最終的なプログラムリストに基づいて、前記生成されたマシンコードを前記各プロセッサにダウンロードする、
処理を行うことによってプログラマブルコントローラ用プログラムの作成支援を行うことを特徴とするプログラム作成支援方法。
【請求項８】
更に、前記各プロセッサにダウンロードされたマシンコードをアップロードし、
前記アップロードされたマシンコードと、前記ダウンロードされたマシンコードを比較することを特徴とする請求項７記載のプログラム作成支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ用プログラムの作成支援を行う装置に関わり、更に詳しくは複数のプロセッサを備えるプログラマブルコントローラ用プログラムの作成を支援することができる装置に関する。
【背景技術】
【０００２】
プログラマブルコントローラ用プログラム作成支援装置とは、システム設計者などのユーザによるプログラマブルコントローラのプログラムの作成、デバックを支援するための装置である。なお、以下の記載および図面においてプログラマブルコントローラをＰＬＣとも記載する。
【０００３】
プログラマブルコントローラのプログラミングに関しては、ＩＥＣ６１１３１−３（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ：国際電気標準会議）（非特許文献１）という国際標準規格に準拠したプログラム言語を用いてシステム開発等を行うことが一般的である。
【０００４】
図１５に、ＩＥＣ６１１３１−３に規定されているソフトウェアモデルを示す。図１５のように従来のプログラマブルコントローラ用プログラム作成支援装置においては、単一プロセッサを持つプログラマブルコントローラに、１つのコンフィグレーション、１つのリソース、複数プログラムの構成をサポートするプログラミングが行われている（図１６参照）。
【０００５】
更に近年では、図１７に示すような複数のプロセッサとプロセッサ間で共有する共有メモリを備えるプログラマブルコントローラも普及してきており、複数プロセッサを備えるプログラマブルコントローラ用プログラム作成支援装置としては、例えば特許文献１に示すような装置がある。
【０００６】
特許文献１で開示されるプログラマブルコントローラ用プログラム作成支援装置は、複数のプロセッサを備えるプログラマブルコントローラのプログラムを作成するときに、複数プログラムからアクセス可能な変数であるグローバル変数を割り付ける場合、共有メモリをどのプロセッサの変数領域に割り付けるかを明示的に指定させる様にしていた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１９８１４３号公報
【非特許文献】
【０００８】
【非特許文献１】ＩＥＣ６１１３１−３
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、共有メモリはいずれのプロセッサからも読み込み／書き込みが可能であるため、他のプロセッサによる誤ったメモリの上書きが発生しないように、通常、各プロセッサの書き込み領域を定めている。
【００１０】
そのため、グローバル変数は、書き込みを行うプロセッサの共有メモリ領域に割り付ける必要があるため、プロセッサへのプログラムの割付を変更した際には必ずグローバル変数宣言も変更する必要があり、ユーザにとっても使い勝手が悪いものであった。
【００１１】
そこで本願発明は、複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチＣＰＵモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援装置またはプログラム作成支援方法を、ユーザにとってより使い易いものにすることを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決するために、本発明のプログラマブルコントローラ用プログラム作成支援装置は、
複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチＣＰＵモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援装置であって、
前記複数のプロセッサへのプログラムの割り当てをユーザが明示的に指定するためのダイアログを表示し、該ユーザによるプログラム割り当て指示を記憶する処理と、
前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザが指定するためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を記憶する処理と、
を行うＧＵＩ部（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ部）を備え、
前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み／書き込み属性を生成するグローバル変数属性生成部と、
前記プログラム割り当て指示と前記グローバル変数の読み込み／書き込み属性とに基づいて、前記グローバル変数を前記共有メモリに割り付けるグローバル変数割付部と、
を有し、
前記グローバル変数割付部は、前記プログラムで用いられる前記グローバル変数が書き込み属性を有する場合に、前記グローバル変数を前記プログラムが割り当てられたプロセッサの共有メモリに割り付けることを特徴とする。
【００１３】
また、本発明のプログラム作成支援方法は、  複数のプロセッサと当該プロセッサごとに領域が割り付けられた共有メモリとを備えたマルチＣＰＵモジュールで構成されたプログラマブルコントローラ用のプログラム作成支援をコンピュータによって行うための方法であって、当該コンピュータは処理部と記憶部とを備え、
前記処理部が、
前記各プロセッサへのプログラムの割り当てをユーザに明示的に指定させるためのダイアログを表示し、該ユーザによるプログラム割り当て指示を前記記憶部に記憶し、
前記プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をユーザに指定させるためのダイアログを表示し、該ユーザによるグローバル変数の宣言の指定を前記記憶部に記憶し、
前記記憶部に記憶されたユーザによるプログラム割り当て指示およびグローバル変数の宣言の指定に基づいて、中間コードおよび中間的なプログラムリストを生成し、
前記中間コードおよび前記中間的なプログラムリストから、前記プログラムごとに前記グローバル変数が読み込み変数か書き込み変数かを判定し、前記プログラムごとにグローバル変数の読み込み／書き込み属性を表したリード／ライト表を生成し、
前記生成された中間コードと中間的なプログラムリストとリード／ライト表をコンパイルし、前記プログラム割り当て指示と前記グローバル変数の読み込み／書き込み属性とに基づき、該グローバル変数が書き込み属性を有する場合に前記グローバル変数を前記プログラムが割り当てられたプロセッサの前記共有メモリに割り付けたマシンコードと最終的なプログラムリストを生成し、
前記生成された最終的なプログラムリストに基づいて、前記生成されたマシンコードを前記各プロセッサにダウンロードする、
処理を行うことによってプログラマブルコントローラ用プログラムの作成支援を行うことを特徴とする。
【発明の効果】
【００１４】
ユーザは、プロセッサへのプログラムの割り当てを意識することなく、グローバル変数宣言が可能となり、ユーザにとって使い勝手が良いプログラム支援装置またはプログラム作成支援方法が提供できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るＰＬＣ用プログラム作成支援装置の構成を示す図である。
【図２】ＰＬＣおよびマルチＣＰＵモジュールの概略構成を示す図である。
【図３】共有メモリの概略構成および各プロセッサとの読み込み／書き込み状態を表した図である。
【図４】ＰＬＣ用プログラム作成支援装置において、１つのコンフィグレーションを作成する場合のフローを示す図である。
【図５】各プロセッサに割り付けるプログラムを割り当てる際のＰＬＣ用プログラム作成支援装置の表示画面例を示す図である。
【図６】Ｄｉａｌｏｇの一例を示す図である。
【図７】ＰＬＣの各プロセッサへのプログラムの割り当てが完了したときの一例を示す図である。
【図８】（ａ１）（ａ２）はプログラムの一例であり、（ｂ１）（ｂ２）は中間コードの一例であり、（ｃ１）（ｃ２）はリード／ライト表の一例である。
【図９】グローバル変数について説明する図である。
【図１０】グローバル変数の宣言の記述の一例を示す図である。
【図１１】ａ）は、図７のＴｒｅｅ構造を展開したリストの一例を示す図であり、（ｂ）はＭＡＩＮ  ＣＰＵ用に分割したリストの一例を示す図であり、（ｃ）はＬＯＣＡＬ  ＣＰＵ用に分割したリストの一例を示す図である。
【図１２】マシンコードが生成されるまでの概要を示す図である。
【図１３】ＰＬＣ用プログラム作成支援装置におけるダウンロード処理を説明する図である。
【図１４】ＰＬＣ用プログラム作成支援装置における比較処理を説明する図である。
【図１５】ＩＥＣ６１１３１−３ソフトウェアモデルを示す図である。
【図１６】従来のＰＬＣ用プログラム作成支援装置の一例を示す図である。
【図１７】マルチプロセッサプログラマブルコントローラの構成例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本発明の実施の形態について説明する。
図１に、本発明の実施形態に係るプログラマブルコントローラ用プログラム作成支援装置の構成を示す。
【００１７】
プログラマブルコントローラ用プログラム作成支援装置１０１は、当該装置内の通信インターフェース１１３を介してプログラマブルコントローラ１０２と通信し、マシンコードなどのプログラム等のダウンロード、アップロード等を行う。
【００１８】
図２は、プログラマブルコントローラ１０２の概略構成およびマルチＣＰＵモジュールの概略構成を示す図である。
プログラマブルコントローラ１０２はベースボード１０２１に、少なくともＣＰＵモジュールを含む１以上のモジュールが接続されている。ここで本発明の実施形態においてＣＰＵモジュール１０２２は、マルチＣＰＵモジュール１０２２である。
【００１９】
マルチＣＰＵモジュール１０２２は、第１プロセッサ１０２４，第２プロセッサ１０２５、ベースボード用通信インターフェース１０２７、共有メモリ１０２８、通信インターフェース１０２９を備え、これらは共通のバスを介して接続されている。ここで、本実施形態においては、第１プロセッサ１０２４がＭＡＩＮ  ＣＰＵとして機能し、第２プロセッサ１０２５がＬＯＣＡＬ  ＣＰＵとして機能している。
【００２０】
ベースボード用通信インターフェース１０２７は、他のモジュール１０２３とベースボードを介して各種データや指令を授受するためのインターフェース部である。勿論、他のモジュール１０２３も備えている。共有メモリ１０２８は、第１プロセッサ１０２４および第２プロセッサ１０２５のいずれもが読み書き可能なメモリである。通信インターフェース１０２９は、プログラマブルコントローラ用プログラム作成支援装置１０１やイーサネット（登録商標）に接続するためのインターフェース部である。各プロセッサは、ＣＰＵ、プログラムメモリ、ローカルメモリをそれぞれ備えている。
【００２１】
ここで、共有メモリ１０２８は、図３のように予め第１プロセッサ用書き込み領域１０３１と第２プロセッサ用書き込み領域１０３２とが定められている。第１プロセッサ１０２４は、共有メモリ１０２８の第１プロセッサ書き込み領域１０３１について、データの読み込み／書き込みが自由に可能であるが、第２プロセッサ書き込み領域１０３２については読み込みのみ可能であり、書き込みは不可能である。同様に、第２プロセッサ１０２５は、共有メモリ１０２８の第２プロセッサ書き込み領域１０３２について、データの読み込み／書き込みが自由に可能であるが、第１プロセッサ書き込み領域１０３１については読み込みのみ可能であり、書き込みは不可能である。
【００２２】
なお、図２における他のモジュール１０２３は、Ｉ／Ｏモジュールや通信モジュール等の任意の機能のモジュールである。また、マルチＣＰＵモジュールはプロセッサを２つ以上備えていても良い。
【００２３】
ここで、図１の説明に戻る。図示しないが、プログラマブルコントローラ用プログラム作成支援装置１０１は、ＣＰＵなどの処理部やＲＡＭなどのメモリを備える情報処理装置（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などで構成されるものである。そして、プログラマブルコントローラ用プログラム作成支援装置１０１のプログラマブルコントローラ１０２の各プロセッサに割り当てるプログラムを作成する処理を行う部分は、前記情報処理装置におけるＣＰＵなどで実現される処理部とＲＡＭなどのメモリによってプログラムが実行されることによって、次のように実現される。
【００２４】
すなわち、まず、システム設計者などのユーザがプログラムを作成（記述）するためのインターフェースを提供するＧＵＩ部（Graphical User Interface部）１０３、と、該ＧＵＩ部１０３へのユーザからの指示等をキーボードやマウス入力により伝達する入力部１０４と、ＧＵＩ部１０３の出力を表示画面やスピーカ、プリンタなどの出力装置に出力する出力部１０５とを備える。
【００２５】
ＧＵＩ部１０３は、ユーザがプログラムを作成（記述）するために様々な処理を行うが、本実施の形態として特徴がある点は、ユーザがプログラマブルコントローラ上の各プロセッサへのプログラムの割り当てを明示的に指定するためのダイアログを表示し、ユーザによって指定されたプログラム割り当て指示を記憶する処理を行う点と、プログラマブルコントローラにおいて、複数のプログラムからアクセス可能な変数であるグローバル変数の宣言をするためのダイアログを表示し、ユーザによって指定されたグローバル変数の宣言を記憶する処理を行う点である。
【００２６】
そして、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置１０１は、ユーザによって指定された各プロセッサへのプログラムの割り当て、およびグローバル変数の宣言が記述されたグローバル変数シート１０６に基づいて、中間コード生成部１０７にて中間コード１２１とプログラムリスト１２２を生成する。
【００２７】
さらに、グローバル変数属性生成部１０８は、中間コード１２１を解析してプログラム単位でグローバル変数が読み込み変数か書き込み変数かを判定し、プログラムごとにグローバル変数のリード／ライト表１０９を作成する。
【００２８】
グローバル変数割付部１１０は、リードライト表１０９に基づいてグローバル変数を共有メモリの第１プロセッサ用書き込み領域１０３１と第２プロセッサ用書き込み領域１０３２に割付を行う。
【００２９】
マシンコード生成部１１１は、中間コード１２１とプログラムリスト１２２とグローバル変数割付部１１０からの変数割付情報とから、マシンコード１２３やプログラムリスト１２４を生成する。
【００３０】
マシンコード生成部１１１は、生成された中間コード１２１、中間的なプログラムリスト１２２、グローバル変数割付部１１０から出力される変数割付情報を複数回以上（プロセッサの数分）コンパイルし、プログラマブルコントローラの各プロセッサに対応するマシンコードを生成する。尚、コンパイルの際、マシンコードは１つのプロセッサに対して複数生成される場合もある。
【００３１】
更に、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置１０１は、通信インターフェース１１３を介して、生成されたマシンコード１２３を生成されたプログラムリスト１２４に基づいて、プログラマブルコントローラの各プロセッサにダウンロードするダウンロード部１１２を備える。
【００３２】
また、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置１０１は、プログラマブルコントローラ１０２にダウンロードされたマシンコードや、プログラマブルコントローラ１０２で作成されるプログラムリストを、通信インターフェース１１３を介してプログラマブルコントローラ用プログラム作成支援装置１０１にアップロードするアップロード部１１４を備える。
【００３３】
アップロード部１１４によってアップロードされたマシンコード１２５やプログラムリスト１２６は、プログラマブルコントローラ用プログラム作成支援装置１０１からダウンロードされたマシンコード１２３およびプログラムリスト１２４と、比較部１１５によって比較することが可能である。比較部１１５の比較処理によって、ダウンロード時には、生成されたマシンコードが間違いなくダウンロードされているか確認することが可能であり、また、ダウンロード後に随時装置内のプログラム等とプログラマブルコントローラ１０２内のプログラム等を比較可能であるため、例えばプログラマブルコントローラ用プログラム作成支援装置１０１内のプログラムを変更してしまったかどうかわからない場合などは確認を行うことが可能である。
【００３４】
図１に示したプログラマブルコントローラ用プログラム作成支援装置１０１において、例えばユーザが或るシステム構成を設定する、すなわち、新規に１つのコンフィグレーションを作成する場合のフローは図４に示すようになる。
【００３５】
まず、Ｓ２０１で、新たなコンフィグレーションの名前を作成するなどの設定を行う。次にＳ２０２で、制御するリソースを設定し、Ｓ２０３でタスクの設定を行う。Ｓ２０４で、ＰＯＵ（Ｐｒｏｇｒａｍ  Ｏｒｇａｎｉｚａｔｉｏｎ  Ｕｎｉｔ）を作成し、Ｓ２０５でＰＯＵをインスタンス化し、Ｓ２０６でコンパイルし、Ｓ２０７でプログラマブルコントローラ１０２にコンパイルして生成されたマシンコードをダウンロードする。Ｓ２０８で、デバックを行う。
【００３６】
図４に示したフローの各処理と上述の図１の各部との説明の対応は次のようになる。
Ｓ２０３におけるタスクの設定の処理において、ユーザがＧＵＩ部１０３に対しプログラマブルコントローラ１０２の各プロセッサに割り当てるプログラム（タスク）の指定を行う。次に、Ｓ２０６のコンパイルにおいて中間コード生成部１０７やマシンコード生成部１１１におけるプログラムの生成が行われる。そして、Ｓ２０７のダウンロードは、ダウンロード部１１２により行われる。
【００３７】
以下、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置の各部の処理についてより詳細に説明する。
まず、図５、図６、図７を参照して、ＧＵＩ部１０３において行われる、プログラマブルコントローラのプロセッサへのプログラムの割り当て処理について説明する。
【００３８】
図５に、プロセッサへプログラム（タスク）を割り当てる際の、プログラマブルコントローラ用プログラム作成支援装置の表示画面例を示す。ＧＵＩ上で、例えばＬＯＣＡＬ  ＣＰＵのあるＴＡＳＫにプログラムを割り付けるには、図５のように、該当ＴＡＳＫを選択後、入力装置であるマウスで右クリックする。すると挿入のポップアップメニューが表示され、プログラムインスタンスを選択する。
【００３９】
次に、図６に示すようなＤｉａｌｏｇ（ダイアログ）が表示され、ユーザがインスタンス化するプログラムタイプを選択し、名称を設定すると、図５のＴｒｅｅ構造を示す部分に挿入したプログラムインスタンスが表示される。
【００４０】
図６に示すＤｉａｌｏｇが表示され、ユーザがインスタンス化するプログラムを設定する際に、ユーザはプログラマブルコントローラのＬＯＣＡＬ  ＣＰＵに割り当てたいプログラム（タスク）については、‘Ｌ＿’が付くタスクの名称（プログラムインスタンス）をつけ、またプログラマブルコントローラのＭＡＩＮ  ＣＰＵに割り当てたいプログラム（タスク）については‘Ｌ＿’が付かないタスクの名称（プログラムインスタンス）をつける。
【００４１】
すなわち、プログラマブルコントローラのプロセッサへのプログラムの割り当てが完了した際の図５のＴｒｅｅ構造部分を拡大して表示すると、図７に示すようになる。つまり、ユーザがＬＯＣＡＬ  ＣＰＵに割り当てたいプログラム（タスク）については‘Ｌ＿’が付いた名称になっており、またＭＡＩＮ  ＣＰＵに割り当てたいプログラム（タスク）については‘Ｌ＿’が付いていない名称となっている。
【００４２】
ＧＵＩ部１０３は、図５〜図７に示したように、ユーザがプログラマブルコントローラ上の各プロセッサへのプログラムの割り当てを明示的に指定するためのダイアログ（図６）を表示し、ユーザによって指定されたプログラム割り当て指示を記憶する処理を行う（図７）。
【００４３】
次に、図８（ａ１）および図８（ａ２）は作成されたプログラムの一例である。ここで、図８（ａ１）がＭＡＩＮ  ＣＰＵに割り当てられたプログラムの一部であり、図８（ａ２）がＬＯＣＡＬ  ＣＰＵに割り当てられたプログラムの一部である。
【００４４】
次に、図９に示す、複数のプログラムからアクセス可能な変数であるグローバル変数について説明する。グローバル変数とは１リソース内の複数プログラムからアクセス可能な変数を言う。プログラム作成支援装置では、図７に示したＴｒｅｅ構造のグローバル変数シートにて、ＩＥＣ６１１３１−３に準拠し宣言される。なお、グローバル変数シートはＭＡＩＮ  ＣＰＵ，ＬＯＣＡＬ  ＣＰＵごとに存在せず、どちらのＣＰＵについてのグローバル変数宣言かの区別なく宣言を行う。
【００４５】
そこで、本実施の形態のプログラマブルコントローラ用プログラム作成支援装置では、どちらのＣＰＵの変数宣言かを区別せず、図１０に示すように宣言する。つまり、グローバル変数シート１０６の段階では、グローバル変数Ｃ０００〜Ｃ００３は、ＭＡＩＮ  ＣＰＵ（第１プロセッサ１０２４）およびＬＯＣＡＬ  ＣＰＵ（第２プロセッサ１０２５）についての変数宣言かは行わない。ＧＵＩ部１０３は、図１０に示すように、ユーザによって入力され、グローバル変数シート１０６を生成する。
【００４６】
次に、ユーザにより指定されたプログラムの割り当てやグローバル変数の指定に基づいて各プロセッサにダウンロードされるプログラムの生成処理（コンパイル）について説明する。
【００４７】
まず、図７に示したＴｒｅｅ構造は、中間コード生成部１０７によって図１１（ａ）に示すようなリスト（図１の‘プログラムリスト１１２’）にされる。図１１（ａ）のうち、‘ＮＰＧＩ：２’は、プログラムの本数を示しており、Ｌ＿ＤＥＦ，ＤＥＦＡＵＬＴはタスク名を示している。他の記号は特に本発明には関係がないので説明は省略する。さらに、中間コード生成部１０７によって図８（ｂ１）および図８（ｂ２）に示すような中間コード（図１の‘中間コード１２１’）が生成される。ここで、図８（ｂ１）に示すＭＡＩＮ  ＣＰＵ用中間コードは、図８（ａ１）に示したＭＡＩＮ  ＣＰＵ用プログラムから生成した中間コードである。さらに、図８（ｂ２）に示すＬＯＣＡＬ  ＣＰＵ用中間コードは、図８（ａ２）に示したＬＯＣＡＬ  ＣＰＵ用プログラムから生成した中間コードである。
【００４８】
次に、グローバル変数属性生成部１０８は、中間コード１２１を解析してプログラム単位でグローバル変数が読み込み変数か書き込み変数かを判定し、プログラムごとに図８（ｃ１）および図８（ｃ２）に示すようなグローバル変数のリード／ライト表（図１の‘リード／ライト表１０９’）を作成する。ここで、図８（ｃ１）に示すＭＡＩＮ  ＣＰＵ用リード／ライト表は、図８（ｂ１）に示したＭＡＩＮ  ＣＰＵ用中間コードから生成したリード／ライト表である。さらに、図８（ｃ２）に示すＬＯＣＡＬ  ＣＰＵ用リード／ライト表は、図８（ｂ２）に示すＬＯＣＡＬ  ＣＰＵ用中間コードから生成したリード／ライト表である。ここで、「Ｒ」の欄に「○」が付与されている変数が読み込みを行う変数、「Ｗ」の欄に「○」が付与されている変数が書き込みを行う変数である。
【００４９】
さらに、グローバル変数割付部１１０は、リードライト表１０９に基づいてグローバル変数の共有メモリへの割付を行う。具体的には、図８（ｃ１）に示したＭＡＩＮ  ＣＰＵ用リード／ライト表から、書き込みを行う変数（リード／ライト表の「Ｒ」欄に「○」が付与された変数）であるグローバル変数Ｃ００１およびＣ００２を、共有メモリ１０２８の第１プロセッサ用書き込み領域１０３１のアドレスに割り付ける。さらに、図８（ｃ２）に示したＬＯＣＡＬ  ＣＰＵ用リード／ライト表から、書き込みを行う変数（リード／ライト表の「Ｒ」欄に「○」が付与された変数）であるグローバル変数Ｃ０００およびＣ００３を、共有メモリ１０２８の第２プロセッサ用書き込み領域１０３２のアドレスに割り付ける。
【００５０】
さらに、マシンコード生成部１０９により図１１（ａ）に示したリストが分割される。この分割は、タスク名をキーワードに、ＭＡＩＮ  ＣＰＵのリストとＬＯＣＡＬ  ＣＰＵのリストに分割される。図１１（ｂ）にＭＡＩＮ  ＣＰＵ用に分割したリストを示し、図１１（ｃ）にＬＯＣＡＬ  ＣＰＵ用に分割したリストを示す。マシンコード生成部１１１は、グローバル変数割付部１１０からの変数割付情報を用い、該分割したリストをコンパイルし、各プロセッサ（ＣＰＵ）に対応するプログラムリストとプログラムのマシンコードを生成する。
【００５１】
図１２に、マシンコードが生成されるまでの概要を示した。
即ち、図１１（ａ）のリストは、マシンコード生成部１１１によりＭＡＩＮ  ＣＰＵ用のリスト（図１１（ｂ））とＬＯＣＡＬ  ＣＰＵ用のリスト（図１１（ｃ））に分割され、コンパイル処理される。
【００５２】
また、ＭＡＩＮ  ＣＰＵ用プログラム（図８（ａ１））とＬＯＣＡＬ  ＣＰＵ用プログラム（図８（ａ２））のプログラムは、マシンコード生成部１１１によりＭＡＩＮ  ＣＰＵ用中間ソース（図８（ｂ１））およびＬＯＣＡＬ  ＣＰＵ用中間ソース（図８（ｂ２））が生成される。ＭＡＩＮ  ＣＰＵ用中間ソース（図８（ｂ１））およびＬＯＣＡＬ  ＣＰＵ用中間ソース（図８（ｂ２））から、グローバル変数属性生成部１０８によりＭＡＩＮ  ＣＰＵ用リード／ライト表（図８（ｃ１））およびＬＯＣＡＬ  ＣＰＵ用リード／ライト表（図８（ｃ２））が生成され、グローバル変数割付部１１０にてグローバル変数が共有メモリのアドレスに割り付ける。
【００５３】
コンパイル処理では、ＣＰＵ毎にコンパイルが行われるため、この場合は２回コンパイルが行われる。例えば、１回目のコンパイルでＭＡＩＮ  ＣＰＵ用のプログラムリストおよびマシンコードが生成され、２回目のコンパイルでＬＯＣＡＬ  ＣＰＵ用のプログラムリストおよびマシンコードが生成される。ＴＡＳＫに紐付けられるプログラムは複数可能であるため、１回のコンパイルで複数のマシンコードが生成されることが可能である。
【００５４】
次に、マシンコード生成部１１１によって生成されたマシンコードのプログラマブルコントローラへのダウンロード処理（ダウンロード部１１２の処理）について説明する。図１３に示すように、マシンコードのプログラマブルコントローラの各プロセッサへのダウンロードは、マシンコードと同時に各プロセッサ（ＣＰＵ）毎のプログラムリストに基づいて、各ＣＰＵに対して行われる。
【００５５】
次に、マシンコードとプログラムリストの比較処理（比較部１１５の処理）について説明する。図１４に示すように、プログラマブルコントローラ内にダウンロードされているマシンコード１２５と、プログラマブルコントローラが作成したプログラムリスト１２６がアップロード部１１４のアップロード処理により読み出され、プログラマブルコントローラ用プログラム作成支援装置内で持っているマシンコード１２３とプログラムリスト１２４が比較部１１５によって比較される。
【００５６】
比較部１１５における上述のような比較処理によって、プログラマブルコントローラへのダウンロード時、生成されたプログラムが間違いなくダウンロードできているかの確認を行うことが可能で、また、ダウンロード後、プログラマブルコントローラ用プログラム作成支援装置内のプログラムを変更してしまった場合は、比較することによって不一致となるため、変更したことを確認することができる。
【００５７】
以上のように本発明のプログラマブルコントローラ用プログラム作成支援装置について詳細に説明したが、本発明は以上に述べたことに限定されるものではなく、その他、本発明の要旨を逸脱しない範囲で様々の構成、または形状をつくることができることはいうまでもない。
【符号の説明】
【００５８】
１０１      プログラマブルコントローラ用プログラム作成支援装置
１０２      プログラマブルコントローラ
１０３      ＧＵＩ部
１０４      入力部
１０５      出力部
１０６      グローバル変数シート
１０７      中間コード生成部
１０８      グローバル変数属性生成部
１０９      リード／ライト表
１１０      グローバル変数割付部
１１１      マシンコード生成部
１１２      ダウンロード部
１１３      通信インターフェース
１１４      アップロード部
１１５      比較部
１２１      中間コード
１２２      プログラムリスト
１２３，１２５      マシンコード
１２４,１２６      プログラムリスト
【図１】
0005757098.tif 000002
【図２】
0005757098.tif 000003
【図３】
0005757098.tif 000004
【図４】
0005757098.tif 000005
【図８】
0005757098.tif 000006
【図９】
0005757098.tif 000007
【図１０】
0005757098.tif 000008
【図１１】
0005757098.tif 000009
【図１２】
0005757098.tif 000010
【図１３】
0005757098.tif 000011
【図１４】
0005757098.tif 000012
【図１７】
0005757098.tif 000013
【図５】
0005757098.tif 000014
【図６】
0005757098.tif 000015
【図７】
0005757098.tif 000016
【図１５】
0005757098.tif 000017
【図１６】
0005757098.tif 000018