(57)【要約】【課題】  従来プログラマブルコントローラに関し、ユーザが作成したプログラムは、パスワードを用いたセキュリティ機能を有していたがパスワードの漏洩によりユーザプログラムが流出してしまう危険性があった。【解決手段】  本発明はプログラマブルコントローラに適用され、特にユーザが作成した任意のユーザプログラムを関数化する機能と、関数化されたユーザプログラムをシステムプログラムの一部としてプログラマブルコントローラのシステムメモリへと転送する機能と、システムプログラムの一部である関数化されたユーザプログラムをユーザプログラムから実行する機能と、それに伴うユーザプログラム領域の容量増加、または、ユーザプログラム領域の節約に関する機能と、関数化されたユーザプログラムの内容の閲覧を不可能にすることで情報の漏洩を防ぐセキュリティ機能を有している。【選択図】図１
2006190119.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが作成したユーザプログラム等を格納するためのユーザメモリと、
システムプログラムを格納するためのシステムメモリを有し、
ユーザが作成した任意のユーザプログラムの一部、またはその全てを関数化する手段と、
関数化されたユーザプログラムをシステムプログラムの一部としてシステムメモリへと転送する手段と、
システムプログラムの一部である関数化されたユーザプログラムをユーザメモリに格納されているユーザプログラムから実行する手段
を有することを特徴とするプログラマブルコントローラ。
【請求項２】
前記ユーザプログラムを関数化して前記システムメモリに格納する際、ユーザ定義関数テーブル及びユーザ定義関数領域に分け、
該ユーザ定義関数テーブルは、ユーザ定義関数の開始アドレス及び終了アドレスを格納し、
前記ユーザ定義関数領域にはユーザ定義関数を格納することを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラマブルコントローラに関し、特にユーザが作成した任意のユーザプログラムを関数化して、ユーザプログラムの内容の閲覧を不可能にすることで情報の漏洩を防ぐセキュリティ機能に関する。
【背景技術】
【０００２】
ユーザプログラムはユーザが工数をかけて製作したユーザの財産である。プログラマブルコントローラは、ユーザプログラムがないと何も動作しないため、必ずユーザプログラムが格納された状態になっている。図１０に従来のプログラマブルコントローラのブロック図を示す。図１０において、プログラマブルコントローラ１は演算処理を行うマイコン２と、シーケンスプロブラムやデータを記憶するメモリ３と、このメモリ３にはシステムプログラムを格納しているシステムメモリ４とユーザプログラム６を格納しているユーザメモリを兼ね備えたメモリ５より構成され、外部に対して信号を入出力する入出力Ｉ／Ｆ（インターフェース）７と、パソコンや他のプログラマブルコントローラ、制御機器等とのデータをやり取りするための通信Ｉ／Ｆ（インターフェース）８を備えたもので、これらはバスライン９に接続されている。
【０００３】
このようなシステムにおいて、一般ユーザは、ユーザプログラムの参照を禁じるような手段をとらないため、ユーザの財産であるプログラムを簡単に入手できる場合もある。
【０００４】
このような場合、パスワードを用いたセキュリティ機能を使用するのが一般的であるが、パスワードを用いたセキュリティ機能では、パスワードが漏洩してしまうと簡単にセキュリティ機能が破られてしまうというセキュリティホールが存在する。これは、パスワードを設定するユーザが自分にとって覚えやすいパスワードを設定するため、他人に簡単に推測されやすいパスワードになるためである。また、他人に推測されにくいパスワードを設定したとしても、設定した本人にとっても覚えにくいパスワードになることが多く、忘れてしまう危険性やパスワードをメモ等に残してしまい結果的に他人に簡単に漏洩してしまう問題がある。
【０００５】
また、引用文献１（特開平１０−１３３７１９号公報）には、ユーザプログラムメモリをなくことができるプログラマブルコントローラに関することが開示されている。
【０００６】
【特許文献１】特開平１０−１３３７１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、パスワードを用いたセキュリティ機能を有するプログラマブルコントローラにはパスワードが漏洩してしまうと無防備になるセキュリティホールが存在していたのに対して、ユーザプログラムの漏洩を防ぐセキュリティ機能を提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために本発明は、ユーザプログラムの一部、またはその全てをユーザ定義の関数として関数化し、システムメモリにシステムプログラムの一部として格納する。システムメモリにはシステムプログラムの一部としてユーザ定義関数の書込みのみを許可し、システムプログラムの一部であるユーザ定義関数の読出しはどのようなユーザでもできないものとする。これにより、どのようなユーザからもシステムプログラムの読出しはできないため、システムプログラムの一部であるユーザプログラムの閲覧を禁止することができる。そのため、ユーザ定義の関数として関数化したシステムプログラムの一部となったユーザプログラムの漏洩を防ぐことができる。
また、ユーザプログラム領域は従来通り書込み、読出しはできることから、ある程度の保守性を有している。
本発明には、この他にも次のようなメリットがある。
１．ユーザプログラムを簡潔に表現できる。
２．ユーザプログラム領域の容量アップ、または、ユーザプログラムの容量の節約に繋がる。
【発明の効果】
【０００９】
発明の効果として、次のことが挙げられる。（１）システムプログラムの一部としてシステムメモリに格納されたユーザプログラムは、他のユーザに閲覧されることがないため、十分なセキュリティを確保できる。（２）ユーザプログラム領域は、従来通り書込み、読出しが可能なため、ある程度の保守性を有する。（３）ユーザプログラムを関数化することによって、ユーザプログラムを簡潔に表現できる。そのため、ユーザプログラムの可読性が向上する。（４）従来であればユーザプログラム領域に格納していたユーザプログラムを、その一部、またはその全てをシステムプログラムの一部としてシステムメモリに格納することにより、格納できるユーザプログラムの容量が増加する。または、ユーザプログラムの容量を節約することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明を実施するための最良の形態について説明する。
【００１１】
本発明のプロブラマブルコントローラの実施例について図面を用いて説明する。
【実施例１】
【００１２】
図１は、本発明のプログラマブルコントローラのブロック図を示している。図１において、プログラマブルコントローラ１は演算処理を行うマイコン２と、シーケンスプロブラムやデータを記憶するメモリ３と、このメモリ３にはシステムプログラム及び関数化されたユーザプログラム１１を格納しているシステムメモリ４とユーザプログラム６を格納しているユーザメモリを兼ね備えたメモリ５より構成されている。この関数化されたユーザプログラムについては後で詳細に説明する。また、ユーザプログラムは全て関数化してシステムメモリに格納するとは限らない。外部に対して信号を入出力する入出力Ｉ／Ｆ（インターフェース）７と、パソコンや他のプログラマブルコントローラ、制御機器等とのデータをやり取りするための通信Ｉ／Ｆ（インターフェース）８を備えたもので、これらは、バスライン９に接続されている。
【００１３】
図２は、プログラマブルコントローラのメモリ領域３を示している。プログラマブルコントローラのメモリ領域３にはシステムプログラムを格納するためのシステムメモリ４とユーザが作成したユーザプログラム６等を格納するためのユーザメモリ５の両方を備えている。本発明において、ユーザプログラム６の一部、またはその全てをＦＵＮ  ｘｘ（ｎ）という名前のユーザ定義の関数として関数化し、システムプログラム１０の一部としてシステムメモリ４に格納する。ここで、ユーザ定義関数を含めシステムプログラム１０からの読出し処理を作らないことで、システムプログラムのエリアの参照を不可能にする。そのため、ユーザ定義の関数は、関数を定義したユーザ自身を含め、どのようなユーザでも閲覧することはできないことになる。
【００１４】
次に、ユーザ定義関数のシステムメモリへの転送方法について述べる。図３にシステムメモリ４のメモリ領域構造を示す。図３に示すように、システムメモリ４は、システムに関する情報が格納されるシステム部分１２とユーザ定義関数に関する情報が格納される部分に分けられる。また、ユーザ定義関数に関する情報が格納される部分は、ユーザ定義関数に関する情報が格納されるユーザ定義関数テーブル１３とユーザ定義関数そのものが格納されるユーザ定義関数領域１４に分けられる。ここで、ユーザ定義関数テーブル１３の詳細を図４に示す。図４において、ユーザ定義関数テーブル１３には、ユーザ定義関数を識別する識別番号１７とユーザ定義関数領域に格納されているユーザ定義関数の開始アドレス１５と終了アドレス１６が格納されるエリアを有する。ユーザ定義関数を識別する識別番号１７は、複数のユーザプログラムを関数化した際、識別するために設けるものである。
【００１５】
次にユーザ定義関数テーブル１３とユーザ定義関数領域１４の詳細を図５に示す。ユーザ定義関数テーブル１３には、図４で示した情報が格納される。すなわち図５に示すように、ＦＵＮｘｘ（１）の開始アドレスを終了アドレスを格納し、
次に、ＦＵＮｘｘ（２）の開始アドレスと終了アドレスを格納して、ＦＵＮｘｘ（３）・・・と続けて格納する。
ユーザ定義関数領域１４には、ユーザ定義関数が格納される。すなわちＦＵＮｘｘ（１）が格納され、次にＦＵＮｘｘ（２）が格納され、ＦＵＮｘｘ（３）・・・と続いて格納する。識別番号２以降のユーザ定義関数の開始アドレスは、１つ前の識別番号のユーザ定義関数の終了アドレスをもとに決まる。
【００１６】
図６にユーザ定義関数の転送方法を示す。ユーザ定義関数を作成、転送する機能を備えた専用ツールを用いて、ユーザ定義関数を作成し、作成したユーザ定義関数をシステムメモリへと転送する。専用ツールとは、ＰＣ（パーソナルコンピュータ）等で扱うことができるアプリケーションソフトで、既存のラダープログラムをプログラミングするツールと似たような動作をする。違いは、プログラムの格納先がユーザメモリではなくシステムメモリに格納する点と、プログラムの読出しができない点である。このアプリケーションソフトを用いて、ユーザ定義関数の関数化と、関数化したユーザプログラムのプログラマブルコントローラへの転送を行う。このアプリケーションソフトでは、ユーザ定義関数のシステムプログラムへの書込みはできるが、システムプログラムからユーザ定義関数の読出しはできない。ユーザ定義関数を転送する時、作成したユーザ定義関数はユーザ定義関数領域に格納し、格納した領域の開始アドレスと終了アドレスをユーザ定義関数テーブルに格納する。また、このアプリケーションソフトが、ユーザ定義関数をユーザ定義関数領域に格納する際に、ユーザプログラムへと戻るための「Ｒｅｔｕｒｎ文」をユーザ定義関数の最後に付け加える。図７にアプリケーションソフトが「Ｒｅｔｕｒｎ文」をユーザ定義関数の最後に付け加える処理を示す。このように最後に「Ｒｅｔｕｒｎ文」を付けることでユーザ定義関数実行後、ユーザプログラムへ戻ることができる。
【００１７】
システムプログラムの一部としてシステムメモリに格納されたユーザ定義関数の読出し方法について述べる。ユーザ定義関数の読出しは、ユーザプログラムから関数の読出しがあった場合のみ、ユーザ定義関数の読出しができる。図８及び図９にユーザプログラムとユーザ定義関数実行時の処理のフロー図及びフロー図に対応した説明図を示す。ユーザ定義関数が実行された時に、ユーザ定義関数を識別する識別番号をもとに対応するユーザ定義関数の情報が格納されたユーザ定義関数テーブルにアクセスする。ユーザ定義関数テーブルにアクセスした時に、現在のユーザプログラムのアドレスをシステム領域に記憶する。そして、ユーザ定義関数テーブルよりユーザ定義関数の開始アドレスと終了アドレスを読出す。読出した開始アドレスと終了アドレスをもとにユーザ定義関数領域からユーザ定義関数を読出し、実行する。ユーザ定義関数のオフセット情報をもとに対応するユーザ定義関数の情報が格納されたユーザ定義関数テーブルにアクセスした際に、その時点でのユーザプログラムのアドレスをシステム情報を格納されている「ユーザプログラムのアドレス格納エリア」に格納する。ユーザ定義関数実行後、ユーザプログラムに戻る際に、この「ユーザプログラムのアドレス格納エリア」に格納されているユーザプログラムのアドレスをもとにユーザプログラムへと戻る。
【００１８】
ユーザメモリに格納されたユーザプログラムは、従来通りどのようなユーザでも読出し、書込み可能であるので、ある程度の保守性を有する。また、ユーザプログラムの一部、またはその全てをユーザ定義の関数として関数化し、システムプログラムの一部としてシステムメモリに格納しているため、ユーザメモリに格納されているユーザプログラムは簡潔に表現されている。そのため、プログラムの可読性が向上し、メンテナンス性も向上している。それに伴い、ユーザメモリの節約にも繋がる。
【図面の簡単な説明】
【００１９】
【図１】本発明のプログラマブルコントローラのブロック図である。
【図２】本発明のメモリ領域の構造を示す構造図である。
【図３】システムメモリのメモリ構造を示す構造図である。
【図４】ユーザ定義関数テーブルの詳細を示す詳細図である。
【図５】システムメモリのメモリ構造の詳細を示す詳細図である。
【図６】ユーザ定義関数のシステムメモリへの転送方法を示す説明図である。
【図７】ユーザ定義関数転送時にユーザ定義関数の最後にＲｅｔｕｒｎ文を付け加える処理を示す処理図である。
【図８】システムプログラムに格納したユーザ定義関数の実行のフロー図である。
【図９】ユーザ定義関数実行後、ユーザプログラムへ戻る方法を示す説明図である。
【図１０】従来のプログラマブルコントローラのブロック図である。
【符号の説明】
【００２０】
１ プロブラマブルコントローラ
２ マイコン
３ メモリ
４ システムメモリ
５ ユーザメモリ
６ ユーザプログラム
７ 入出力I／Ｆ
８ 通信I／Ｆ
１０ システムプログラム
１１ 関数化されたユーザプログラム
１２ システム
１３ ユーザ定義関数テーブル
１４ ユーザ定義関数領域
１５ 開始アドレス
１６ 終了アドレス
【図１】
2006190119.tif 000003
【図２】
2006190119.tif 000004
【図３】
2006190119.tif 000005
【図４】
2006190119.tif 000006
【図５】
2006190119.tif 000007
【図６】
2006190119.tif 000008
【図７】
2006190119.tif 000009
【図８】
2006190119.tif 000010
【図９】
2006190119.tif 000011
【図１０】
2006190119.tif 000012