(57)【要約】      （修正有）【課題】共有メモリにおいて、変数のデータにアドレスが割り当て直された場合でも、共有メモリから変数のデータを読出して、第２アプリケーションを実行する。【解決手段】プログラマブルコントローラのプロセッサは、外部装置を制御する第１アプリケーション(以下、アプリ)を作成するエンジニアリングツール（以下、ツール）と、ツールから入力された第１アプリで用いられる変数のデータを、共有メモリにおいて当該データに割り当てられるアドレスの記憶領域に保存し、データを用いて第１アプリを実行するコントローラ機能部と、共有メモリに記憶されるデータを読み出す第２アプリを実行するソフトウェア機能部と、をプログラムの実行により実現する。ツールは、コントローラ機能部に対して第１アプリを出力する度に、変数と、当該変数のデータに割り当てられたアドレスと、が対応付けられかつソフトウェア機能部により参照可能なテーブルを作成する。【選択図】図１
2019144762.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリと、
外部装置を制御する第１アプリケーションを作成するエンジニアリングツールと、前記エンジニアリングツールから入力された前記第１アプリケーションで用いられる変数のデータを、前記共有メモリにおいて当該データに割り当てられるアドレスの記憶領域に保存し、前記データを用いて前記第１アプリケーションを実行するコントローラ機能部と、前記共有メモリに記憶される前記データを読み出す第２アプリケーションを実行するソフトウェア機能部と、をプログラムの実行により実現するプロセッサと、を備え、
前記エンジニアリングツールは、前記コントローラ機能部に対して前記第１アプリケーションを出力する度に、前記変数と、当該変数の前記データに割り当てられた前記アドレスと、が対応付けられかつ前記ソフトウェア機能部により参照可能なテーブルを作成する、プログラマブルコントローラ。
【請求項２】
前記エンジニアリングツールは、前記共有メモリに対して、作成した前記テーブルを保存し、
前記第２アプリケーションは、前記共有メモリに記憶される前記テーブルにおいて、前記変数と対応付けられる前記アドレスを特定し、当該特定したアドレスの前記記憶領域から前記データを読み出す請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記共有メモリとは異なる記憶部をさらに備え、
前記エンジニアリングツールは、作成した前記テーブルを前記記憶部に保存し、
前記ソフトウェア機能部は、前記記憶部に記憶される前記テーブルにおいて、前記第２アプリケーションで用いる前記変数と対応付けられる前記アドレスを特定するＡＰＩ（Application  Programming  Interface）を含み、
前記第２アプリケーションは、前記ＡＰＩにより特定される前記アドレスの前記記憶領域から前記データを読み出す請求項１に記載のプログラマブルコントローラ。
【請求項４】
共有メモリと、
外部装置を制御する第１アプリケーションを作成するエンジニアリングツールと、前記エンジニアリングツールから入力された前記第１アプリケーションで用いられる変数のデータを、前記共有メモリにおいて当該データに割り当てられるアドレスの記憶領域に保存し、前記データを用いて前記第１アプリケーションを実行するコントローラ機能部と、前記共有メモリに記憶される前記データを読み出す第２アプリケーションを実行するソフトウェア機能部と、前記エンジニアリングツールと前記ソフトウェア機能部との間で通信可能とするインタフェース部と、をプログラムの実行により実現するプロセッサと、を備え、
前記エンジニアリングツールは、前記インタフェース部を介して、前記ソフトウェア機能部から、前記第２アプリケーションが用いる前記変数が入力され、入力された前記変数の前記データを前記ソフトウェア機能部に出力する、プログラマブルコントローラ。
【請求項５】
共有メモリと、
外部装置を制御する第１アプリケーションを作成するエンジニアリングツールと、当該エンジニアリングツールから入力された前記第１アプリケーションで用いられる変数のデータを、前記共有メモリにおいて当該データに割り当てられるアドレスの記憶領域に保存し、前記データを用いて前記第１アプリケーションを実行するコントローラ機能部と、前記共有メモリに記憶される前記データを読み出す第２アプリケーションを実行するソフトウェア機能部と、前記エンジニアリングツールと前記ソフトウェア機能部との間で通信可能とするインタフェース部と、をプログラムの実行により実現するプロセッサと、を備え、
前記エンジニアリングツールは、
前記コントローラ機能部に対して前記第１アプリケーションを出力する度に、前記変数と、当該変数の前記データに割り当てられた前記アドレスと、が対応付けられかつ前記ソフトウェア機能部により参照可能なテーブルを作成し、かつ
前記インタフェース部を介して、前記ソフトウェア機能部から、前記第２アプリケーションが用いる前記変数が入力され、当該変数の前記データを前記ソフトウェア機能部に出力する、プログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラマブルコントローラに関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラ（所謂、プログラマブルコントローラ）に対して、ソフトウェア機能部を追加し、１台のプログラマブルコントローラを多用な用途に使用可能とする技術が開発されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１３１７０９号公報
【特許文献２】特開２００２−６９０７号公報
【特許文献３】特開２００７−１２８３６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したように、プログラマブルコントローラは、多様な用途で使用可能であり、一例として、外部装置を制御するアプリケーションを作成するエンジニアリングツールと、当該エンジニアリングツールから入力されるアプリケーションで用いられる変数のデータを共有メモリに保存しかつ当該共有メモリに記憶されるデータを用いて当該アプリケーションを実行するコントローラ機能部と、共有メモリに記憶されるデータを読み出す処理を実行するソフトウェア機能部と、を１台で実現することが提案されている。ところで、共有メモリに記憶される変数のデータの記憶領域のアドレスは、エンジニアリングツールからコントローラ機能部に対してアプリケーションが出力される度に割り当て直される。そのため、ソフトウェア機能部は、共有メモリから変数のデータを読み出す際に、変数のデータに割り当てられる記憶領域のアドレスが不明となり、共有メモリから変数のデータを読み出せない場合がある。
【課題を解決するための手段】
【０００５】
実施形態のプログラマブルコントローラは、共有メモリと、プロセッサと、を備える。プロセッサは、外部装置を制御する第１アプリケーションを作成するエンジニアリングツールと、エンジニアリングツールから入力された第１アプリケーションで用いられる変数のデータを、共有メモリにおいて当該データに割り当てられるアドレスの記憶領域に保存し、データを用いて第１アプリケーションを実行するコントローラ機能部と、共有メモリに記憶されるデータを読み出す第２アプリケーションを実行するソフトウェア機能部と、をプログラムの実行により実現する。エンジニアリングツールは、コントローラ機能部に対して第１アプリケーションを出力する度に、変数と、当該変数のデータに割り当てられたアドレスと、が対応付けられかつソフトウェア機能部により参照可能なテーブルを作成する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。
【図２】図２は、第１の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の流れの一例を示すフローチャートである。
【図３】図３は、第１の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の一例を説明するための図である。
【図４】図４は、第２の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。
【図５】図５は、第２の実施形態にかかるプログラマブルコントローラのソフトウェア機能部により第２アプリケーションの実行処理の流れの一例を示すフローチャートである。
【図６】図６は、第２の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の具体例を説明するための図である。
【図７】図７は、第３の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。
【図８】図８は、第３の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の流れの一例を示すフローチャートである。
【図９】図９は、第３の実施形態にかかるプログラマブルコントローラのソフトウェア機能部により第２アプリケーションの実行処理の具体例を説明するための図である。
【図１０】図１０は、第４の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。
【図１１】図１１は、第４の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の具体例を説明するための図である。
【発明を実施するための形態】
【０００７】
以下、添付の図面を用いて、本実施形態にかかるプログラマブルロジックコントローラ（所謂、プログラマブルコントローラ）について説明する。
【０００８】
（第１の実施形態）
図１は、第１の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。本実施形態にかかるプログラマブルコントローラは、計装分野において用いられる制御装置である。図１に示すように、プログラマブルコントローラは、ＣＰＵ（Central  Processing  Unit、プロセッサの一例）１と、共有メモリ２と、通信インタフェース３と、を有する。ＣＰＵ１は、記憶部に記憶されるプログラムを実行することにより、エンジニアリングツール１０１と、コントローラ機能部１０２と、ソフトウェア機能部１０３と、を実現する。
【０００９】
エンジニアリングツール１０１は、Ｉ／Ｏ機器４（外部装置の一例）の制御に用いる各種情報の設定を行う。本実施形態では、エンジニアリングツール１０１は、通信インタフェース３を介してＩ／Ｏ機器４との間で制御データを入出力する処理など、Ｉ／Ｏ機器４を制御する処理を実行する第１アプリケーション１０４を作成する。そして、エンジニアリングツール１０１は、作成した第１アプリケーション１０４をコンパイルしてコントローラ機能部１０２に出力する。
【００１０】
コントローラ機能部１０２は、エンジニアリングツール１０１により設定される各種設定に従って、Ｉ／Ｏ機器４の制御を行う。本実施形態では、コントローラ機能部１０２は、エンジニアリングツール１０１から第１アプリケーション１０４が入力される。また、コントローラ機能部１０２は、第１アプリケーション１０４で用いられる変数のデータを、共有メモリ２において、当該データに割り当てられたアドレスの記憶領域に保存する。本実施形態では、ＣＰＵ１により実行されるＯＳが、変数のデータに対して、共有メモリ２において当該データを保存する記憶領域のアドレスを割り当てる。さらに、コントローラ機能部１０２は、共有メモリ２に記憶される変数のデータを用いて、第１アプリケーション１０４を実行する。これにより、コントローラ機能部１０２は、Ｉ／Ｏ機器４との間での制御データの入出力処理など、Ｉ／Ｏ機器４を制御する処理を実行する。
【００１１】
ソフトウェア機能部１０３は、コントローラ機能部１０２によるＩ／Ｏ機器４の制御結果の表示やコントローラ機能部１０２によるＩ／Ｏ機器４の制御処理の監視等の各種処理を実行する。本実施形態では、ソフトウェア機能部１０３は、ミドルウェア１０６およびＡＰＩ（Application  Programming  Interface）１０７を有する。また、ソフトウェア機能部１０３は、共有メモリ２から、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の制御処理の監視等に用いる変数のデータを読み出す第２アプリケーション１０５を実行する。本実施形態では、第２アプリケーション１０５は、ミドルウェア１０６およびＡＰＩ１０７を介して、共有メモリ２にアクセスして、当該共有メモリ２に記憶される変数のデータを読み出す。
【００１２】
図２は、第１の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の流れの一例を示すフローチャートである。次に、図２を用いて、本実施形態にかかるプログラマブルコントローラのソフトウェア機能部１０３による第２アプリケーション１０５の実行処理の流れの一例について説明する。
【００１３】
エンジニアリングツール１０１は、第１アプリケーション１０４を作成し、当該作成した第１アプリケーション１０４をコンパイルしてコントローラ機能部１０２に出力する（ステップＳ２０１）。その際、ＣＰＵ１により実行されるＯＳは、第１アプリケーション１０４で用いられる変数のデータに対して、共有メモリ２において、当該変数のデータを保存する記憶領域のアドレスを割り当てる（ステップＳ２０２）。本実施形態では、ＣＰＵ１により実行されるＯＳは、エンジニアリングツール１０１からコントローラ機能部１０２に対して第１アプリケーション１０４が出力される度に、変数のデータに対してアドレスを割り当て直す。
【００１４】
また、エンジニアリングツール１０１は、コントローラ機能部１０２に対して第１アプリケーション１０４を出力する度に、下記の表１に示す変数データテーブル（テーブルの一例）を作成する（ステップＳ２０３）。表１に示すように、変数データテーブルは、第１アプリケーション１０４の変数（例えば、「変数＿００００」）と、当該変数のデータに割り当てられたアドレス（例えば、「ＡＤ１＿００００」）と、が対応付けられ、かつソフトウェア機能部１０３により参照可能なテーブルである。本実施形態では、エンジニアリングツール１０１は、作成した変数データテーブルを、共有メモリ２に保存することにより、当該変数データテーブルを、ソフトウェア機能部１０３により参照可能とする。これにより、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、共有メモリ２内で変数のデータが記憶された記憶領域をソフトウェア機能部１０３が特定できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、第２アプリケーション１０５を実行できる。
【表１】
2019144762.tif 000003
【００１５】
コントローラ機能部１０２は、エンジニアリングツール１０１から入力される第１アプリケーション１０４で用いられる変数のデータを、共有メモリ２において、当該データに割り当てられたアドレスの記憶領域に保存する（ステップＳ２０４）。これにより、共有メモリ２内における変数のデータの配置を最適化する。また、コントローラ機能部１０２は、共有メモリ２に記憶される変数のデータを用いて、第１アプリケーション１０４を実行して、Ｉ／Ｏ機器４との間での制御データの入出力処理など、Ｉ／Ｏ機器４を制御する処理を行う（ステップＳ２０５）。
【００１６】
ソフトウェア機能部１０３は、第２アプリケーション１０５を実行する。第２アプリケーション１０５は、共有メモリ２に記憶される変数データテーブルを読み出す（ステップＳ２０６）。次いで、第２アプリケーション１０５は、読み出した変数データテーブルにおいて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の制御処理の監視等の処理に用いる読出対象の変数と対応付けられるアドレスを特定する（ステップＳ２０７）。そして、第２アプリケーション１０５は、共有メモリ２から、当該特定したアドレスの記憶領域に記憶される変数のデータを読み出す（ステップＳ２０８）。さらに、第２アプリケーション１０５は、読み出した変数のデータを用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の制御処理の監視等の処理を実行する（ステップＳ２０９）。
【００１７】
図３は、第１の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の一例を説明するための図である。次に、図３を用いて、本実施形態にかかるプログラマブルコントローラのソフトウェア機能部１０３による第２アプリケーション１０５の実行処理の一例について説明する。
【００１８】
ソフトウェア機能部１０３の第２アプリケーション１０５は、ミドルウェア１０６およびＡＰＩ１０７を介して、共有メモリ２から、変数データテーブルを読み出す。次に、第２アプリケーション１０５は、変数データテーブルにおいて、第２アプリケーション１０５で用いる変数（例えば、変数＿００００）と対応付けられるアドレス（例えば、ＡＤ１＿００００）を特定する。そして、第２アプリケーション１０５は、ミドルウェア１０６およびＡＰＩ１０７を介して、共有メモリ２のうち当該特定したアドレスの記憶領域から、変数のデータを読み出す。その後、第２アプリケーション１０５は、ミドルウェア１０６およびＡＰＩ１０７を介して取得した変数のデータを用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の制御処理の監視等の処理を行う。
【００１９】
このように、第１の実施形態にかかるプログラマブルコントローラによれば、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、共有メモリ２内で変数のデータが記憶される記憶領域をソフトウェア機能部１０３が特定できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、第２アプリケーション１０５を実行できる。
【００２０】
（第２の実施形態）
本実施形態は、エンジニアリングツールとソフトウェア機能部との間で通信可能とするインタフェース部を備える例である。以下の説明では、第１の実施形態と同様の構成については説明を省略する。
【００２１】
図４は、第２の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。図４に示すように、本実施形態にかかるプログラマブルコントローラのＣＰＵ４００は、記憶部に記憶されるプログラムを実行することにより、エンジニアリングツール４０１、コントローラ機能部１０２、およびソフトウェア機能部４０２に加えて、インタフェース部４０３を実現する。
【００２２】
インタフェース部４０３は、ＡＰＩやＯＳ等により実現され、エンジニアリングツール４０１とソフトウェア機能部４０２との間で通信可能とする。ソフトウェア機能部４０２は、第２アプリケーション１０５が用いる変数をエンジニアリングツール１０１に出力する。
【００２３】
エンジニアリングツール４０１は、インタフェース部４０３を介して、ソフトウェア機能部４０２から、変数が入力される。そして、エンジニアリングツール４０１は、入力され変数のデータをソフトウェア機能部４０２（第２アプリケーション１０５）に出力する。これにより、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、ソフトウェア機能部４０２がエンジニアリングツール４０１から変数のデータを取得できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、エンジニアリングツール４０１から入力される変数のデータを用いて、第２アプリケーション１０５を実行できる。
【００２４】
図５は、第２の実施形態にかかるプログラマブルコントローラのソフトウェア機能部により第２アプリケーションの実行処理の流れの一例を示すフローチャートである。次に、図５を用いて、本実施形態にかかるプログラマブルコントローラのソフトウェア機能部４０２による第２アプリケーション１０５の実行処理の流れの一例について説明する。
【００２５】
エンジニアリングツール４０１は、第１アプリケーション１０４を作成し、当該作成した第１アプリケーション１０４をコンパイルしてコントローラ機能部１０２に出力する（ステップＳ５０１）。その際、ＣＰＵ４００により実行されるＯＳは、第１アプリケーション１０４で用いられる変数のデータに対して、共有メモリ２において、当該変数のデータを保存する記憶領域のアドレスを割り当てる（ステップＳ５０２）。本実施形態においても、ＣＰＵ４００により実行されるＯＳは、エンジニアリングツール４０１からコントローラ機能部１０２に対して第１アプリケーション１０４が出力される度に、変数のデータに対してアドレスを割り当て直す。
【００２６】
コントローラ機能部１０２は、エンジニアリングツール４０１から入力される第１アプリケーション１０４で用いられる変数のデータを、共有メモリ２において、当該データに割り当てられたアドレスの記憶領域に保存する（ステップＳ５０３）。これにより、共有メモリ２内における変数のデータの配置を最適化する。また、コントローラ機能部１０２は、共有メモリ２に記憶される変数のデータを用いて、第１アプリケーション１０４を実行して、Ｉ／Ｏ機器４との間での制御データの入出力処理など、Ｉ／Ｏ機器４を制御する処理を行う（ステップＳ５０４）。
【００２７】
ソフトウェア機能部４０２は、インタフェース部４０３を介して、エンジニアリングツール４０１に対して、第２アプリケーション１０５が用いる変数を出力する（ステップＳ５０５）。エンジニアリングツール４０１は、ソフトウェア機能部４０２から変数が入力されると、当該変数のデータを、インタフェース部４０３を介して、ソフトウェア機能部４０２に出力する（ステップＳ５０６）。
【００２８】
本実施形態では、ソフトウェア機能部４０２は、第２アプリケーション１０５が用いる変数のデータを取得する際、エンジニアリングツール４０１に対して、変数を出力しているが、これに限定するものではない。例えば、第２アプリケーション１０５が用いる変数のデータが、共有メモリ２において、静的アドレスが示す記憶領域に記憶される変数のデータである場合、ソフトウェア機能部４０２は、変数に代えて、静的アドレスを、インタフェース部４０３を介して、エンジニアリングツール４０１に出力しても良い。ここで、静的アドレスは、変数のデータに対するアドレスの割り当て直しの前後において、共有メモリ２内の同一の記憶領域に保存される変数のデータに付与するアドレスである。すなわち、静的アドレスは、共有メモリ２内において、アドレスの割り当て直しが行われない変数のデータが保存される記憶領域のアドレスである。エンジニアリングツール４０１は、ソフトウェア機能部４０２から、静的アドレスが入力された場合、当該入力された静的アドレスの記憶領域に記憶された変数のデータを、インタフェース部４０３を介して、ソフトウェア機能部４０２に出力する。
【００２９】
ソフトウェア機能部４０２は、第２アプリケーション１０５を実行する。第２アプリケーション１０５は、エンジニアリングツール４０１から変数のデータが入力されると、当該データを用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を実行する（ステップＳ５０７）。これにより、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直されて、当該変数のデータに割り当てられたアドレスが不明であっても、エンジニアリングツール４０１から、第２アプリケーション１０５が用いる変数のデータを取得できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、第２アプリケーション１０５を実行できる。
【００３０】
図６は、第２の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の具体例を説明するための図である。次に、図６を用いて、本実施形態にかかるプログラマブルコントローラのソフトウェア機能部４０２による第２アプリケーション１０５の実行処理の具体例について説明する。
【００３１】
ソフトウェア機能部４０２において第２アプリケーション１０５を実行する場合、ソフトウェア機能部４０２は、インタフェース部４０３を介して、エンジニアリングツール４０１に対して、第２アプリケーション１０５が用いる変数（例えば、変数＿０００１）を出力する。次いで、エンジニアリングツール４０１は、ソフトウェア機能部４０２から入力された変数（例えば、変数＿０００１）に基づいて、当該変数のデータ（例えば、ＤＴ＿０００１）を、インタフェース部４０３を介して、ソフトウェア機能部４０２に出力する。そして、ソフトウェア機能部４０２の第２アプリケーション１０５は、エンジニアリングツール４０１から入力された変数のデータ（例えば、ＤＴ＿０００１）を用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を行う。これにより、ソフトウェア機能部４０２において、第２アプリケーション１０５を実行する際に、共有メモリ２から変数のデータを読み出す必要が無いため、共有メモリ２へのアクセスにより生じる処理負荷を軽減でき、共有メモリ２に記憶される変数のデータを用いて実行される第１アプリケーション１０４による処理（例えば、入出力処理）が滞ることを防止できる。
【００３２】
このように、第２の実施形態にかかるプログラマブルコントローラによれば、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直されて、当該変数のデータに割り当てられたアドレスが不明であっても、エンジニアリングツール４０１から、第２アプリケーション１０５が用いる変数のデータを取得できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、第２アプリケーション１０５を実行できる。
【００３３】
（第３の実施形態）
本実施形態は、共有メモリとは異なる記憶部をさらに備え、エンジニアリングツールは、作成したテーブルを記憶部に保存し、ソフトウェア機能部は、記憶部に記憶されるテーブルにおいて、第２アプリケーションで用いる変数と対応付けられるアドレスを特定するＡＰＩを含む例である。以下の説明では、第１の実施形態と同様の構成については説明を省略する。
【００３４】
図７は、第３の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。本実施形態にかかるプログラマブルコントローラは、ＣＰＵ７００、共有メモリ２、および通信Ｉ／Ｆ３に加えて、共有メモリ２とは異なる記憶部の一例であるＨＤＤ（Hard  Disk  Drive）７０５を備える。また、本実施形態にかかるプログラマブルコントローラのＣＰＵ７００は、エンジニアリングツール７０１およびソフトウェア機能部７０２における処理が、第１の実施形態にかかるプログラマブルコントローラと異なる。
【００３５】
本実施形態では、エンジニアリングツール７０１は、コントローラ機能部１０２に対して第１アプリケーション１０４を出力する度に作成する変数データテーブルを、ＨＤＤ７０５に保存する。
【００３６】
本実施形態では、ソフトウェア機能部７０２のＡＰＩ７０４は、ミドルウェア７０３を介して、第２アプリケーション１０５が用いる変数を取得する。そして、ＡＰＩ７０４は、ＨＤＤ７０５に記憶される変数データテーブルにおいて、ミドルウェア７０３から取得した変数と対応付けられるアドレスを特定し、特定したアドレスを、ミドルウェア７０３を介して、第２アプリケーション１０５に通知する。そして、第２アプリケーション１０５は、共有メモリ２において、ＡＰＩ７０４により特定されたアドレスの記憶領域から変数のデータを読み出す。
【００３７】
これにより、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、ソフトウェア機能部７０２において共有メモリ２内で変数のデータが記憶された記憶領域を特定できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、共有メモリ２から変数のデータを読み出して、第２アプリケーション１０５を実行できる。
【００３８】
図８は、第３の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の流れの一例を示すフローチャートである。次に、図８を用いて、本実施形態にかかるプログラマブルコントローラのソフトウェア機能部７０２による第２アプリケーション１０５の実行処理の流れの一例について説明する。以下の説明では、図２と同様の処理については説明を省略する。
【００３９】
エンジニアリングツール７０１は、コントローラ機能部１０２に対して第１アプリケーション１０４を出力する度に、変数データテーブルを作成し、当該作成した変数データテーブルをＨＤＤ７０５に保存する（ステップＳ８０１）。これにより、変数データテーブルを、ソフトウェア機能部７０２により参照可能とする。
【００４０】
その後、ソフトウェア機能部７０２の第２アプリケーション１０５は、当該第２アプリケーション１０５が用いる変数を、ミドルウェア７０３を介して、ＡＰＩ７０４に出力する（ステップＳ８０２）。次いで、ＡＰＩ７０４は、ＨＤＤ７０５に記憶される変数データテーブルにおいて、ミドルウェア７０３から入力される変数と対応付けられるアドレスを特定する（ステップＳ８０３）。そして、ＡＰＩ７０４は、特定したアドレスを、ミドルウェア７０３を介して、第２アプリケーション１０５に通知する。第２アプリケーション１０５は、共有メモリ２から、ＡＰＩ７０４により特定されたアドレスの記憶領域に記憶される変数のデータを読み出す（ステップＳ８０４）。さらに、第２アプリケーション１０５は、読み出された変数のデータを用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の制御処理の監視等の処理を実行する（ステップＳ２０９）。
【００４１】
図９は、第３の実施形態にかかるプログラマブルコントローラのソフトウェア機能部により第２アプリケーションの実行処理の具体例を説明するための図である。例えば、エンジニアリングツール７０１は、コントローラ機能部１０２に対して、第１アプリケーション１０４を出力する。その後、エンジニアリングツール７０１は、第１アプリケーション１０４を出力する度に作成する変数データテーブルを、ＨＤＤ７０５に保存する。
【００４２】
そして、コントローラ機能部１０２によって、共有メモリ２に記憶される変数のデータを用いて第１アプリケーション１０４が実行されて、Ｉ／Ｏ機器４との間で制御データの入出力処理等が行われると、ソフトウェア機能部７０２の第２アプリケーション１０５は、ミドルウェア７０３を介して、ＡＰＩ７０４に対して、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の制御処理の監視等の処理で用いる変数を出力する。
【００４３】
ＡＰＩ７０４は、変数（例えば、変数＿０００１）が入力されると、ＨＤＤ７０５に記憶される変数データテーブルにおいて、変数（例えば、変数＿０００１）と対応付けられるアドレス（例えば、ＡＤ１＿０００１）を特定する。そして、ＡＰＩ７０４は、特定したアドレス（例えば、ＡＤ１＿０００１）を、ミドルウェア７０３を介して、第２アプリケーション１０５に通知する。第２アプリケーション１０５は、共有メモリ２から、ＡＰＩ７０４により特定されたアドレス（例えば、ＡＤ１＿０００１）の記憶領域に記憶される変数のデータ（例えば、ＤＴ＿０００１）を読み出す。第２アプリケーション１０５は、読み出された変数のデータ（例えば、ＤＴ＿０００１）を用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を実行する。これにより、共有メモリ２に対して１回アクセスするだけで、変数のデータを取得できるので、共有メモリ２のアクセスによりソフトウェア機能部７０２にかかる処理負荷を軽減できる。
【００４４】
このように、第３の実施形態にかかるプログラマブルコントローラによれば、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、ソフトウェア機能部７０２において共有メモリ２内で変数のデータが記憶された記憶領域を特定できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、共有メモリ２から変数のデータを読み出して、第２アプリケーション１０５を実行できる。
【００４５】
（第４の実施形態）
本実施形態は、ソフトウェア機能部により参照可能な変数データテーブルを作成する処理、またはインタフェース部を介して、ソフトウェア機能部から入力された変数のデータをソフトウェア機能部に出力する処理を選択可能とする例である。以下の説明では、上述の実施形態と同様の構成については説明を省略する。
【００４６】
図１０は、第４の実施形態にかかるプログラマブルコントローラの構成の一例を示す図である。本実施形態にかかるプログラマブルコントローラのＣＰＵ１０００は、エンジニアリングツール１００１、コントローラ機能部１０２、ソフトウェア機能部１００２、およびインタフェース部４０３を有する。
【００４７】
本実施形態では、エンジニアリングツール１００１は、コントローラ機能部１０２に対して第１アプリケーション１０４を出力する度に作成する変数データテーブルを、共有メモリ２、またはＨＤＤ７０５に保存する。これにより、ソフトウェア機能部１００２において変数データテーブルを参照可能となるので、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、第２アプリケーション１０５を実行できる。
【００４８】
また、本実施形態では、エンジニアリングツール１００１は、インタフェース部４０３を介して、ソフトウェア機能部１００２から、変数が入力される。そして、エンジニアリングツール１００１は、入力された変数のデータを、インタフェース部４０３を介して、ソフトウェア機能部１００２に出力する。これにより、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、ソフトウェア機能部１００２がエンジニアリングツール１００１から変数のデータを取得できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、エンジニアリングツール１００１から入力される変数のデータを用いて、第２アプリケーション１０５を実行できる。
【００４９】
本実施形態では、ソフトウェア機能部１００２は、第２アプリケーション１０５が用いる変数のデータを取得する方法を適宜切り替える。ソフトウェア機能部１００２の第２アプリケーション１０５は、共有メモリ２から変数のデータを取得する場合、図２に示す処理の流れと同様に、共有メモリ２に記憶される変数データテーブルを参照して、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理で用いる変数のデータと対応付けられるアドレスを特定する。そして、第２アプリケーション１０５は、共有メモリ２において、特定したアドレスの記憶領域に記憶される変数のデータを読み出し、当該読み出した変数のデータを用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を実行する。または、ソフトウェア機能部１００２のＡＰＩ７０４は、図８に示す処理の流れと同様に、ＨＤＤ７０５に記憶される変数データテーブルを参照して、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理で用いる変数のデータと対応付けられるアドレスを特定する。そして、第２アプリケーション１０５は、共有メモリ２において、ＡＰＩ７０４により特定されたアドレスの記憶領域に記憶される変数のデータを読み出し、当該読み出した変数のデータを用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を実行する。
【００５０】
一方、ソフトウェア機能部１００２は、エンジニアリングツール１００１から変数のデータを取得する場合、図５に示す処理の流れと同様に、インタフェース部４０３を介して、第２アプリケーション１０５が用いる変数を、エンジニアリングツール１００１に対して出力する。そして、ソフトウェア機能部１００２の第２アプリケーション１０５は、エンジニアリングツール１００１から入力される変数のデータを用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を実行する。
【００５１】
図１１は、第４の実施形態にかかるプログラマブルコントローラのソフトウェア機能部による第２アプリケーションの実行処理の具体例を説明するための図である。例えば、エンジニアリングツール１００１は、コントローラ機能部１０２に対して、第１アプリケーション１０４を出力する。その後、エンジニアリングツール１００１は、第１アプリケーション１０４を出力する度に作成する変数データテーブルを、ＨＤＤ７０５に保存する。
【００５２】
その後、ソフトウェア機能部１００２は、外部装置から、エンジニアリングツール１００１からの変数のデータの取得が指示された場合、インタフェース部４０３を介して、エンジニアリングツール１００１に対して変数（例えば、変数＿００００）を出力する。エンジニアリングツール１００１は、ソフトウェア機能部１００２から入力された変数（例えば、変数＿００００）が入力されると、インタフェース部４０３を介して、当該入力された変数のデータ（例えば、ＤＴ＿００００）を、ソフトウェア機能部１００２に出力する。そして、ソフトウェア機能部１００２の第２アプリケーション１０５は、エンジニアリングツール１００１から入力された変数のデータ（例えば、ＤＴ＿００００）を用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を実行する。
【００５３】
一方、ソフトウェア機能部１００２の第２アプリケーション１０５は、外部装置から、共有メモリ２からの変数のデータの取得が指示された場合、ミドルウェア７０３を介して、ＡＰＩ７０４に対して変数（例えば、変数＿０００１）を出力する。ＡＰＩ７０４は、ＨＤＤ７０５に記憶される変数データテーブルにおいて、入力された変数（例えば、変数＿０００１）と対応付けられたアドレス（例えば、ＡＤ１＿０００１）を特定する。第２アプリケーション１０５は、共有メモリ２において、ＡＰＩ７０４により特定されたアドレス（例えば、ＡＤ１＿０００１）の記憶領域から変数のデータ（例えば、ＤＴ＿０００１）を読み出す。その後、ソフトウェア機能部１００２の第２アプリケーション１０５は、読み出した変数のデータ（例えば、ＤＴ＿０００１）を用いて、Ｉ／Ｏ機器４の制御結果の表示やＩ／Ｏ機器４の監視等の処理を実行する。
【００５４】
このように、第４の実施形態にかかるプログラマブルコントローラによれば、コントローラ機能部１０２に第１アプリケーション１０４を出力する度に、変数のデータに対してアドレスが割り当て直された場合でも、共有メモリ２内で変数のデータが記憶された記憶領域をソフトウェア機能部１００２が特定できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、共有メモリ２から変数のデータを読み出して、第２アプリケーション１０５を実行できる。または、エンジニアリングツール１００１から、第２アプリケーション１０５の実行に用いる変数のデータを取得できるので、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、第２アプリケーション１０５を実行できる。
【００５５】
以上説明したとおり、第１から第４の実施形態によれば、共有メモリ２において、変数のデータにアドレスが割り当て直された場合でも、第２アプリケーション１０５を実行できる。
【００５６】
なお、本実施形態のプログラマブルコントローラで実行されるプログラムは、ＲＯＭ（Read  Only  Memory）等に予め組み込まれて提供される。本実施形態のプログラマブルコントローラで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００５７】
さらに、本実施形態のプログラマブルコントローラで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のプログラマブルコントローラで実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００５８】
本実施形態のプログラマブルコントローラで実行されるプログラムは、上述した各部（エンジニアリングツール１０１，４０１，７０１，１００１、コントローラ機能部１０２、ソフトウェア機能部１０３，４０２，７０２，１００２、インタフェース部４０３）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ１，４００，７００，１０００が上記ＲＯＭからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、エンジニアリングツール１０１，４０１，７０１，１００１、コントローラ機能部１０２、ソフトウェア機能部１０３，４０２，７０２，１００２、インタフェース部４０３が主記憶装置上に生成されるようになっている。
【００５９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６０】
１，４００，７００，１０００  ＣＰＵ
２  共有メモリ
３  通信Ｉ／Ｆ
４  Ｉ／Ｏ機器
１０１，４０１，７０１，１００１  エンジニアリングツール
１０２  コントローラ機能部
１０３，４０２，７０２，１００２  ソフトウェア機能部
１０４  第１アプリケーション
１０５  第２アプリケーション
１０６，７０３  ミドルウェア
１０７，７０４  ＡＰＩ
４０３  インタフェース部
７０５  ＨＤＤ
【図１】
2019144762.tif 000004
【図２】
2019144762.tif 000005
【図３】
2019144762.tif 000006
【図４】
2019144762.tif 000007
【図５】
2019144762.tif 000008
【図６】
2019144762.tif 000009
【図７】
2019144762.tif 000010
【図８】
2019144762.tif 000011
【図９】
2019144762.tif 000012
【図１０】
2019144762.tif 000013
【図１１】
2019144762.tif 000014