(57)【要約】【課題】  ＰＬＣ上で実行されるＣプログラムを、コンフィグレーションファイルによりその振る舞いを変更することを容易に行えるツールを提供すること【解決手段】  プログラムの実行順や、入出力パラメータとＰＬＣ２の実メモリへの割り付け、ＰＬＣの実メモリを格納するメモリアドレス、入出力パラメータの初期値等からなるコンフィグレーションファイルＦ１を設定するデータ設定部３１と、データ設定部で設定されたＰＬＣのメモリアドレスをＣプログラムで扱う絶対アドレスに変換する絶対アドレス変換部３２ｂと、ＣプログラムのシンボルファイルＦ３と絶対アドレス変換部で生成された中間ファイルＦ５から動作ファイルＦ６を作成する動作ファイル作成部３２ｃと、中間ファイルからマップファイルＦ７を作成するマップファイル作成部３２ｄと、中間ファイルから初期値ファイルＦ７を作成する初期値ファイル作成部３２ｅと、それら作成されたファイルおよびオブジェクトファイルＦ４をＰＬＣに転送するデータ転送部３４を備えて構成される。【選択図】        図６
2005141435.tif 000002
【特許請求の範囲】
【請求項１】
Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、
ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムエリアに格納された複数のプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックを格納するデータエリアを備えたプログラマブルコントローラ用のツールであって、
前記プログラムの実行順を設定したコンフィグレーションファイルと、前記プログラムを格納する前記プログラムエリアのアドレス情報を含むシンボルファイルと、前記プログラムのオブジェクトファイルを記憶保持し、
前記コンフィグレーションファイルに基づく情報と、前記シンボルファイルに格納されたアドレス情報に基づいて、前記タスク管理ブロックに登録する使用するプログラムのアドレス情報並びに前記プログラムの実行順を含む動作ファイルを作成する動作ファイル作成手段と、
前記動作ファイルと、前記オブジェクトファイルを前記プログラマブルコントローラにダウンロードすることでプログラムの動作を設定・変更するデータ転送手段を備え、
前記動作ファイル作成手段が作成する動作ファイルを構成する前記アドレス情報は、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されていることを特徴とするツール。
【請求項２】
Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、
ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、
前記プログラムが使用する入出力パラメータが格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスを備えたタスク管理ブロックを格納するデータエリアとを備えたプログラマブルコントローラ用のツールであって、
前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルを記憶保持し、
前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、
前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、
前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムが使用・参照するメモリエリアを設定・変更するデータ転送手段を備え、
前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されていることを特徴とするツール。
【請求項３】
Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、
ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムエリアに格納された複数のプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックと、前記プログラムが使用する入出力パラメータ（変数）が格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、を格納するデータエリアを備え、
前記タスク管理ブロックには、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスも格納されるようにしたプログラマブルコントローラ用のツールであって、
前記プログラムの実行順並びに前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルと、前記プログラムを格納する前記プログラムエリアのアドレス情報を含むシンボルファイルと、前記プログラムのオブジェクトファイルを記憶保持し、
前記コンフィグレーションファイルに基づく情報と、前記シンボルファイルに格納されたアドレス情報に基づいて、前記タスク管理ブロックに登録する使用するプログラムのアドレス情報並びに前記プログラムの実行順を含む動作ファイルを作成する動作ファイル作成手段と、
前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、
前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、
前記動作ファイルと、前記オブジェクトファイルと、前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムの動作を設定・変更するデータ転送手段を備え、
前記動作ファイル作成手段が作成する動作ファイルを構成する前記アドレス情報並びに前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されていることを特徴とするツール。
【請求項４】
前記プログラムに基づく情報からそのプログラムで使用される入出力パラメータを抽出する入出力パラメータ抽出手段を備え、
その入出力パラメータ抽出手段にて抽出された入出力パラメータを用いて前記コンフィグレーションファイルの一部を構成するようにしたことを特徴とする請求項２または３に記載のツール。
【請求項５】
前記コンフィグレーションファイルを構成する各データの入力を受け、当該コンフィグレーションファイルを作成するデータ設定手段を備えたことを特徴とする請求項１から４のいずれか１項に記載のツール。
【請求項６】
前記コンフィグレーションファイルのアドレスは、プログラマブルコントローラのメモリアドレスで記述され、
前記メモリアドレスを絶対アドレス変換手段にて前記絶対アドレスに変換した中間ファイルを作成し、
前記各作成手段は、前記コンフィグレーションファイルに基づいて生成された前記中間ファイルに基づいて所定のファイルを作成するようにしてなることを特徴とする請求項１から５のいずれか１項に記載のツール。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ツールに関するものであり、より具体的には、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能なプログラマブルコントローラに対し、各種の情報を設定するためのツールに関する。
【背景技術】
【０００２】
ファクトリーオートメーション（ＦＡ）の制御装置として、プログラマブルコントローラ（ＰＬＣ）が用いられている。このＰＬＣは、複数のユニットから構成される。すなわち、電源供給源の電源ユニット，ＰＬＣ全体の制御を統率するＣＰＵユニット，ＦＡの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット，アクチュエータなどに制御出力を出す出力ユニット，通信ネットワークに接続するための通信ユニットなどの各種のユニットを適宜組み合わせて構成される。
【０００３】
ＰＬＣのＣＰＵユニットにおける制御は、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ）、予め登録されたユーザプログラム記述言語（例えばラダー言語）で組まれたユーザプログラムに基づき論理演算をし（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ）、その後、いわゆる周辺処理を行うということをサイクリックに繰り返し処理するようになる。そして、上記したユーザプログラムは、ＣＰＵユニットのユーザメモリに格納される。
【０００４】
ところで、ＰＬＣの一般的な使われ方としては、複数のＩＮデータの論理演算をし、その演算結果によってＯＵＴデータを出力し、被制御装置を制御するような使われ方がある。この場合のユーザプログラムは、ラダー言語を用いることが多い。その理由は、ラダー言語によるプログラミングは、入力機器の接点のＯＮ／ＯＦＦ状態と出力機器へのＯＵＴ信号の状態との論理関係を表しやすく、目視でわかりやすいためである。
【０００５】
しかし、最近ではＰＬＣの制御内容も単なる論理演算だけでなく、関数演算や数式演算，アナログ情報を扱う処理をすることもある。このような比較的高度な演算や処理をする場合のプログラミング言語としてＣ言語を使用することがある。そこで、ＰＬＣの中に、ラダープログラムを実行するＣＰＵと、Ｃ言語を実行するＣＰＵとの両方を持たせたものがある。このようなＰＬＣでは、Ｃ言語などのコンパイル方式の言語でプログラムを記述して演算処理可能となっている。そのようなＰＬＣにおいては、プログラムは、外部のプログラミング開発環境（プログラミングツール）で作成したのち、コンパイル→アセンブル→リンクの工程を経てオブジェクトコードに変換し、その変換されたオブジェクトコードをＰＬＣのＣＰＵユニットにダウンロードして、ＣＰＵユニット内に記憶される。そのプログラムはＣＰＵユニット内にて実行される。
【０００６】
そして、現在実行中のプログラムを変更すべくメモリ内容を書き換えるには、通常、以下のような手順を実行する。すなわち、（１）まずジャンパーピンやディップスイッチ等のモード切替手段によって、ＰＬＣをプログラム転送モードに変更する。（２）次いで、オブジェクトコードのダウンロードを実行する。これにより、ＰＬＣが持つプログラムを格納するメモリに、オブジェクトコードが格納される。（３）ダウンロードが完了したらならば、ＰＬＣをプログラム実行モードに変更した後、立ち上げ直す。
【０００７】
なお、ラダープログラムをブロックごとに作成するとともに、各ブロックごとにファイル名を付してファイル・プログラム格納手段に格納し、ファイル・プログラム指定手段により、複数のブロックに対し、ファイル名および実行順位を指定し、そのファイル・プログラム指定手段により指定されたファイル・プログラムは、その実行順位に従って前記ファイル・プログラム格納手段から読み出して実行するようにしたものがある（特許文献１）。
【特許文献１】特開平６−１７５７０８
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＰＬＣにおける動作モードの決定は、電源ＯＮ時に決定されることが多いため、プログラムのダウンロードを行うに際し、ＰＬＣの再起動が必要となる場合があった。
【０００９】
従って、Ｃ言語で記述された制御プログラムの内容を、コントローラの稼働中に安全に入れ換えることができなかった。つまり、たとえ制御プログラムの実行内容を部分的に入れ替えたり、パラメータ等の設定を変更したい場合でも、一旦電源をＯＦＦにし、ＰＬＣの再起動をしなければならず、その作業が煩雑である。
【００１０】
そこで、本出願人は、Ｃ言語等のコンパイル方式の言語で記述されたプログラムに対応するプログラマブルコントローラ用機器において、メモリに記録されたプログラム自体を修正・再コンパイルすることなくプログラムによる制御内容，参照メモリエリアの変更などを行うことができるようにしたＰＬＣ用機器を考えた。
【００１１】
係るＰＬＣ用機器としては、例えば、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能なものであり、ワークメモリ中に、係るプログラムを構成する複数のアプリケーションプログラムを格納するプログラムエリアと、そのプログラムエリアに格納された複数のアプリケーションプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックを格納するデータエリアを備える。さらに、前記タスク管理ブロックは、各タスクで実行するアプリケーションプログラムを指定するアドレス情報を含むとともに、そのアドレス情報を外部から書き換え可能にすることにより実現できる。
【００１２】
ところで、係る構成からなるＰＬＣ用機器を容易に構成するためには、複数のアプリケーションプログラムをプログラムエリア中の所定アドレスに格納したり、タスク管理ブロックに格納するアドレス情報を外部から書き換える作業を行う必要があり、ユーザがかかる作業を行うためには、当該作業を容易に実現することのできるツールの開発が必要不可欠となる。
【００１３】
この発明は、プログラマブルコントローラ上で実行されるＣ言語等のコンパイル方式のプログラムの動作シーケンス，動作状態，入出パラメータに関する情報を設定ファイル（コンフィグレーションファイル）により設定・変更することを容易に行えるツールを提供することを目的とする。
【課題を解決するための手段】
【００１４】
この発明によるツールは、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムエリアに格納された複数のプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックを格納するデータエリアを備えたプログラマブルコントローラ用のツールである。そして、具体的な構成としては、前記プログラムの実行順（タスクＩＤ）を設定したコンフィグレーションファイルと、前記プログラムを格納する前記プログラムエリアのアドレス情報を含むシンボルファイルと、前記プログラムのオブジェクトファイルを記憶保持し、前記コンフィグレーションファイルに基づく情報と、前記シンボルファイルに格納されたアドレス情報に基づいて、前記タスク管理ブロックに登録する使用するプログラムのアドレス情報並びに前記プログラムの実行順を含む動作ファイルを作成する動作ファイル作成手段と、前記動作ファイルと、前記オブジェクトファイルを前記プログラマブルコントローラにダウンロードすることでプログラムの動作を設定・変更するデータ転送手段を備え前記動作ファイル作成手段が作成する動作ファイルを構成する前記アドレス情報は、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されるようにした。
【００１５】
ここで、プログラマブルコントローラ用のツールは、プログラマブルコントローラに関するツールの意味であり、プログラマブルコントローラそのものはもちろんこのと、プログラマブルコントローラを構成するユニット用のツールでも良い。
【００１６】
係る構成にすると、実行するプログラムの指定や、プログラムの実行順序の指定を、コンフィグレーションファイルで記述することにより、動作ファイル作成手段並びにデータ転送手段を実行することにより、オブジェクトファイルに基づきプログラマブルコントローラのプログラムエリアにプログラムを格納することができるとともに、プログラマブルコントローラのタスク管理ブロックに、アドレス情報を登録することが簡単に行える。さらに、実行するプログラムを変更したり、プログラムを実行する順番を変更したりする場合には、コンフィグレーションファイルの該当箇所を変更し、動作ファイル作成手段により新たな動作ファイルを作成し、データ転送手段でプログラマブルコントローラのタスク管理ブロックに登録するアドレス情報を変更することにより、再コンパイルことなく変更することができる。なお、プログラムの実行順としているが、実行するプログラムが１個の場合ももちろんあり、係る場合には、当該プログラムの実行順が１番となり、２番目以降がないことになる。
【００１７】
また、別の解決手段によれば、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムが使用する入出力パラメータ（変数）が格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスを備えたタスク管理ブロックを格納するデータエリアとを備えたプログラマブルコントローラ用のツールであって、前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルを記憶保持し、前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムが使用・参照するメモリエリアを設定・変更するデータ転送手段を備え、前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されるようにした。
【００１８】
係る構成にすると、プログラムを実行する際に使用する入出力パラメータ（変数）の指定を、コンフィグレーションファイルで記述することにより、マップファイル作成手段，初期値ファイル作成手段並びにデータ転送手段を実行することにより、プログラマブルコントローラのタスク管理ブロックに、格納先アドレスを登録すること並びに変数データマッピングブロックの所定エリア（格納先アドレスに基づいて決定）に実アドレスを登録したり、プログラムが参照する実際のデータ（初期値）を実アドレスで指定される記憶エリアに登録することが簡単に行える。さらに、プログラムの実行により参照するデータエリアを変更したり、参照するデータを変更する場合には、コンフィグレーションファイルの該当箇所を変更し、マップファイル作成手段により新たなマップファイルを作成し、データ転送手段でプログラマブルコントローラのタスク管理ブロックに登録する格納先アドレス及びまたは変数データマッピングブロックに登録する実アドレスを変更することにより、再コンパイルことなく変更することができ、初期値ファイル作成手段により新たな初期値ファイルを作成し、データ転送手段でプログラマブルコントローラの実アドレスで指定される記憶エリアに登録するデータ（初期値）を変更することができる。
【００１９】
さらに別の解決手段によれば、Ｃ言語などのコンパイル方式の言語で記述されたプログラムを実行可能で、ワークメモリ中に、複数の前記プログラムを格納するプログラムエリアと、前記プログラムエリアに格納された複数のプログラムのうち、使用するプログラム並びにその実行順を規定するタスク管理ブロックと、前記プログラムが使用する入出力パラメータ（変数）が格納されたデータ領域をアクセスするための実アドレスを備えた変数データマッピングブロックと、を格納するデータエリアを備え、前記タスク管理ブロックには、プログラムを実行する際に使用する入出力パラメータの実アドレスが格納された前記変数データマッピングブロックの格納先アドレスも格納されるようにしたプログラマブルコントローラ用のツールであって、前記プログラムの実行順（タスクＩＤ）並びに前記入出力パラメータの格納先アドレスや実アドレスに関する情報を設定したコンフィグレーションファイルと、前記プログラムを格納する前記プログラムエリアのアドレス情報を含むシンボルファイルと、前記プログラムのオブジェクトファイルを記憶保持し、前記コンフィグレーションファイルに基づく情報と、前記シンボルファイルに格納されたアドレス情報に基づいて、前記タスク管理ブロックに登録する使用するプログラムのアドレス情報並びに前記プログラムの実行順を含む動作ファイルを作成する動作ファイル作成手段と、前記コンフィグレーションファイルに基づく情報から、所定の入出力パラメータについての前記タスク管理ブロックに登録する格納先アドレス並びに前記変数データマッピングブロックに登録する実アドレスを関連づけたマップファイルを作成するマップファイル作成手段と、前記コンフィグレーションファイルに基づく情報から、前記実アドレスと、その実アドレスに登録する初期値を関連づけた初期値ファイルを作成する初期値ファイル作成手段と、前記動作ファイルと、前記オブジェクトファイルと、前記マップファイルと、前記初期値ファイルを前記プログラマブルコントローラにダウンロードすることでプログラムの動作を設定・変更するデータ転送手段を備え、前記動作ファイル作成手段が作成する動作ファイルを構成する前記アドレス情報並びに前記マップファイル作成手段が作成するマップファイルを構成する前記格納先アドレス並びに実アドレスは、前記コンパイル方式の言語で記述されたプログラムが認識可能な絶対アドレスで表記されるようにすることである。このようにすると、上記した２つの発明を総合的に実行できる。
【００２０】
上記した各発明を前提とし、さらに、前記プログラムに基づく情報からそのプログラムで使用される入出力パラメータを抽出する入出力パラメータ抽出手段を備え、その入出力パラメータ抽出手段にて抽出された入出力パラメータを用いて前記コンフィグレーションファイルの一部を構成するようにするとよい。このようにすると、入出力パラメータの抽出漏れが無くなる。
【００２１】
また、前記コンフィグレーションファイルを構成する各データの入力を受け、当該コンフィグレーションファイルを作成するデータ設定手段を備えるとよい。さらにまた、前記コンフィグレーションファイルのアドレスは、プログラマブルコントローラのメモリアドレスで記述され、前記メモリアドレスを絶対アドレス変換手段にて前記絶対アドレスに変換した中間ファイルを作成し、前記各作成手段は、前記コンフィグレーションファイルに基づいて生成された前記中間ファイルに基づいて所定のファイルを作成するように構成するとよい。このようにすると、ユーザは、人間にとって理解しやすいプログラマブルコントローラのメモリアドレス（ＤＭ等）を用いてコンフィグレーションファイルを作成することができるので、作業性が向上する。
【発明の効果】
【００２２】
本発明では、Ｃ言語等のコンパイル方式のプログラムで記述されたプログラムソースを修正しなくても、係るプログラムの動作シーケンス（実降順等）や、入出力パラメータ（変数）の指定を、コンフィグレーションファイルで変更することにより、タスク管理テーブル及びまたは変数データマッピングブロックを変更することができ、それに伴い、実行するプログラムの動作条件やシステムそのものを組替えることができる。
【発明を実施するための最良の形態】
【００２３】
まず、本発明に係るツールの実施の形態を説明するに先立ち、そのツールにより設定するＰＬＣの構成の一例を説明する。図１に示すように、ＰＬＣ１は、例えば、ＣＰＵユニット１０や、拡張ＣＰＵユニット２０等を備えて構成される。もちろん、図示省略するが、通信ユニット，Ｉ／Ｏユニット，マスタユニット，電源ユニットなど、その他のユニットも存在する。
【００２４】
ＣＰＵユニット１０は、図示省略するシステムＲＯＭに格納されたシステムプログラムにしたがって、ＣＰＵ１１が所定の処理をサイクリックに実行するものである。ここで所定の処理とは、共通処理，演算処理，サイクルタイム算出処理，Ｉ／Ｏリフレッシュ処理，周辺サービス処理がある。演算処理は、プログラムメモリ１２に格納されたユーザプログラムを順次実行するもので、その演算実行時に、適宜ＩＯメモリ１３にアクセスし、ＩＯデータを読み書きしたり、パラメータを取得する。そして、Ｉ／Ｏリフレッシュ処理では、ＩＯメモリ１３に対して、ＩＯデータの更新処理を行う。ＣＰＵ１１は、バスコントローラ１４を介してＩＯメモリ１３にアクセスしたり、拡張ＣＰＵユニット２０にアクセスしたりできるようになっている。なお、このＣＰＵ１１で実行されるユーザプログラムは、従来と同様にラダー言語で作成されている。
【００２５】
一方、拡張ＣＰＵユニット２０は、高級言語（例えばＣ言語）で作成されたプログラムを実行可能なユニットであって、係るＣ言語のプログラムを保持するフラッシュメモリ２１と、プログラム稼働用のワークメモリ２２を備えている。この拡張ＣＰＵユニット２０の形態は、ＣＰＵユニット１０とは別体のユニットで、ＣＰＵユニット１０とＰＬＣバス（内部バス）を介して、他のユニット（通信ユニット，Ｉ／Ｏユニットなど）と同様にユニット接続されている。なお、拡張ＣＰＵユニット２０の別の形態として、ＣＰＵユニット１０内に挿入して内蔵できるような増設基板タイプであってもよい。また別の形態として、ＣＰＵユニット１０に対する増設ユニットタイプでもよい。増設基板タイプや増設ユニットタイプの場合の接続バスは、他のユニットがつながるＰＬＣバスとは別のバスで、ＣＰＵユニット１０自体の内部バスでもよい（この場合もバスも回線は別でもＰＬＣバスには経由接続できるようになっている）。要するに、ＣＰＵ１１とバスを介してつながれ、拡張ＣＰＵとしてＣＰＵ１１とは別途に独自に動作するもので、ＣＰＵユニット１０のＩＯメモリ１３に対してアクセスする機能を持っていれば形態はなんでもよい。
【００２６】
フラッシュメモリ２１は、不揮発性のフラッシュメモリから構成され、ワークメモリ２２は高速に実行させる必要から、揮発性のＲＡＭから構成される。そして、プログラムを実行するための初めの準備として、電源投入時または手動によるリセット操作時など起動するときに、フラッシュメモリ２１に格納されたプログラムを、ワークメモリ２２にコピーをする。そしてそのワークメモリ２２に記憶保持されたプログラムを読み出し、そのプログラムに基づいてＣＰＵ２３が所定のアルゴリズムを実行するようになる。
【００２７】
また、拡張ＣＰＵユニット２０は、専用バスを介してメインのＣＰＵユニット１０と連携されている。具体的には、バスコントローラ１４とアドレスデコーダ２５の間でデータの送受を行うことにより、ＣＰＵユニット１０がアドレスデコーダ２５経由で各種のメモリにアクセスしたり、ＣＰＵ２３に所定の命令を与えたりする。また、拡張ＣＰＵユニット２０からのイベント等も、アドレスデコーダ２５からバスコントローラ１４経由でＣＰＵユニット１０（ＣＰＵ１１）に伝えられる。イベントというのは、例えばメインＣＰＵユニット１０の処理中の周辺処理において、拡張ＣＰＵユニット２０に対して行われるメッセージ通信である。イベントメッセージ通信によって、拡張ＣＰＵユニット２０は、メインＣＰＵユニット１０との間で読み出し要求コマンドを受けてそのレスポンスを渡したり、書き込みコマンド（書き込みデータ）を受け取ってワークメモリ２２に格納したりする。
【００２８】
ところで、ワークメモリ２２に格納されるプログラムのコンテキスト（Ｃ言語のプログラムをコンパイルした後のコード配置）は、図２に示すようになっている。すなわち、プログラムコードエリアＰと、定数エリアＣと、データエリアＤとＢＢＳエリアＢと、スタックエリアＳｔａｃｋを備えている。プログラムコードエリアＰには、プログラムのロジックが格納される。また、定数エリアＣには、ｃｏｎｓｔ宣言されたデータが格納される。このデータはプログラムの実行に伴って変化しない定数である。データエリアＤには、ｃｏｎｓｔ宣言されていないデータ、つまり変数が格納される。この変数データは、プログラムの実行時にとりこむＩＮデータや、プログラム実行途中に生じるデータ、プログラムの実行結果によるＯＵＴデータを含んでいる。もちろんデータエリアＤに格納するデータには、メインＣＰＵユニット１０が入力機器から取り込んだＩＮデータや、メインＣＰＵユニット１０にてプログラム実行された結果のＯＵＴデータ、つまりはメインＣＰＵユニット１０のＩＯメモリ１３のデータを含んでいても良い。なお、データエリアＤの初期値はブートローダにより任意のデータ値に設定される。ＢＢＳエリアＢは、初期化されていない変数が格納される領域であり、起動時にはゼロクリアされる。このＢＢＳエリアＢの変数データは、拡張ＣＰＵユニット２０におけるプログラムの実行時にとりこむＩＮデータや、プログラム実行途中に生じるデータ、プログラムの実行結果によるＯＵＴデータを含んでいてもよい。もちろんメインＣＰＵユニット１０のＩＯメモリ１３のデータが含まれていても良い。
【００２９】
なお、変数データには、アプリケーションプログラムで利用されるいわゆるパラメータも含まれている。パラメータの例を挙げると、プログラム実行のループ数や、温度に関する制御における気温や湿度など、ＰＩＤ制御をする際のＰ，Ｉ，Ｄそれぞれのパラメータがある。
【００３０】
さらに、スタックエリアＳｔａｃｋには、スタックが格納されて、プログラム同士のリンクするときに使われる。具体的にはサブルーチン処理をするときのプログラム呼び出し先情報や、サブルーチン処理後の戻り情報などが格納される。そして、プログラムコードおよび変数は、プログラムのリンク時に図２に示す各エリアに配置される。
【００３１】
さらに具体的には、図３に示すように、プログラムコードエリアＰに格納されるプログラムは、データエリアＤに格納されたタスク管理ブロックＴＣＢを参照し、登録されているタスクを呼び出すタスクマネージャ部ＴＭと、特定の機能を実施するためのユーザアプリ部ＵＡとを備えている。ユーザアプリ部ＵＡには、複数のユーザアプリケーションプログラム（図の例では、ユーザアプリＡとＢ）が格納される。ユーザアプリ部ＵＡは、開始アドレスから所定領域分のアドレスまでにわたって、連続的にプログラムコードエリアＰに格納されている。
【００３２】
タスク管理ブロックＴＣＢは、データエリアに格納され、実行するタスクを特定するとともに、その実行順も決定するものである。タスクマネージャ部ＴＭは、タスク管理ブロックＴＣＢに記録された順番に従って、順次タスクを実行する。
【００３３】
ここで、タスク管理ブロックＴＣＢは、図４に示すようなデータ構造を採っている。すなわち、先頭から順に、そのタスクを特定するためのユニークな番号となるタスクＩＤを格納する「Ｔａｓｋ＿ｉｄ」と、次に実行するタスクＩＤを格納してリンクを張るための「ｆｏｒｗａｒｄ」と、前に実行されたタスクＩＤを格納する「ｂａｃｋｗａｒｄ」と、このタスクが活性状態なのか非活性状態なのかを特定する動作ステータスフラグを格納する「ｓｔａｔｅ」と、タスクレベル（実行頻度）を格納する「ｌｅｖｅｌ」と、プログラムコードの先頭アドレス（モジュールシンボル）を格納する「ｐＰｒｏｇｒａｍ」と、変数エリアアドレス定義の先頭アドレス（格納先アドレス）を格納する「ｐＤａｔａ」などを関連付けたテーブル構造となっている。
【００３４】
ここで、「ｐＰｒｏｇｒａｍ」に格納される先頭アドレスは、プログラムコードエリアＰのユーザアプリ部ＵＡに記録された所望のユーザアプリケーションプログラムの先頭アドレスである。つまり、タスクマネージャ部ＴＭは、このタスク管理ブロックＴＣＢにアクセスし、決められたタスクの順番に従って、順次ユーザアプリケーションを呼び出して実行することになる。
【００３５】
図４のタスク管理ブロックＴＣＢのテーブルの例では、Ｔａｓｋ＿ｉｄ＝０（タスク０）をまず実行する。そして、Ｔａｓｋ＿ｉｄ＝０のテーブル行にあるｆｏｗａｒｄ数値は「１」なので、その次に実行されるタスクは、Ｔａｓｋ＿ｉｄ＝１（タスク１）である。Ｔａｓｋ＿ｉｄ＝１のテーブル行にはｆｏｗａｒｄ数値が「２」と設定されているので、タスク１の実行の次にはタスク２が実行される。
【００３６】
また、「ｐＤａｔａ」に格納される変数アドレスは、データエリアＤに格納された変数データマッピングブロックＶＭＢのアクセス先を登録する。この変数データマッピングブロックＶＭＢは、図５に示すように、変数名を格納する「ｄｎａｍｅ」と、その変数の実体を示すアドレス「ｐＡｄｄｒ」を関連付けたテーブルからなる。このアドレスは、変数名に対応する具体的なデータが格納されたＢＳＳエリアＢ中の所望のアドレスが格納される。
【００３７】
つまり、タスク管理ブロックＴＣＢ中の各タスクの「ｐＤａｔａ」には、この変数データマッピングブロックＶＭＢの参照先アドレスが登録され、タスク実行時に実際に使用・参照するデータは、変数データマッピングブロックＶＭＢの「ｐＡｄｄｒ」に格納されたアドレスで規定されるＢＢＳエリア内のデータとなる。
【００３８】
そして、本実施の形態では、タスク管理ブロックＴＣＢ並びに変数データマッピングブロックＶＭＢを、外部からアクセス可能なデータエリアＤの固定アドレスに配置することによって、外部のプログラミングツールからのテーブル操作が容易に行える。その結果、ツール等を用いてＣＰＵユニット経由でデータエリアのタスク管理ブロックＴＣＢと変数データマッピングブロックＶＭＢを編集するだけで、動作するプログラムや参照するメモリを変更することができる。より具体的には、タスク管理ブロックＴＣＢ中の「ｐＰｒｏｇｒａｍ」，「ｐＤａｔａ」や、変数データマッピングブロックＶＭＢの「ｐＡｄｄｒ」のアドレスを変更することになる。
【００３９】
例えば、図４のタスク管理ブロックＴＣＢのテーブル中のあるタスク（Ｔａｓｋ＿ｉｄ＝２）の「ｐＰｒｏｇｒａｍ」にユーザアプリＡの先頭アドレスの数値が設定されているとした場合は、図３の実線で示されるように、タスク管理ブロックＴＣＢで記述された同じタスク（Ｔａｓｋ＿ｉｄ＝２）はユーザアプリＡに対応している。そこで、図４のタスク管理ブロックＴＣＢのテーブル中の同じタスク（Ｔａｓｋ＿ｉｄ＝２）の「ｐＰｒｏｇｒａｍ」の先頭アドレスをユーザアプリＢの先頭アドレスに書き換えたとする。そうすると、以降でその同じタスクを実行する際には、図３の点線に示されるようにユーザアプリＢを実行するようになる。
【００４０】
また、例えば、図４のタスク管理ブロックＴＣＢのテーブル中のあるタスク（Ｔａｓｋ＿ｉｄ＝２）の「ｐＤａｔａ」に、変数ａ，ｂを参照する変数データマッピングブロックＶＭＢのアドレスの数値を格納しているとした場合は、図３中の実線で示すように、タスク管理ブロックＴＣＢで記述された同じタスク（Ｔａｓｋ＿ｉｄ＝２）は変数ａ，ｂを参照するようになっている。そこで、図４のタスク管理ブロックＴＣＢのテーブル中の同じタスク（Ｔａｓｋ＿ｉｄ＝２）の「ｐＤａｔａ」を変数ｃ，ｄを参照するようにアドレスを書き換えることにより、以降のそのタスクを実行する際に使用される変数は、図３の点線に示されるようにｃ，ｄと変わる。つまり、参照する変数データのアドレスがＢＢＳエリアのアドレスａ，ｂからｃ、ｄに切り変わる。
【００４１】
さらに、参照する変数の変更は、上記したようにタスク管理ブロックＴＣＢの「ｐＤａｔａ」を変更する方法に限ることはなく、変数データマッピングブロックＶＭＢの「ｐＡｄｄｅｒ」を書き換える（現在の変数ａ，ｂを変数ｃ，ｄのアドレスに変更）ことによっても対応することができる。
【００４２】
なお、変数データには、前述したようにアプリケーションプログラムで利用されるいわゆるパラメータが含まれている。例えばプログラム実行のループ数をパラメータだとすると、ループ数を変えることでループ回数が変わるので、プログラム自体を変えなくても制御内容を変えることができる。他に例えば、温度に関する制御であれば、気温や湿度がパラメータとなり、具体的な例では晴れの日と雨の日とでパラメータを変えたり、季節やその日の温度・湿度でパラメータを変えることが実際に行われている。このパラメータ変更だけをすることで、プログラム変更せずに、最適な温度制御ができることもある。他にもＰＩＤ制御をする際のパラメータＰ，Ｉ，Ｄそれぞれを変えることで、プログラムのロジックは変更せずに、制御内容もしくは動作内容が変わる。
また、タスク管理ブロックＴＣＢと変数データマッピングブロックＶＭＢとは、それぞれ独立して、別々にその参照先アドレスを書き換えることができる。
【００４３】
従って、本実施の形態では、プログラムを稼動中に、変数データマッピングブロックＶＭＢの参照先アドレスはそのまま変更せずに、タスク管理ブロックＴＣＢの参照先アドレスを書き換えることで、ＰＬＣを停止・再起動することなくアプリケーションプログラムを入れ替えることにより、システム全体として制御内容を大きく変更することができる。
【００４４】
また、プログラムを稼動中に、タスク管理ブロックＴＣＢは変更せずに、変数データマッピングブロックＶＭＢの参照先アドレスを書き換えることで、ＰＬＣを停止・再起動することなく、プログラム実行に使用するパラメータ変数を変更できる。よって、アプリケーションプログラムのロジックはそのまま変更しないけれども、システム全体としての異なる制御動作をすることができる。これはパラメータが変われば自ずと制御動作も変わるからである。
【００４５】
もちろん、プログラムを稼動中に、タスク管理ブロックＴＣＢ及び変数データマッピングブロックＶＭＢの両方の参照先アドレスを書き換えることで、ＰＬＣを停止・再起動することなく、プログラム及びパラメータ変数の両方を入れ替えることができ、システム全体としての動作を大きく変更することができる。
【００４６】
また、上記した実施の形態では、データエリアＤに変数データマッピングブロックＶＭＢを設け、変数へのアクセスはこの変数データマッピングブロックＶＭＢを介して行うようにしたが、本発明はこれに限ることはなく、タスク管理ブロックＴＣＢが直接ＢＢＳエリアの変数のアドレスを管理し、そのアドレスを変更することにより、再コンパイルすることなしに参照する変数を切り替えるようにすることもできる。
【００４７】
ところで、上記したユーザアプリやプログラム実行時に参照するパラメータを切り替える機能を備えたＰＬＣ１に対し、当該ユーザアプリやパラメータを格納したり、切り替えるための情報を設定したりする処理は、ツール３０を用いて行なう。このツール３０の内部構造の一例としては、図６に示すようになっている。すなわち、図６は、本発明に係るツールの好適な一実施の形態を示している。
【００４８】
この実施の形態では、ツール３０は、データ設定部３１と、データ変換部３２と、Ｃプログラム変換部３３と、データ転送部３４を備えている。データ設定部３１は、ユーザーインターフェースとして専用の設定ツールでもあり、コンフィグレーションファイルＦ１への読み書きを行うものである。ここでコンフィグレーションファイルは、図７に示すようなデータフォーマットからなる。すなわち、「部品種別」は、モジュール名または構造体の定義名である。同一のタスクＩＤであれば、部品種別も同じになる。「部品名」は、各部品ごとに付され、ＰｕｌｓｅＷａｖｅといったユニークな部品名が設定され、格納先アドレスと１対１で対応する。部品種別が同一でも格納先アドレスはユニークとなる（部品名は異なる）。「変数ＩＤ」は、構造体内の変数名に１対１で対応する順序を示す番号であり、変数ＩＤ＝０の変数に割り当てられている格納先アドレスが先頭アドレスとなる。「変数名」は、構造体のメンバ名である。「型」はｉｎｔ、ｆｌｏａｔなどで定義されるＣ変数型である。「要素数（配列）」は、複数要素数を指定した場合に配列の定義となる。「変数エリア名」は、ＰＬＣの変数エリア名（エリアオフセットとセット）。具体的には、ＰＬＣ１側のメモリアドレスとなるＤＭ，Ｅ０〜ＥＣが設定可能となる。「エリアオフアセット」（実アドレス）は、実際に必要な値（例えば、「制御値」）を格納しているアドレスを格納する。エリアオフアセット（２ｃｈごとであるため「０，２，４，……」）は、変数エリア名とセットで使用され、実際のデータが格納される実アドレス（ＤＭ  ０など）が構成される。「初期値」は、エリアオフセットに初期設定しておく値である。「格納先エリア名」は、エリアオフセットが格納される変数エリア名であり、ＥＭ０などの変数データマッピングブロックＶＭＢの記憶エリアを特定するための情報の１つである。「格納先アドレス」はエリアオフセットが格納されているアドレスである。エリアオフアセット（１つのアドレスが２ｃｈごとに割り付けられているため「０，２，４，……」）は、格納先エリア名とセットで使用され、その２つの情報に基づき変数データマッピングブロックＶＭＢの記憶エリアが特定される。「コメント」は変数名の説明などの各種コメントである。さらに、「動作ステータス」はモジュールの動作ステータス、つまり、動作させるか、停止させるか等を区別するための情報を格納する。
【００４９】
ここで、アドレス割付の仕組みを説明する。すなわち、図３に示したデータエリアＤにタスク管理ブロックＴＣＢと変数データマッピングブロックＶＭＢを設け、タスク管理ブロックＴＣＢから変数へのアクセスはこの変数データマッピングブロックＶＭＢを介して行うようにしている。この仕組みを図８に示す具体例に基づいて説明する。
【００５０】
例えば、変数データマッピングブロックＶＭＢのアドレスＥ０＿１０００［ｃｈ］にＤ００００を表すアドレスが格納されており、データエリアＤにおけるアドレスＤ００００には実際の値（例えば、出力値＝１２３４）が格納されている。これにより、タスク管理ブロックＴＣＢの所定領域にＥ０＿１０００をセットしておくと、そのタスクＩＤを実行し、変数のアクセス先がＥ０−１０００であることを知ると、変数データマッピングブロックのＥ０＿１０００にアクセスし、Ｄ００００を取得する。これにより、データエリアＤのアドレスＤ００００をアクセスし、具体的なデータ１２３４を取得することができる。
【００５１】
そして、変数データマッピングブロックＶＭＢのＥ０−１０００に格納するデータを「Ｄ００００」から「Ｄ０１００」にアドレスの割付を変更した場合、Ｄ００００は変更されるが、そのアドレスの格納先Ｅ０＿１０００は変わらない。プログラム内では変数データマッピングブロックＶＭＢのアドレスＥ０＿１０００に格納されている値（実アドレス）を変数にリンクさせているのでＥ０＿１０００に格納されている値を変更することで割付の変更が行える。
【００５２】
また、格納先アドレスは、図９に示すように、変数グループの先頭アドレスをユーザが決定し、１番目以降についてはそこから２ｃｈごとに連続して自動的に割り振る。これは、データ設定部３１が行う。そして、割付アドレスに格納されている値が、アプリケーションで使用する変数にマッピングされる。
【００５３】
そして、データ設定部３１は、コンフィグレーションファイルＦ１にプログラム内モジュールごとの入出力パラメータのアドレス割付，初期値割付および、モジュールシンボルの割付，動作設定を行う。設定された内容はコンフィグレーションファイル（ＣＳＶ形式，市販のテキストエディタでの編集可能）として保存される。
【００５４】
Ｃプログラム変換部３３は、コンパイラ（含むリンカー）の機能を有するもので、Ｃ言語で作成されたプログラムをコンパイルして生成されたオブジェクトファイルＦ４を作成するとともに、所定の必要な部品を取り込み、コンピューター（ＰＬＣ１のＣＰＵ）に正しく命令を与えるための正しい位置にセットするリンクを行い、シンボルファイル（部品種別＋Ｃプログラム（モジュール）の格納アドレス）Ｆ３等を作成する。そして、係る機能は、ツール３０を構成するパソコンに市販のコンパイラをインストールすることにより実現できる。また、このＣプログラム変換部３３ではヘッダファイルＦ２も生成される。
【００５５】
データ変換部３２は、コンフィグレーションファイルＦ１とヘッダファイルＦ２に基づいて、ＰＬＣ１のタスク管理ブロックＴＣＢその他に格納するデータを作成するものである。まず、入出力パラメータ抽出部３２ａが、対象モジュール（各ユーザアプリに対応するＣプログラム）で使用しているヘッダファイルから自動的に入出力パラメータを抽出し、コンフィグレーションファイルＦ１を作成する。
【００５６】
すなわち、ヘッダファイルＦ２の一例を示すと、図１０のようになっている。そこで、入出力パラメータ抽出部３２ａはヘッダファイルＦ２内の“ＩＦＤＡＴＡ＿○○○”で定義された構造体名を検索してコンフィグレーションファイルＦ１へ変換を行う。図示の例では最初に＃ｄｅｆｉｎｅの記述を読出し、その後、構造体名を検索する。そして、変数の基本データ型であるｉｎｔやｆｌｏａｔ等の記述を抽出する。これにより、図１０の場合、入出力パラメータ（変数）として、ＰＶやＳＶが抽出される。
【００５７】
このように自動的に入出力パラメータを抽出し、設定することにより、入出力パラメータの設定ミスを生じる可能性を可及的に抑制できる。なお、ヘッダファイルが存在しない場合でも、上記したようにデータ設定部３１から手動でパラメータの新規作成・編集はできる。
【００５８】
絶対アドレス変換部３２ｂは、コンフィグレーションファイルＦ１を取得し、そのファイルから変数エリア名とオフセットで表現されたデータをモジュール（Ｃ言語のプログラム）で扱う絶対アドレスに変換を行い、中間ファイルを作成する。つまり、Ｃプログラムでは、「ＤＭ１００」などのＰＬＣ（ラダープログラム）取り扱うアドレスは理解できないので、Ｃプログラムが理解できる絶対アドレスに変換する。例えば、「ＤＭ１００」を「００２２０Ｃ８」に変換するようになり、係る変換は、対応テーブルを用意し、係る対応テーブルを参照して実行することができる。従って、絶対アドレス変換部３２ｂにより作成された中間ファイルＦ５は、コンフィグレーションファイルＦ１中のアドレスに関する項目が、Ｃプログラムが取り扱い可能な絶対アドレスに書き換えられたファイルとなる。
【００５９】
動作ファイル作成部３２ｃは、シンボルファイルＦ３と中間ファイルＦ５から、対象モジュールの動作ファイルＦ６を作成するものである。動作ファイルＦ６のデータ構造は、図１１に示すようになり、1列目：タスクＩＤ（動作順序定義），２列目：モジュールシンボル，３列目：格納先アドレス（絶対アドレス記述），４列目：動作ステータス（動作状態定義）となり、タスクＩＤの番号順に各行が構成される。動作ステータスは、ＳＴＯＰは０，ＲＵＮが１，ＳＴＥＰが２となる。
【００６０】
タスクＩＤは、コンフィグレーションファイルＦ１つまり中間ファイルＦ５における各タスクの並び順にしたがって付与されるもので、先頭から順番に０，１，２，……と設定される。モジュールシンボルは、そのモジュール（ユーザアプリ）をプログラムコードエリアＰに格納する際の先頭アドレスであり、シンボルファイルから取得する。格納先アドレスは、変数データマッピングブロックＶＭＢのアドレス（図８に示すＥ０＿であり、そのタスクＩＤのプログラム実行中に参照するデータのアドレスとしてタスク管理ブロックＴＣＢに格納されるアドレスであり、中間ファイルＦ５から取得する。さらに、動作ステータスは、中間ファイルＦ５の該当する項目欄から取得する。このように、２つのファイルＦ５，Ｆ３から対応する項目のデータを抽出し、所望の順に並び付けることにより、動作ファイルＦ６が作成できる。
【００６１】
マップファイル作成部３２ｄは、中間ファイルＦ５から、入出力パラメータの実アドレスと実アドレスを格納する格納先アドレスを抽出してマップファイルＦ７を作成するものである。この部分を定義することによって、プログラム（ユーザアプリ）内の入出力パラメータとＰＬＣのＩ／Ｏをリンクすることができる。
【００６２】
具体的には、このマップファイルＦ７のファイルフォーマットは、図１２に示すように、各入出力パラメータ（変数）ごとに作成され、1列目：格納先アドレス（絶対アドレス記述），２列目：実アドレス（絶対アドレス記述）と２つのデータが関連づけられた構造となっている。図示の例では、１行目は、変数データマッピングブロックＶＭＢのアドレス００２３００００（ＥＭ０  ０ｃｈ）に００２２００Ｃ８（ＤＭ  １００ｃｈ）を格納することを意味し、２行目は、００２３０００４（ＥＭ０  ２ｃｈ）に００２２００ＣＣ（ＤＭ  １０２ｃｈ）を格納することを意味する。
【００６３】
初期値ファイル作成部３２ｅは、プログラムのスタート時、各モジュール（ユーザアプリ）の入出力パラメータの初期値として必要となる値が設定される初期値ファイルＦ８を作成する物で、中間ファイルＦ５から、初期値と初期値を格納する絶対アドレスを抽出して作成される。この初期値ファイルＦ８に基づき、ＢＢＳエリアの所定アドレス（実アドレス）に、初期値が格納される。
【００６４】
そして、初期値ファイルＦ８のファイルフォーマットは、例えば図１３に示すように、１列目：実アドレス（絶対アドレス記述），２列目：初期値の２つのデータが関連づけられた構造となっている。図示の例では、１行目は、ＢＢＳエリアのアドレス００２２００Ｃ８（ＤＭ  １００ｃｈ）に００００３Ｆ００（０．５）を格納することを意味し、２行目は同００２２００ＣＣ（ＤＭ  １０２ｃｈ）に００００００００（０）を格納することを意味する。
【００６５】
データ転送部３４は、図１４に示すように、データ変換部３２が作成した動作ファイルＦ６，マップファイルＦ７，初期値ファイルＦ８と、Ｃプログラム変換部３３が作成したオブジェクトファイル（実行プログラム）Ｆ４をＰＬＣ１に送信するものである。
【００６６】
すなわち、動作ファイルＦ６のモジュールシンボル（アドレス）に基づきオブジェクトファイルＦ４に格納されたモジュール（ユーザアプリＡ，Ｂ）をプログラムコードエリアＰの所定アドレスに格納する。また、動作ファイルＦ６のモジュールシンボルで規定されるユーザアプリの先頭アドレスをタスク管理ブックＴＣＢの所定位置（ｐＰｒｏｇｒａｍ）に格納する。
【００６７】
また、マップファイルＦ７等に基づき、タスク管理ブロックＴＣＢのｐＤａｔａに格納先アドレスを格納するとともに、変数データマッピングブロックＶＭＢの所定領域（上記ｐＤａｔａに格納された格納先アドレス）に、実際のデータが格納される実アドレスを格納する。
【００６８】
さらに、初期値ファイルＦ８の実アドレスに対応するＢＢＳエリアの記憶エリアに初期値を格納する。これにより、ＰＬＣ１のシステム領域にタスク管理ブロックＴＣＢの動作情報がセットされてモジュール（ユーザアプリ）の動作を設定することができ、さらに、データエリアＤに格納されたタスク管理ブロックＴＣＢのｐＰｒｏｇｒａｍ，ｐＤａｔａ並びに変数データマッピングブロックに格納される値を買えることにより、実行するユーザアプリや、参照する変数データを切り替えることが可能となる。さらに、タスクＩＤを書き換えることにより（タスクＩＤの順番で実行する場合）、ユーザアプリの実行順番を変更することができる。そして、係る変更は、ユーザがデータ設定部３１にてコンフィグレーションファイルＦ１を書き換える（アドレスの変更）ことにより、以後、データ変換部３２により所定のファイル郡を生成するとともに、それをデータ転送部３５にてＰＬＣ１に転送することにより、プログラムの再コンパイルをすることなく簡単に行える。
【図面の簡単な説明】
【００６９】
【図１】本発明が適用対象となるＰＬＣの一例を示すブロック図である。
【図２】ワークメモリ２２に格納（コピー・展開）されるプログラムのコンテキストの一例を示す図である。
【図３】ＰＬＣの機能を説明する図である。
【図４】タスク管理ブロックの一例を示す図である。
【図５】変数データマッピングブロックＶＭＢを示す図である。
【図６】本発明に係るツールの好適な一実施の形態を示すブロック図である。
【図７】コンフィグレーションファイルのファイルフォーマットの一例を示す図である。
【図８】アドレス割付の仕組みを説明するための図である。
【図９】格納先アドレスと実アドレスの一例を示す図である。
【図１０】ヘッダファイルの一例を示す図である。
【図１１】動作ファイルのファイルフォーマットの一例を示す図である。
【図１２】マップファイルのファイルフォーマットの一例を示す図である。
【図１３】初期値ファイルのファイルフォーマットの一例を示す図である。
【図１４】データ転送部の機能を説明する図である。
【符号の説明】
【００７０】
１  ＰＬＣ
１０  ＣＰＵユニット
１１  ＣＰＵ
１２  プログラムメモリ
１３  ＩＯメモリ
１４  バスコントローラ
２０  拡張ＣＰＵユニット
２１  フラッシュメモリ
２２  ワークメモリ
２３  ＣＰＵ
２５  アドレスデコーダ
３０  ツール
３１  データ設定部
３２  データ変換部
３２ａ  入出力パラメータ抽出部
３２ｂ  絶対アドレス変換部
３２ｃ  動作ファイル作成部
３２ｄ  マップファイル作成部
３２ｅ  初期値ファイル作成部
３３  Ｃプログラム変換部
３４  データ転送部
【図１】
2005141435.tif 000003
【図２】
2005141435.tif 000004
【図３】
2005141435.tif 000005
【図４】
2005141435.tif 000006
【図５】
2005141435.tif 000007
【図６】
2005141435.tif 000008
【図７】
2005141435.tif 000009
【図８】
2005141435.tif 000010
【図９】
2005141435.tif 000011
【図１０】
2005141435.tif 000012
【図１１】
2005141435.tif 000013
【図１２】
2005141435.tif 000014
【図１３】
2005141435.tif 000015
【図１４】
2005141435.tif 000016