(57)【要約】【課題】ユーザプログラムが悪意のある第三者によって読み出されることを防止する。【解決手段】ネットワークを介してサーバに接続され、少なくとも揮発性記憶装置１３０と処理部（ＣＰＵ１１０）を有するプログラマブルロジックコントローラであって、サーバはユーザによって作成されたユーザプログラムを格納し、処理部（ＣＰＵ１１０）はサーバからユーザプログラムをダウンロードして揮発性記憶装置１３０に格納し揮発性記憶装置１３０に格納されたユーザプログラムを読み出して実行し、揮発性記憶装置１３０は所定のタイミングでユーザプログラムを消去する。【選択図】図１
2018128722.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してサーバに接続され、少なくとも揮発性記憶装置と処理部を有するプログラマブルロジックコントローラであって、
前記サーバは、ユーザによって作成されたユーザプログラムを格納し、
前記処理部は、前記サーバから前記ユーザプログラムをダウンロードして前記揮発性記憶装置に格納し、前記揮発性記憶装置に格納された前記ユーザプログラムを読み出して実行し、
前記揮発性記憶装置は、所定のタイミングで前記ユーザプログラムを消去することを特徴とするプログラマブルロジックコントローラ。
【請求項２】
前記プログラマブルロジックコントローラは、不揮発性記憶装置をさらに有し、
前記不揮発性記憶装置は、前記プログラマブルロジックコントローラの基本動作を制御するシステムプログラムを格納し、
前記処理部は、前記不揮発性記憶装置から前記システムプログラムを読み出して前記揮発性記憶装置に格納し、前記揮発性記憶装置に格納された前記システムプログラムを読み出して実行することを特徴とする請求項１に記載のプログラマブルロジックコントローラ。
【請求項３】
前記不揮発性記憶装置は、前記サーバの読み出し先を規定したサーバ情報と、前記ユーザプログラムの整合性を判断するためのユーザプログラム照合情報を格納し、
前記処理部は、前記読み出し先サーバ情報を参照して前記サーバから前記ユーザプログラムをダウンロードし、前記ユーザプログラム照合情報を参照して前記ユーザプログラムの照合を行い、前記照合を行った前記ユーザプログラムを前記揮発性記憶装置に格納することを特徴とする請求項１に記載のプログラマブルロジックコントローラ。
【請求項４】
前記不揮発性記憶装置は、前記読み出し先サーバ情報として、少なくとも前記サーバのIPアドレス、前記サーバのポート番号及び前記サーバのMACアドレスを格納することを特徴とする請求項３に記載のプログラマブルロジックコントローラ。
【請求項５】
前記不揮発性記憶装置は、前記ユーザプログラム照合情報として、前記ユーザプログラムの第１のサム値を格納し、
前記処理部は、前記サーバからダウンロードした前記ユーザプログラムの第２のサム値と、前記不揮発性記憶装置に格納された前記ユーザプログラムの第１のサム値とを比較することにより前記ユーザプログラムの照合を行うことを特徴とする請求項３に記載のプログラマブルロジックコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラに関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラに格納されるユーザプログラム（制御プログラム）は通常ユーザによって作成される。ユーザによって作成されるユーザプログラムは制御する設備に応じて異なる。作成されたユーザプログラムはプログラマブルロジックコントローラ内部の不揮発性記憶装置に格納され、ユーザが後から読み出して実行される。
【０００３】
例えば、特許文献１には、ユーザプログラムをプログラマブルロジックコントローラに格納する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２６８４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、制御する設備によっては専門の知識やノウハウを用いている場合があり、ユーザが作成したユーザプログラムを第三者に公開することができない場合がある。しかし、ユーザプログラムは、プログラマブルロジックコントローラ内部の不揮発性記憶装置に格納されるのが一般的である。
【０００６】
不揮発性記憶装置は、プログラマブルロジックコントローラの電源を遮断（電源ＯＦＦ）した後にもデータは消去されずに残っている。このため、悪意のある第三者によって、不揮発性記憶装置に格納されたユーザプログラムが読み出されてしまう恐れがある。
【０００７】
特許文献１には、ユーザプログラムをプログラマブルロジックコントローラ内に格納することが開示されているだけであり、ユーザプログラムが悪意のある第三者によって読み出されることについては言及されていない。
【０００８】
本発明の目的は、ユーザプログラムが悪意のある第三者によって読み出されることを防止することにある。
【課題を解決するための手段】
【０００９】
本発明の一態様では、ネットワークを介してサーバに接続され、少なくとも揮発性記憶装置と処理部を有するプログラマブルロジックコントローラであって、前記サーバは、ユーザによって作成されたユーザプログラムを格納し、前記処理部は、前記サーバから前記ユーザプログラムをダウンロードして前記揮発性記憶装置に格納し、前記揮発性記憶装置に格納された前記ユーザプログラムを読み出して実行し、前記揮発性記憶装置は、所定のタイミングで前記ユーザプログラムを消去することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ユーザプログラムが悪意のある第三者によって読み出されることを防止することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係るプログラマブルロジックコントローラの構成図である。
【図２】実施形態に係るシステムの全体構成図である。
【図３】不揮発性記憶装置のアドレス空間を示す図である。
【図４】揮発性記憶装置のアドレス空間を示す図である。
【図５】読み出し先サーバ情報エリアの詳細を示す図である。
【図６】ネットワークにあるサーバからユーザプログラムをダウンロードして実行する処理を説明するためのフローチャートである。
【図７】読み出し先サーバのユーザプログラムを取得する処理を説明するためのフローチャートである。
【図８】読み出したユーザプログラムを照合する処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を用いて、本発明の実施形態について説明する。
【００１３】
実施形態では、ユーザプログラム（制御プログラム）をプログラマブルロジックコントローラ内部の不揮発性記憶装置１２０には格納しない。プログラマブルロジックコントローラを起動（電源ON）した後に、あらかじめ指定したユーザプログラムをネットワーク２３０上のサーバ２２０、２４０からダウンロードし、プログラマブルロジックコントローラ内部の揮発性記憶装置１３０に格納してユーザプログラムを実行する（図１、図２参照）。
【００１４】
このように、実施形態では、ダウンロードしたユーザプログラムはプログラマブルロジックコントローラ内部の不揮発性記憶装置１２０には格納せずに、揮発性記憶装置１３０に格納する。この結果、プログラマブルロジックコントローラの電源が遮断（電源OFF）されると、揮発性記憶装置１３０に展開されて実行しているユーザプログラムは消えてしまう。これによって、悪意のある第三者の不正なユーザプログラムの読み出しを防止することができる。
【００１５】
最初に、プログラマブルロジックコントローラを起動（電源ON）してから、ネットワークにあるサーバからユーザプログラムをダウンロードして実行するまでの処理について説明する。
【００１６】
図１を参照すると、プログラマブルロジックコントローラは、CPU（処理部）110、不揮発性記憶装置120、揮発性記憶装置130、入力装置140、出力装置150、通信インターフェース160を有する。入力装置140と出力装置150の数は、ユーザの実現したい構成によって任意に追加、削除することが可能である。
【００１７】
図２を参照すると、プログラマブルロジックコントローラ（ＰＬＣ）210は、図1に示す通信インターフェース160からネットワーク230を介してサーバ220に接続される。
【００１８】
尚、ユーザのシステム構成によっては、サーバ220とサーバ240のように、複数のサーバが配置される場合がある。このように、ユーザプログラムのダウンロードを一つのサーバだけでなく、複数のサーバ２２０、２４０から行うようにすることによって、ユーザプログラムの堅牢性をより高めることができる。
【００１９】
図３を参照して、図1で示したプログラマブルロジックコントローラの不揮発性記憶装置120のアドレス空間について説明する。
【００２０】
不揮発性記憶装置１２０のアドレス空間300は、システムプログラムエリア310、読み出し先サーバ情報エリア320、ユーザプログラムサム値照合用エリア330に分けられる。
【００２１】
ここで、読み出し先サーバ情報エリア320には、サーバ２２０、２４０の読み出し先を規定したサーバ情報が格納されている。また、ユーザプログラムサム値照合用エリア330には、ユーザプログラムの整合性を判断するためのユーザプログラム照合情報（サム値）が格納されている。
【００２２】
プログラマブルロジックコントローラは電源起動時、システムプログラムを不揮発性記憶装置１２０からロードして、ロードしたシステムプログラムを揮発性記憶装置１３０へ展開して実行する。ここで、システムプログラムとは、プログラマブルロジックコントローラとして動作するためのファームウェアであり、プログラマブルロジックコントローラの基本動作を制御するプログラムである。
【００２３】
図４を参照して、図1で示したプログラマブルロジックコントローラの揮発性記憶装置130のアドレス空間について説明する。
【００２４】
揮発性記憶装置１３０のアドレス空間400は、ユーザプログラムエリア410、
ユーザプログラム用内部レジスタエリア420、ユーザプログラムサム値計算エリア430、システムプログラム実行エリア440に分けられる。
【００２５】
ここで、ユーザプログラム用内部レジスタエリア４２０とは、ユーザプログラムで使用する際の一時的な記憶エリアである。ユーザはユーザプログラム用内部レジスタエリア４２０にユーザプログラムの演算結果等を一時的に格納する。
【００２６】
図５を参照して、図３で示した読み出し先サーバ情報エリア320の詳細について説明する。
【００２７】
読み出し先サーバ情報500は、サーバIPアドレス510、サーバポート番号520、サーバMACアドレス530及び前回更新時間540に分けられる。
【００２８】
図６のフローチャートを参照して、プログラマブルロジックコントローラが起動（電源ON）してから、ネットワーク２３０にあるサーバ２２０、２４０からユーザプログラムをダウンロードして実行するまでの処理について説明する。
【００２９】
プログラマブルコントローラは、電源がONしたらシステムプログラム読出処理を実行する（ステップ６００）。具体的には、不揮発性記憶装置１２０のシステムプログラムエリア310からシステムプログラムを読み出し、揮発性記憶装置１３０のシステムプログラム実行エリア４４０に格納する。
【００３０】
次に、ユーザプログラム取得処理を実行する（ステップ６１０）。具体的には、読み出し先サーバ２２０、２４０からユーザプログラムを取得する。
【００３１】
次に、ユーザプログラムの取得処理が正常に完了したか否かを判断する（ステップ６２０）。ユーザプログラムの取得処理が正常に完了したら、取得したユーザプログラムの照合処理を実行する（ステップ６３０）。ユーザプログラムの取得処理が失敗したら、異常処理表示を実行して処理を終了する（ステップ６６０）。
【００３２】
取得したユーザプログラムの照合処理が正常に完了したら、ユーザプログラムの実行処理を行う（ステップ６５０）。ユーザプログラムの実行処理を行うことによってユーザプログラムが実行され、プログラマブルコントローラとしての制御動作が開始される。
【００３３】
ユーザプログラムの照合処理が失敗したら、異常処理表示を実行し処理を終了する（ステップ６６０）。
【００３４】
図７のフローチャートを参照して、図６に示すユーザプログラム取得処理610の詳細について説明する。
【００３５】
まず、図６のユーザプログラム取得処理610が実行されると、読み出し先サーバ情報取得処理を実行する（ステップ７００）。具体的には、不揮発性記憶装置１２０の読み出し先サーバ情報エリア３２０に格納されている読み出し先サーバ情報であるサーバIPアドレス510、サーバポート番号520、サーバMACアドレス530及び前回更新時間540を取得する。
【００３６】
次に、読み出し先サーバ情報の取得が正常に完了したか否かを判断する（ステップ７１０）。読み出し先サーバ情報を正常に取得できたら、読み出し先サーバ２２０、２４０からユーザプログラム取得処理を実行する（ステップ７２０）。読み出し先サーバ情報の取得に失敗したら、取得失敗とし処理を終了する（ステップ７４０）。
【００３７】
次に、読み出し先サーバ２２０、２４０からユーザプログラムの取得が完了したか否かを判断する（ステップ７３０）。読み出し先サーバ２２０、２４０からユーザプログラムを取得することができたら、正常に取得完了とし処理を終了する（ステップ７５０）。読み出し先サーバ２２０、２４０からユーザプログラムを取得できなかったら、取得失敗とし処理を終了する（ステップ７４０）。
【００３８】
図８のフローチャートを参照して、図６に示す取得したユーザプログラムの照合処理630について詳細に説明する。
【００３９】
まず、図６のユーザプログラムの照合処理630が実行されると、ユーザプログラムサム値計算処理を実行して、サーバ２２０、２４０から読み出したユーザプログラムのサム値を計算する（ステップ８００）。
【００４０】
次に、サム値計算結果照合処理で、ステップ８００で計算したサム値と、ユーザプログラムサム値照合エリア330（図３参照）に格納されているサム値を照合する。
【００４１】
次に、照合が正常に完了したか否かを判断する（ステップ８２０）。照合が正常に完了したら、正常に照合完了とし処理を終了する（ステップ８３０）。照合に失敗したら、照合失敗とし処理を終了する（ステップ８４０）。
【００４２】
このように、実施形態では、電源起動（電源ON）直後にユーザプログラムをダウンロードするだけでなく、一定のタイミングでダウンロード元のサーバ２２０、２４０とユーザプログラムの照合行う。これにより、ユーザプログラムの整合性を常に正しい状態におくことができる。
【００４３】
上述のように、実施形態では、サーバ２２０、２４０からダウンロードしたユーザプログラムはプログラマブルロジックコントローラ内部の不揮発性記憶装置１２０には格納しないで、揮発性記憶装置１３０に格納する。この結果、プログラマブルロジックコントローラの電源を遮断（電源OFF）すると、プログラマブルロジックコントローラが実行しているユーザプログラムは消えてしまう。これによって、悪意のある第三者の不正なユーザプログラムの読み出しを防止することができる。
【００４４】
尚、上記実施形態の変形例として、例えば、ユーザプログラムを複数有し、プログラマブルロジックコントローラ内部の不揮発性記憶装置１２０からロードあるいはネットワーク上のサーバ２２０、２４０からダウンロードするのかを選択可能に構成することも可能である。この変形例によれば、複数のユーザプログラムのセキュリティレベルを選択することができる。
【符号の説明】
【００４５】
１１０：ＣＰＵ
１２０：不揮発性記憶装置
１３０：揮発性記憶装置
１４０：入力装置
１５０：出力装置
１６０：通信インターフェース
２１０：プログラマブルロジックコントローラ（ＰＬＣ）
２２０：サーバ
２３０：ネットワーク
２４０：サーバ
３００：不揮発性記憶エリア
３１０：システムプログラムエリア
３２０：読み出し先サーバ情報エリア
３３０：ユーザプログラムサム値照合エリア
４００：揮発性記憶エリア
４１０：ユーザプログラムエリア
４２０：ユーザプログラム用内部レジスタエリア
４３０：ユーザプログラムサム値計算エリア
４４０：システムプログラム実行エリア
５００：読み出し先サーバ情報エリア
５１０：サーバIPアドレス
５２０：サーバポート番号
５３０：サーバMACアドレス
５４０：前回更新時間
【図１】
2018128722.tif 000003
【図２】
2018128722.tif 000004
【図３】
2018128722.tif 000005
【図４】
2018128722.tif 000006
【図５】
2018128722.tif 000007
【図６】
2018128722.tif 000008
【図７】
2018128722.tif 000009
【図８】
2018128722.tif 000010