(57)【特許請求の範囲】
【請求項１】
プログラミング装置が、プログラムを作成又は修正するプログラム作成部と、作成又は修正されるプログラムを格納するプログラム格納部と、プログラマブルコントローラとの間のデータの入出力を制御するプログラマブルコントローラ格納処理部とを備え、プログラマブルコントローラが、プログラミング装置との間のデータの入出力を制御するプログラム格納処理部と、プログラミング装置から送られたプログラムを格納しておくプログラム格納部と、プログラミング装置から送られたプログラム格納コマンドに含まれるプログラム番号とプログラム先頭アドレスとを格納するプログラムエントリーテーブルとを備え、プログラマブルコントローラ格納処理部が、作成又は修正されたプログラムにそのプログラム番号とプログラムのロードを指示するコマンドとを付加したデータからなるプログラム格納コマンドを生成してプログラマブルコントローラに送り、プログラム格納処理部が、プログラミング装置から送られたプログラム格納コマンドに含まれるプログラム番号と同じプログラム番号がプログラムエントリーテーブルに存在するか否かを判定し、存在しないときにはプログラム格納コマンドに含まれる新プログラムをプログラム格納部に格納するとともに、プログラム番号と先頭アドレスとをプログラムエントリーテーブルに格納し、同じプログラム番号が存在するときには旧プログラムを新プログラムに書き換えて格納するプログラミング方法において、
プログラミング装置に、このプログラミング装置固有のパスワードを登録するパスワード登録部を設け、プログラマブルコントローラ格納処理部によってこのパスワードをプログラム格納コマンドに組み込み、プログラマブルコントローラのプログラミング装置格納処理部によって、プログラミング装置から送られたプログラム格納コマンドに含まれるプログラム番号及びパスワードと、プログラムエントリーテーブルに格納されているプログラム番号とパスワードとをそれぞれ比較して、プログラム番号が一致するプログラムが無い場合にはプログラム格納コマンドに含まれる新プログラムをプログラム格納部に格納するとともに、そのプログラム番号、パスワード及び先頭アドレスをプログラムエントリーテーブルに書き込んで格納し、プログラム番号が一致してしかもパスワードが一致するプログラムがあるときには、プログラム格納部の同じプログラム番号とパスワードを持つ旧プログラムをプログラム格納コマンドに含まれる新プログラムに書換え、プログラム番号が一致しパスワードが一致しないときには、プログラム格納コマンドに含まれるプログラムをプログラム格納部に格納しないことを特徴とするプログラミング方法。
【請求項２】
プログラム番号が一致しパスワードが一致しないときに、プログラム格納コマンドに含まれる新プログラムをプログラム格納部に格納しないとともに、書き込みを失敗した旨の応答をする書込み失敗応答コードをプログラマブルコントローラからプログラミング装置に送ることを特徴とする請求項１記載のプログラミング方法。
【請求項３】
プログラミング装置が、書込み失敗応答コードを受けてその旨を表示装置に表示することを特徴とする請求項２記載のプログラミング方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、様々な分野の自動制御に使用されるプログラマブルコントローラ（以下、略してＰＣと称する）と、このＰＣに記憶されるプログラムを作成又は修正するためのそのプログラミング装置によるプログラミング方法に関する。
【０００２】
【従来の技術】
図３はプログラマブルコントローラとそのプログラミング装置の構成を示すブロック図である。この図において、１はプログラミング装置、２はプログラマブルコントローラであって、プログラミング装置１は処理部１１、記憶部１２、入力装置１３、表示装置１４及びインタフェース部１５で構成されている。また、プログラマブルコントローラ２は、処理部２１、記憶部２２、プログラミング装置１との間のデータの入出力のためのインターフェース２３及び外部機器との間のデータの入出力のためのインターフェス２４（図ではＩ／Ｏで示してある）で構成されている。
【０００３】
プログラミング装置１の処理部１１はＣＰＵを主体とするプログラミング装置１の演算処理部であり、この処理部１１はキーボードなどの入力装置１３から入力されたデータを受けて、表示装置１４にその内容を表示させたり、種々のデータを記憶する記憶部１４との間でデータの授受を行ったり、インタフェース１５を介してＰＣ２との間でデータの授受などを行う。
【０００４】
ＰＣ２はプログラミング装置で作成され記憶部２２に記憶されているプログラムによって、インターフェース２４を介して入力される外部機器からのデータを基に決められた演算処理した上でインターフェース２４を介して外部機器にデータを送る、という操作が処理部２１で繰り返し実行さて外部機器に対する制御が行われる。
【０００５】
図４は図３のＰＣとプログラミング装置とを機能別に分けて示した機能ブロック図である。この図において、プログラミング装置１はプログラム作成部３１、プログラム格納部３２及びＰＣ格納処理部３３からなっている。なお、この図においては図を分かり安くするために略号を使っている。すなわち、Pgはプログラム、PCはプログラマブルコントローラ（以下にはＰＣと記載してある) 、ETはエントリーテーブル、Ａd はアドレスである。
【０００６】
作成、修正されるプログラムはプログラム格納部３２に格納されていて、図で「Pg入力」と示されているプログラムを作るためのデータが図３の入力装置１３から入力され、このデータに基づいてプログラム作成部３１がその時点でのプログラムにデータを追加したり修正したりすることを繰り返すことによってプログラムの作成又は修正が行われる。ＰＣ格納処理部３３は、ＰＣにデータを送るときの制御を行うものであり、図３のインターフェース１５を機能的には含んでいる。プログラム作成部３１及びインターフェース１５を除くＰＣ格納処理部３３は図３の処理部１１で処理されるソフトウエアで構成されている。
【０００７】
ＰＣ格納処理部３３は、完成したプログラムデータに他のプログラムと区別するためのプログラム番号及びプログラムデータを送ることを示すデータを加えた形のデータにしてＰＣ２に送る。
ＰＣ２はプログラム格納処理部４１、プログラム格納部４２及びプログラムエントリーテーブル４３からなっている。プログラミング装置１から送られてきたデータはプログラム格納処理部４１でまずプログラム番号がプログラムエントリーテーブル４３に既に格納されたプログラム番号と一致しているかどうかが調べられ、一致していなければ、プログラム番号にプログラム先頭アドレスが追加されたデータがプログラムエントリーテーブル４３に格納され、プログラム本体はプログラム格納部４２に格納される。先頭アドレスはプログラム格納部４２の空き領域の中の値が最も小さなアドレスとして決定される。一致するプログラム番号があるときには、古いプログラムが新しいプログラムに書き換えられる。このとき先頭アドレスも同じなのでプログラムエントリーテーブル４３は変更されない。
【０００８】
図５は図４のプログラミング装置でプログラムを新たに作成するかすでにあるプログラムを修正するかするときの順序を示すフローチャートであり、それぞれのステップの符号で、先頭英字にＳを付けたステップは実行を、先頭英字にＣを付けた菱形状のステップは判定を示す。
この図において、まず最初にステップＳ１において、図４のようにプログラミング装置１をＰＣ２に接続する。ついでステップＳ２及びステップＣ１でプログラムを新規作成するのか既に作成されているプログラムを修正するのかの判定をし、新たにプログラムを作成の場合には直ちにステップＳ５のプログラム作成をし、プログラム修正の場合には、ステップＳ３で対象となる既成のプログラムをプログラム格納部に格納する操作が行なわれる。プログラミング装置の種類にもよるが、既成プログラムはフロッピーディスクなどの外部記憶装置に格納されていることが多いので、この外部記憶装置からプログラミング装置１にプログラムをコピーする。修正されたプログラムをここで新プログラムと名付けると、新たに作成された新プログラムと同じように、ステップＳ６でプログラム格納コマンドが作成される。プログラム格納コマンドはプログラムを格納することを指示するコマンドとプログラム番号、プログラム本体が一つのデータになったもので、このプログラム格納コマンドがＰＣ２に送られる。この操作のことをロードと呼んでおり、このような操作をすることからプログラミング装置１のことをローダと呼ぶこともある。このステップまではプログラミング装置１又はその使用者によって行われるものである。
【０００９】
プログラム格納コマンドを受けたＰＣ２は、ステップＳ８でプログラムエントリーテーブル４３に同じ番号のプログラムがあるかどうかをプログラム格納処理部４１が調べ、ステップＣ２によって判定して、もし有ったら旧プログラムを新プログラムに書き換える。したがって旧プログラムは消去される。また、同じ番号のプログラムが無かったら、ステップＳ１０で新プログラムの番号、先頭アドレスをプログラムエントリーテーブル４３に格納し、ステップＳ１１で新プログラムをプログラム格納部４２の空き領域に格納する。
【００１０】
ところで、ＰＣで使用されるプログラムは大きく分けて、▲１▼システムプログラム、▲２▼ユーザプログラムの２種類がある。システムプログラムはＰＣが稼働するために必要な基本的なプログラムであり（その取扱者を以下、使用者１と称する）、ユーザプログラムはＰＣの使用者（以下、使用者２と称する）が作成した実際の自動制御の対象に応じたプログラムである。そして、使用者２がシステムプログラムを変更するようなことはなく，また、間違ってそのようなことをするとＰＣが正常な動作をしなくなることも有り得る。
【００１１】
このようなことから、システムプログラムについては使用者２が変更したりすることができないように従来のＰＣでは次のような対策が採用されている。
▲１▼ユープログラムとシステムプログラムとで格納部を別にする。
▲２▼システムプログラムをＲＯＭに格納して容易に変更することが不可能なようにする。
▲３▼システムプログラムとユーザプログラムとを同じ格納部に格納するが、その代わりにそれぞれのプログラムガどちらに属するかが明らかに分かるようにプログラム番号（又はプログラム名）を区別する。プログラミング装置でプログラム番号でシステムプログラムかユーザプログラムかを判定し、システムプログラムの変更を拒否するロック機能を設ける。
【００１２】
【発明が解決しようとする課題】
ところで、前述のような対策には次のような問題がある。
▲１▼の方法について、ＰＣからみればシスシステムプログラムとユーザプログラムとの区別はないのに二重管理機能が必要になってソフト、ハードの一方又は両方で構成が複雑になる。また、格納部を構成するメモリの利用効率が悪いという問題がある。
▲２▼の方法について、システムプログラムの変更が困難であるという問題がある。場合によっては、使用者１によるシステムプログラムの変更を必要とすることがあるので、そのときにシステムプログラムがＲＯＭに記憶されていると、その変更が困難である。
▲３▼の方法について、プログラム番号（プログラム名）の区別は複数のプログラミング装置について全て共通にしなければならないが、その管理が面倒であり、混乱と間違いの要因になる。
【００１３】
この発明の目的はこのような問題を解決し、使用者２が簡単にシステムプログラムを変更することができないようにして、システムプログラムが不用意に変更されたりすることがないよう安全を期すとともに、必要ならば使用者１によるシステムプログラムの変更が容易で、その上、ハード、ソフトが複雑になることなく、メモリの利用効率も良いプログラミング方法。
【００１４】
【課題を解決するための手段】
上記課題を解決するためにこの発明によれば、プログラミング装置が、プログラムを作成又は修正するプログラム作成部と、作成又は修正されるプログラムを格納するプログラム格納部と、プログラマブルコントローラとの間のデータの入出力を制御するプログラマブルコントローラ格納処理部とを備え、プログラマブルコントローラが、プログラミング装置との間のデータの入出力を制御するプログラム格納処理部と、プログラミング装置から送られたプログラムを格納しておくプログラム格納部と、プログラミング装置から送られたプログラム格納コマンドに含まれるプログラム番号とプログラム先頭アドレスとを格納するプログラムエントリーテーブルとを備え、プログラマブルコントローラ格納処理部が、作成又は修正されたプログラムにそのプログラム番号とプログラムのロードを指示するコマンドとを付加したデータからなるプログラム格納コマンドを生成してプログラマブルコントローラに送り、プログラム格納処理部が、プログラミング装置から送られたプログラム格納コマンドに含まれるプログラム番号と同じプログラム番号がプログラムエントリーテーブルに存在するか否かを判定し、存在しないときにはプログラム格納コマンドに含まれる新プログラムをプログラム格納部に格納するとともに、プログラム番号と先頭アドレスとをプログラムエントリーテーブルに格納し、同じプログラム番号が存在するときには旧プログラムを新プログラムに書き換えて格納するプログラミング方法において、プログラミング装置に、このプログラミング装置固有のパスワードを登録するパスワード登録部を設け、プログラマブルコントローラ格納処理部によってこのパスワードをプログラム格納コマンドに組み込み、プログラマブルコントローラのプログラミング装置格納処理部によって、プログラミング装置から送られたプログラム格納コマンドに含まれるプログラム番号及びパスワードと、プログラムエントリーテーブルに格納されているプログラム番号とパスワードとをそれぞれ比較して、プログラム番号が一致するプログラムが無い場合にはプログラム格納コマンドに含まれる新プログラムをプログラム格納部に格納するとともに、そのプログラム番号、パスワード及び先頭アドレスをプログラムエントリーテーブルに書き込んで格納し、プログラム番号が一致してしかもパスワードが一致するプログラムがあるときには、プログラム格納部の同じプログラム番号とパスワードを持つ旧プログラムをプログラム格納コマンドに含まれる新プログラムに書換え、プログラム番号が一致しパスワードが一致しないときには、プログラム格納コマンドに含まれるプログラムをプログラム格納部に格納しないようにしたことによって、使用者１と使用者２とで異なるプログラミング装置を使用すれば、それぞれのプログラミング装置は互いにパスワードが異なるので、使用者２が間違ってシステムプログラムを修正するか、一つのシステムプログラムと同じプログラム番号のユーザプログラムを作成したとしても、パスワードが異なることからＰＣのプログラム格納部にそのプログラムを格納することができないので、元のシステムプログラムが置き換えられてしまうことがない。
【００１５】
また、プログラム番号が一致しパスワードが一致しないときに、プログラム格納コマンドに含まれる新プログラムをプログラム格納部に格納することを拒否するとともに、書込みを失敗した旨の応答をする書込み失敗応答コードをプログラマブルコントローラからプログラミング装置に送ることによって、プログラミング装置は書込み失敗に応じた適性な対処を実行することができる。そして、書込み失敗応答コードを受けてその旨を表示装置に表示するようにすれば、使用者は自身の失敗を容易に気付く。
【００１６】
【発明の実施の形態】
以下この発明を実施例に基づいて説明する。図１はこの発明の実施例を示すプログラマブルコントローラとそのプログラミング装置の機能ブロック図であり、図２と同じブロックには同じ符号を、類似のブロックには添字Ａを付けて重複する説明を省く。この図の図４と異なる点は、プログラミング装置１Ａにパスワード登録部３４Ａを追加したこと、このパスワード登録部３４Ａに登録されたパスワードを処理又は格納するためにＰＣ格納処理部３３Ａ、プログラム格納処理部４１Ａ及びプログラムエントリーテーブル４３Ａがそれぞれ図４のものと異なる機能が追加されている。パスワード登録部３４Ａにはそのプログラミング装置１固有のパスワードが登録されていて、プログラムが作成されたときにプログラム格納コマンドにこのパスワードが他のデータとともに組み込まれる。すなわち、ＰＣ格納処理部において作成されるプログラム格納コマンドは、格納指示コマンド、プログラム番号、パスワード及びプログラム本体からなっている。このプログラム格納コマンドがＰＣ２に送られて、プログラム格納処理部４１Ａでプログラムエントリーテーブル４３Ａのプログラム番号だけでなくパスワードも比較判定される。
【００１７】
なお、パスワードを用いてプログラムの保護をするという方法は、特開平６−２２２８１５号公報にもあり、公知の技術であるが、この発明では、このパスワードをプログラミング装置それぞれに固有のものを登録して、異なるプログラミング装置で１つのプログラムを修正することを拒否する構成が採用されているという点で前述の公報とは異なる発明である。
【００１８】
図２は図１のプログラマブルコントローラとそのプログラミング装置においてプログラムを新規作成又は修正する場合のフローチャートであり、図５と同じスナップには同じ符号を付けて重複する説明を省く。また、内容が変更になるステップ及び追加したステップには二字目をＰにして、従来と同じステップと区別してある。
【００１９】
ステップＳＰ６でプログラム格納コマンドを作成するときに、図１のパスワード登録部３４Ａに登録されているそのプログラミング装置固有のパスワードをプログラム格納コマンドに組み込む。
ステップＳＰ１２及びステップＣＰ３で、プログラムエントリーテーブル４３Ａに同じプログラム番号があるときに、そのプログラム番号のプログラムのパスワードとプログラム格納コマンドのパスワードとを比較して、一致したときには従来と同じステップＳ９で旧プログラムを新プログラムに書換え、一致しないときには新プログラムの書き込みを行わないで、代わりに書込み失敗をプログラミング装置１Ａに知らせる応答コードをプログラミング装置１Ａに送る。
【００２０】
プログラミング装置１Ａはこのプログラム書込み失敗応答コードを受けて、その旨を図３の表示装置１４に表示することによって使用者２は間違ってプログラムの作成又は変更をしたことに気付くことになる。
使用者２が使用するプログラミング装置は前述のように使用者１とは異なる装置であるのが普通なので、使用者２が間違ってシステムプログラムを修正したとしてもＰＣに格納することができないので、システムプログラムが変更されることによる問題が生ずることはない。
【００２１】
【発明の効果】
この発明は前述のように、プログラミング装置ごとに固有のパスワードを登録しておき、作成又は修正したプログラムをＰＣに送るときのコマンドにこのパスワードを組み込んでおき、ＰＣではプログラム番号とパスワードとの両方が一致したときだけ旧プログラムを新プログラムに書換え、プログラム番号が一致してもパスワードが異なるときには書換えをしないようにしたことによって、間違って使用者２がシステムプログラムを変更したり、一つのシステムプログラムと同じプログラム番号のプログラムを作ったりしたとしても、使用者２は使用者１が使用するプログラミング装置とは違うプログラミング装置を使用するので、ＰＣに格納されているシステムプログラムとパスワードが異なることから、たとえプログラム番号が一致しても旧プログラムが新プログラムに書換えられることはなく、システムプログラムが変更されることによる問題が生じないという効果が得られる。この場合、システムプログラムとユーザープログラムとは同じプログラム格納部に格納しておいてよいので二重管理が不要になり、またプログラム格納部のメモリも利用効率が悪いという問題も生じない。もちろん、システムプログラムの格納にＲＯＭを使用しないので使用者１によるシステムプログラムの変更は容易である。
【００２２】
また、プログラマブルコントローラが新プログラムをプログラム格納部に書き込んで格納することを拒否したときに、書込み失敗応答コードをプログラミング装置に送れば、これを受けてプログラミング装置は書込み失敗に応じた適切な対処を実行することができ、書込み失敗応答コードを受けてその旨を表示装置に表示するようにすれば、使用者は自身の失敗を容易に気付くので使用者は後の適切な対処を的確迅速に行うことができるという効果が得られる。
【図面の簡単な説明】
【図１】この発明の実施例を示すプログラマブルコントローラとそのプログラミング装置の機能ブロック図
【図２】図１のプログラマブルコントローラとそのプログラミング装置の、プログラムの新規作成又は修正時のフローチャート
【図３】プログラマブルコントローラとそのプログラミング装置の構成を示すブロック図
【図４】図３のプログラマブルコントローラとそのプログラミング装置の機能ブロック図
【図５】図４のプログラマブルコントローラとそのプログラミング装置の、プログラムの新規作成又は修正時のフローチャート
【符号の説明】
１，１Ａ…プログラミング装置、２，２Ａ…プログラマブルコントローラ、３１…プログラム作成部、３２…プログラム格納部、３３，３３Ａ…プログラマブルコントローラ格納処理部、３４Ａ…パスワード登録部、４１，４１Ａ…プログラム格納処理部、４２…プログラム格納部、４３，４３Ａ…プログラムエントリーテーブル
【図１】
0003635813.tif 000002
【図２】
0003635813.tif 000003
【図３】
0003635813.tif 000004
【図４】
0003635813.tif 000005
【図５】
0003635813.tif 000006