JP3548829B2 - ユニット及びplc並びにユーザプログラムの処理方法 - Google Patents
ユニット及びplc並びにユーザプログラムの処理方法 Download PDFInfo
- Publication number
- JP3548829B2 JP3548829B2 JP2002382445A JP2002382445A JP3548829B2 JP 3548829 B2 JP3548829 B2 JP 3548829B2 JP 2002382445 A JP2002382445 A JP 2002382445A JP 2002382445 A JP2002382445 A JP 2002382445A JP 3548829 B2 JP3548829 B2 JP 3548829B2
- Authority
- JP
- Japan
- Prior art keywords
- library
- program
- unit
- storage means
- user program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/058—Safety, monitoring
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13005—Subroutine
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13068—Program divided in operation blocks, groups, tasks each executed
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23232—Execute program from added, expansion rom, memory
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/24—Pc safety
- G05B2219/24164—Parts of program accesible only during execution, no access with programming tool
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Storage Device Security (AREA)
Description
【発明の属する技術分野】
この発明は、ユニット及びPLC並びにユーザプログラムの処理方法に関するものである。
【0002】
【発明の背景】
良く知られているように、FA(ファクトリオートメーション)で用いられるプログラマブルコントローラ(PLC)は、入力機器(スイッチやセンサなど)のON/OFF情報を入力し、ラダー言語などで書かれたシーケンスプログラム(ユーザプログラム)に沿って論理演算を実行して、その演算結果により、出力機器(リレーやバルブ、アクチュエータなど)にON/OFF情報の信号を出力することで制御を行う。なお、ユーザプログラムを作成・編集する場合やユーザプログラムをPLCの所定のメモリへ書き込み(ダウンロード)或いはPLCの所定のメモリからユーザプログラムを読み出す(アップロード)場合は、専用の装置(ツール装置)を用いる。
【0003】
そして、係るPLCの一形態として、各機能ごとに作成されたユニットを複数用意し、電気,機械的に連結して構成するものがある。係るタイプを構成するためのユニットとしては、PLCを構成する各ユニットに電源を供給する電源ユニットや,INリフレッシュすることで入力した入力信号に基づき、プログラムメモリに記憶したユーザプログラムを実行するCPUユニット,CPUユニットとバス通信可能で、入力機器または出力機器を接続するI/Oユニット等各種のものがある(特許文献1参照)。
【0004】
また、最近では、I/OユニットにもCPU(MPU)や、プログラムメモリを搭載するとともに、そのプログラムメモリに所望のユーザプログラムを格納し、そのI/Oユニット側でも上記ユーザプログラムの演算実行をして、所定の制御を行うようにしたものがある。
【0005】
一方、PLC(各ユニット単体を含む)の流通経路を鑑みると、一例としては、まずPLCを製造するメーカが存在する。そして、自動包装機や射出成型機その他の産業機械を製造する会社は、係るメーカからPLCを購入し、その産業機器の使用内容や制御動作に応じて必要なユーザプログラムをプログラム作成ツールで作成するとともに、そのユーザプログラムをPLCにダウンロードし、係るPLCで制御動作する産業機械を製造する。つまり、この産業機械を製造する会社は、PLCメーカにとってはユーザ(中間ユーザ)となる。そして、係る産業機械は、エンドユーザの会社の工場に設置され、生産設備のシステムに組み込まれ、各種の製品を製造するようになっている。
【0006】
ところで、上記ユーザプログラムは、各中間ユーザのノウハウが入ったものであり、そのユーザの資産である。従って、競合他社などにそのユーザプログラムの内容が漏洩するのを可及的に抑制したいという要求がある。しかし、シーケンスプログラムを記述する言語として汎用言語であるラダー言語を用いてユーザプログラムを作成し、それをプログラムメモリに格納した場合、ツール装置で係るユーザプログラムを読み出し、解析することができる。従って、1つのエンドユーザに対して複数の中間ユーザが取り引きしていることは良くあり、この場合、各中間ユーザがエンドユーザの工場内に出入りすることがある。よって、PLCで制御される産業機械を設置した後で、その産業機械を生産・納入したユーザと異なる競合他社が係るエンドユーザの工場に行き、当該産業機械を制御するPLCのユーザプログラムをアップロードして取得されてしまうおそれがある。
【0007】
そこで、第三者への漏洩を防止するために、パスワードなどで読み出し禁止のプロテクトを図る方法もあるが、パスワードが漏れてしまったり、解析されてしまうと、ユーザプログラムが第三者に取得されてしまう。ところで、ユーザプログラムにパスワードで読み出し禁止のプロテクトをかける場合には、ユーザプログラム全体を読み出し禁止にする方法と、ユーザプログラムの一部を読み出し禁止にする(部分プロテクト)方法がある。上記の中間ユーザは、ユーザプログラム中のノウハウ部分のみを部分プロテクトをかけてエンドユーザに提供することでノウハウの漏洩を防止するとともに、ノウハウ以外の読み出し可能部分のエンドユーザでの変更(カスタマイズ)が可能な状態でユニットを提供できる。しかし、この方法は、部分プロテクトの対象が、1本のユーザプログラム中の部分的なプログラムであるためプロテクト外のプログラム編集の影響を受けやすいという問題がある。
【0008】
一方、ノウハウ部分を含む制御(モーション制御等)機能部分を、専用のマイコンボードで実現するようにすると、第三者への漏洩の問題は一応抑制されるものの、マイコンボードのような専用品を用意する煩雑さの問題がある。また、マイコンボードは、ラダー言語やシーケンスプログラム言語に対応できないため、PLCで利用するラダーによるユーザプログラムの開発環境(ツール装置を含む)が使えず、マイコンボード上のプログラムを開発する専用の開発環境が必要となり、コストアップの問題もある。
【0009】
また、ユーザに専用の開発環境や、ユーザ側で専用の開発環境を使ってマイコンボード上のプログラムを作成する開発者が用意できない場合、他のメーカ(PLCの製造メーカ等)の協力が必要となる。特に、ユーザがPLCの製造メーカに対してユーザプログラムに相当するプログラムの作成を依頼する場合、PLCの製造メーカはユニットのシステムプログラム(ファームウェア)に組み込んで特定ユーザ向けの専用ユニットとして提供することも可能である。係る方式を採ると、漏洩防止の点では好ましいが、係るメーカに対してノウハウを開示する必要があるばかりでなく、仮にノウハウを開示したとしても、メーカ側ではユーザが持つノウハウ・知識を十分に把握することが困難であるので、ユーザが満足する制御,機能を実現できないおそれもある。そして、ユーザ側で簡単にプログラムを修正することができないなど、各種の問題がある。
【特許文献1】
特開平10−333900号公報
【0010】
この発明は、プログラム開発環境として別途専用のものを用意することなく、ユーザが作成するプログラムの一部または全部に対するプロテクトを簡単かつ確実にかけることができるユニット及びPLC並びにユーザプログラムの処理方法を提供することを目的とする。
【0011】
【課題を解決するための手段】
この発明によるユニットは、PLCを構成するユニットであって、同一のユニット内に、ユーザプログラムを記憶する第1の記憶手段と、前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記第1の記憶手段に格納された前記ユーザプログラムを実行するユーザプログラム実行手段と、前記第2の記憶手段に格納されたライブラリ化されたプログラムを実行するプログラム実行手段とを備え、前記第2の記憶手段は、前記ユニット内に実装されるとともに、前記ユーザプログラムをアップロードするツールではアクセス不可に構成した。
【0012】
ここで「ユニット」とは、PLCを構成するユニットであって、ユーザが作成したユーザプログラムをダウンロードしてユニット内部に記憶保存し、そのユーザプログラムを実行する機能を持つユニットを指す。具体的には、CPUユニットや実施の形態で述べたI/Oユニットも含む。他にも、ユーザプログラム実行機能を内蔵し、特殊な機能を実行処理する「特殊機能ユニット」がある。この特殊機能ユニットとして例えば、リモートIO用マスタユニットなどがある。
【0013】
「第1の記憶手段」は、実施の形態ではRAM14に対応し、「第2の記憶手段」はフラッシュメモリ15に対応する。本実施の形態では、第1の記憶手段と第2の記憶手段はRAMとフラッシュメモリのように物理的にもメモリ種別的にも異なるメモリを用いて実現しているが、同一種別のメモリを2つ用いて、それぞれを第1,第2の記憶手段として実現してもよい。さらに、単一のメモリでエリア分割し、ツールからアクセス可能なエリアを第1の記憶手段とし、ツールからアクセス不可なエリアを第2の記憶手段とすることでもよい。さらにまた、2つのメモリの両方にツールからアクセス不可なエリアを設け、それら2つのエリアを合わせて第2の記憶手段として扱うこともできる。
【0014】
「ライブラリ化」とは、MPUなどのプログラム実行手段にて呼出されて実行されるようなプログラム形態にしたうえで、所定のメモリに格納する手順のことである。ライブラリ化する例としては、実行したい処理全体の一部を所定処理の固まりとしての“サブルーチン形式のプログラム”とし、そのサブルーチンプログラムを全体処理のためのプログラムから呼び出して実行するような例がある。なおライブラリ化されたプログラムの実行の仕方の一例を説明すると、識別符号を付けて所定メモリ(第2の記憶手段:実施の形態ではフラッシュメモリ)にライブラリ化プログラムを予め記憶させ、識別符号と専用命令をメインプログラムに挿入する。そして、そのメインプログラムをスキャン実行することにより、専用命令も実行されて、識別符号によって識別されたライブラリ化プログラムを所定メモリから呼び出して実行するものがある。これは、実施の形態中の部品ライブラリの例に対応する。
【0015】
また「ライブラリ生成手段」は、実施の形態では、図4のフローチャートを実施する機能部分に対応し、「プログラム実行手段」は、実施の形態では、図8から図10のフローチャートを実施する機能に対応する。
【0016】
「ツールからアクセス不可にする」とは、ツールから記憶手段の記憶内容が一切読み出せないような構成にすることである。「ツールから第2の記憶手段をアクセス不可にする」とは、ユニットがツールからユーザプログラムの読み出し要求やその他データ読み出し要求を受け付けた場合は、当該ユニットの処理部(実施の形態ではMPU)が第1の記憶手段の該当データのみを返送する処理しかできないようにすることで実現可能である。実際には、例えばPLC製造メーカにて、ツールと当該ユニットとのアクセスにおける規則を予め次のように決めておくことで実行できる。
【0017】
つまり、ツールからの読み出し要求コマンドに対して応答できるメモリエリアを第1の記憶手段のみとし、第2の記憶手段にはツールから読み出しできないように決めることで実現する。さらに言うと、ツールから第1の記憶手段に対して読み書きする要求コマンドは規則化して用意しておくが、第2の記憶手段に対する読み出しコマンドまたは呼出しコマンドは最初から用意しないようにして実現する。このようにコマンドの工夫で実現できる。
【0018】
また、他の工夫でも実現できる。すなわち、例えば、ユニットの第2の記憶手段へツールからアクセスしてきても、ユニットの内部システム処理として、第2の記憶手段からデータの読み出しを禁止するようにすることもできる。つまり、ユニット側の設定で、メモリの一部(第2の記憶手段)を読み出し禁止をするわけである。
【0019】
そして、いずれの場合も、読み出されたくないプログラムは第1の記憶手段に残さずに、アクセス不可な第2の記憶手段だけに記憶させておく。要するに、ユニットのメモリの中に読み出し禁止エリアを設け、その読み出し禁止エリアだけに、読み出されたくないプログラムを格納するように構成すれば足りる。なお、実施の形態ではアクセス不可な領域を、フラッシュメモリ15のライブラリ情報領域15cとライブラリデータ15bとしている。また、読み出されたくないプログラムは、実施の形態ではライブラリ化したプログラムが該当する。
【0020】
この発明によれば、ツールからアクセス不可な第2の記憶手段に、ユーザプログラムの少なくとも一部がライブラリ化されて格納されるので、そのユーザプログラムはツールなどでライブラリ化されたプログラムにアクセスすることができなくなる。従って、ノウハウなど秘密にしたいライブラリ化プログラムを確実にプロテクトをかけることができる。なお、ライブラリ化の作業中は、ライブラリ化対象のプログラムは、第1の記憶手段に格納されたユーザプログラムの所定部分となっているので、ユーザ等は今までのユーザプログラムの開発環境(例えばラダー言語で作成するツール等)をそのまま用いてプログラムを作成することができる。つまり、ライブラリ化するための特別な開発環境は不要としつつ、ライブラリ化処理後は確実にプロテクトが可能である。
【0021】
なお、第1の記憶手段に格納されたユーザプログラムをライブラリ化して第2の記憶手段に格納するが、本発明で言う「一部のプログラム」とは、ライブラリ化する際に第1の記憶手段に格納されているライブラリ化前のユーザプログラムの一部分の意味である。なお、ライブラリ化する部分とライブラリ化しない部分を何かしらの情報で区別する。また「ユーザプログラムの全部」とは、ライブラリ化する際に第1の記憶手段に格納されているユーザプログラムの全部という意味である。従って、実施の形態における全体ライブラリはもちろんのこと、部品ライブラリ化する場合でも、第1の記憶手段に部品ライブラリ化する対象となる1個または複数個のサブルーチンプログラムのみを格納し、それをライブラリ化して第2の記憶手段に格納する場合は、本発明でいうところの「第1の記憶手段に格納されたユーザプログラムの全部をライブラリ化する」ことに対応する。
【0022】
そして、前記ライブラリ生成手段は、前記ユーザプログラムを実行オブジェクト化して前記第2の記憶手段に格納するようにすることができる。「実行オブジェクト化」とは、プログラム実行処理にて実行される処理言語に翻訳することで、具体的にはプログラムを機械語に翻訳することである。こうすることで、第2の記憶手段からプログラム情報が万一悪意に読み出されても、普通に理解できない言語となっているとともに、通常では逆コンパイルできなくすることにより、よりわかりにくくすることができる。その結果、プログラム中のノウハウなどが漏洩しないことになり、ユーザプログラム作成者は安心できる。もちろん、実行オブジェクト化する前のユーザプログラムのまま格納しても良い。
【0023】
また、前記ライブラリ化されたプログラムは、サブルーチンライブラリであって、前記プログラム実行手段は、前記第1の記憶手段に格納されたメインユーザプログラム中に前記サブルーチンライブラリ呼び出しの専用命令が存在する場合に、指定されたサブルーチンライブラリ内のサブルーチンプログラムを実行するとともに、前記メインユーザプログラムに復帰する機能を備えることである。この構成は、ライブラリ化の処理をした後の状態において、ユニットにてライブラリ化プログラムを実行する際の構成を示すものである。ここでいう「復帰する機能」とは、指定されたサブルーチンプログラムの実行終了後に、メインユーザプログラムに戻って、前の続き、つまり、そのサブルーチンプログラムを呼び出した専用命令の次の命令から実行することである。このようにサブルーチン化することにより、プログラム部品とし、繰り返し利用したり、他のプログラム作成時に利用することができ、プログラム開発の簡略化並びに生産性向上を図ることができる。
【0024】
また、前記ライブラリ化されたプログラムは、前記ユーザプログラムの全体であって、前記プログラム実行手段は、システム稼動の際に、前記第2の記憶手段に格納されたライブラリ化されたプログラムを実行可能な状態にすることもできる。これは、実施の形態で述べる全体ライブラリの利用に相当する。ここでいう実行可能な状態にするとは、実施の形態では、ライブラリ化して記憶手段に格納したライブラリ化プログラムがコンパイルされた後のものであれば、そのコンパイル対象を実行するようにフラグなどをセットすること、或いは、実際に第2の記憶手段に格納されたプログラムがコンパイルされる前のものであれば、それをコンパイルすること(コンパイル後は第1の記憶手段に展開してもよい)等に対応する。また、すべてのユーザプログラムに対してプロテクトすることができる。
【0025】
一方、前記ライブラリ生成手段は、ライブラリ化するプログラムを特定するためのライブラリ名を関連付けて第2の記憶手段に格納する機能を持ち、前記第2の記憶手段に格納された前記ライブラリ名を読み出すとともに前記第1の記憶手段に格納するライブラリ名読み出し手段を備えるとよい。
【0026】
ライブラリ名などを第2の記憶手段に格納すると、そのライブラリ名に基づいてライブラリ化されたプログラムを特定し、実行することができる。但し、第2の記憶手段に格納されているため、外部から参照することはできない。その結果、ライブラリ化したプログラムを別途管理しておかないと、後で確認することができなくなる。そこで、ライブラリ名読み出し手段を設けることにより、外部からアクセス可能な第1の記憶手段にライブラリ名を書き込み、ツールなどによってライブラリ名を読み出すことにより、ユーザ等に第2の記憶手段にどのようなライブラリ(プログラム)が格納されているかを知らせることができる。
【0027】
さらにまた、前記ライブラリ生成手段は、前記第2の記憶手段に、前記ライブラリ化されたプログラムとともに、そのライブラリを特定するライブラリ識別情報を関連づけて格納する機能を持ち、前記第2の記憶手段に格納した情報を外部記憶手段にバックアップするバックアップ手段を備え、そのバックアップ手段は、入力されたライブラリ識別情報が、前記第2の記憶手段に予め格納された正規のものと一致するか否かを判断し、一致した場合に前記情報を前記外部記憶手段に格納するようにすると良い。
【0028】
係る構成にすると、ライブラリ識別情報を知っている正規の人のみがライブラリ化されて第2の記憶手段に格納された情報を外部記憶手段にバックアップすることができる。すなわち、ライブラリ識別情報は、第2の記憶手段に格納されているので、ユニットにツールなどを用いてアクセスしても知ることはできないので、正規の人以外はバックアップできない。
【0029】
ここで、ライブラリ識別情報は、実施の形態ではライブラリIDに対応する。また、外部記憶手段は、実施の形態ではメモリカードに対応する。外部記憶手段は、別のユニットに実装されるものでも良いし、自己のユニットに実装されるものでも良い。なお、外部記憶手段として好ましくは、持ち運び可能で、ユニットに取り付け取り外しできるメモリカードがよい。
【0030】
また、ユニット単体に限るものでもなく、PLCにおいて上記した各種の機構を備えても良い。一例としては、ユーザプログラムを記憶する第1の記憶手段と、前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記第2の記憶手段に格納されたライブラリ化されたプログラムを実行するプログラム実行手段と、前記第2の記憶手段を備え、前記第2の記憶手段は、前記ユーザプログラムをアップロードするツールではアクセス不可に構成することにより実現できる。もちろん、このPLCの発明においても、上記した各ユニットの発明と同様の付帯的な機能を付加することができる。
【0031】
また、本発明に係るユーザプロクラムの処理方法は、ユーザプログラムを格納する第1の記憶手段と、前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記ユーザプログラムをアップロードするツールではアクセス不可となる第2の記憶手段を備えたPLCを構成するユニットにおけるユーザプログラムの処理方法である。そして、前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して前記第2の記憶手段に格納して前記ライブラリ化した部分を保護する。また、前記ユーザプログラムの実行時は、前記第2の記憶手段に格納されたライブラリ化されたプログラムを適宜実行させるようにした。
【0032】
ここで言う「保護する」とは、ユーザプログラムをアップロードするツールでは読み出しが出来ないようにすることであり、いわゆるプロテクトをかける意味である。
【0033】
また、本発明に係るユニットの別の解決手段としては、入力信号を受け取る入力回路と、その入力信号に基づいてユーザプログラムを実行するプログラム実行手段と、実行結果を出力する出力回路とをもつPLC用のユニットであって、ダウンロードされたユーザプログラムの一部を部品ライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記部品ライブラリ化したプログラムを格納してある第2の記憶手段と、前記部品ライブラリ化したプログラムを呼び出して実行するための専用命令を挿入したユーザプログラムをツールで作成し、そのユーザプログラムを格納する第1の記憶手段と、を備え、前記プログラム実行手段は、前記第1の記憶手段に格納されたユーザプログラムをスキャン実行し、前記ユーザプログラム中の専用命令を実行することによって前記第2の記憶手段から前記部品ライブラリ化されたプログラムを呼び出して実行し、その呼出実行が終了すれば前記ユーザプログラムに復帰して実行するものであり、前記第2の記憶手段を前記ツールからアクセス不可とすることで、前記部品ライブラリ化したプログラムを読み出しできないようにしたものである。ここで言う「入力回路」「出力回路」は入力機器または出力機器がつながる回路、あるいはユニット間結合バスでつながる他ユニットとのデータ通信をするインターフェース部も含んでいる。
【0034】
また、本発明に係るユニットの別の解決手段としては、入力信号を受け取る入力回路と、その入力信号に基づいてユーザプログラムを実行するプログラム実行手段と、実行結果を出力する出力回路とをもつPLC用のユニットであって、ダウンロードされたユーザプログラムの全部を全体ライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記全体ライブラリ化したプログラムを格納してある第2の記憶手段と、前記全体ライブラリ化したプログラムを呼び出して実行するための設定フラグを、ツールの操作によって格納する第1の記憶手段とを備え、前記プログラム実行手段は、前記第1の記憶手段の設定フラグをきっかけに全体ライブラリ化されたプログラムを第2の記憶手段から呼び出して実行するものであり、前記第2の記憶手段を前記ツールからアクセス不可とすることで、前記全体ライブラリ化したプログラムを読み出しできないようにした。
【0035】
また、本発明に係るユニットは、PLCを構成するユニットであって、ツールにて作成したユーザプログラム(このユーザプログラムはライブラリ化してあるプログラムを呼び出して実行するための専用命令を挿入したものである)を格納する第1の記憶手段と、ダウンロードされたユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記ライブラリ化されたプログラムを格納しておく第2の記憶手段と、前記ユーザプログラムをスキャン実行してゆき、前記ユーザプログラム中の専用命令の実行によって、前記第2の記憶手段から前記ライブラリ化プログラムを呼び出して実行するプログラム実行手段と、を備え、第2の記憶手段のライブラリ化プログラムは、前もって格納されていて、ユーザプログラムを作成するときに使用するツールからは、ライブラリ化プログラムを読み出しできないようにすることで、ライブラリ化プログラムの内容をプロテクトすることを特徴とするものである。
【0036】
さらにまた、本発明に係るユニットは、PLCを構成するユニットであって、ツールにてライブラリ化してあるプログラムを呼び出して実行する定フラグを格納する第1の記憶手段と、ダウンロードされたユーザプログラムの少なくも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記ライブラリ化されたプログラムが格納しておく第2の記憶手段と、RUNモードにて、前記第1の記憶手段の設定フラグを読み出して、実行する旨のフラグ設定がされている場合には、前記第2の記憶手段からライブラリ化プログラムを呼び出して実行するプログラム実行手段と、を備え、第2の記憶手段のライブラリ化プログラムは前もって格納されていて、設定フラグを設定するツールからはライブラリ化プログラムを読み出しできないようにすることで、ライブラリ化プログラムの内容をプロテクトすることを特徴とするものである。
【0037】
【発明の実施の形態】
図1は、本発明の一実施の形態を示している。図に示すように、電源(PS)ユニット1,CPUユニット2,I/Oユニット3など各種のユニット間の結合バスなどにより電気・機械的に連結してPLCを構成している。また、この例ではCPUユニット2には、メモリカードスロット2aを有しており、そのメモリカードスロット2aにメモリカードを挿入することにより、その挿入したメモリカードにCPUユニット2やI/Oユニット3などのメモリに格納された情報を記憶保持することができるようになっている。
【0038】
さらに、本実施の形態では、後述するようにCPUユニット2にMPUとユーザプログラムメモリを実装し、I/Oユニット3にもマイクロプロセッサとしての処理部(MPU)やユーザプログラムメモリを実装し、係るユーザプログラムメモリにツールで作成したユーザプログラムを格納することにより、CPUユニットおよびI/Oユニットにて所望のシーケンス制御を実行することができるようになっている。これにともない、それらCPUユニット2とI/Oユニット3には、ツール5と通信するためのポートPも備えており、ツール5で作成した所定のユーザプログラムを各ユニットのポートPを介してユーザプログラムメモリへダウンロード可能としている。
【0039】
なお、ここでいうI/Oユニット3は、ユーザがツールで作成したユーザプログラム(これは作成後に変更可能または編集可能であってもよい)をダウンロードして内部に記憶保存し、そのユーザプログラムを内部で実行する機能を持つとともに、当ユニットに接続された外部機器に対して入出力処理をするものを指す。
【0040】
例えば、カウンタユニットやアナログ処理ユニット,位置制御ユニットなどがある。ここで、「カウンタユニット」は、エンコーダなどから入力したパルス入力を計数処理し、その計数結果に基づいてユーザプログラムを実行し、その実行結果に基づく出力信号をサーボドライバ部(これは、ユニット外部にあってもユニット内蔵でもよい)などに出力し、サーボモータを制御するために利用するユニットである。サーボモータへの出力信号の種類としては、速度制御をするモータのためのアナログ出力信号でも、パルスモータを制御するためのパルス信号でもどちらでもよい。なお、入力信号もパルス信号に代えて、変位センサなどからのアナログ信号でもよい。
【0041】
また「アナログ処理ユニット」は、圧力センサや変位センサなどからアナログ信号を入力し、その信号をA/D変換したのち、その変換信号に基づいてユーザプログラム実行をし、その実行結果をアナログ信号として出力するものである。このようなカウンタユニット,アナログ処理ユニット,位置制御ユニットなどのある特定の機能を実行処理するユニットを「高機能ユニット」または「特殊機能ユニット」とも呼ばれることがある。この実施の形態ではこのように呼ばれる高機能ユニットや特殊機能ユニットにも適用が可能である。つまり、本発明で言うPLC用のユニットは、これらの高機能ユニットや特殊機能ユニットも含まれる。
【0042】
I/Oユニット3の内部構造は、図2に示すようになっている。すなわち、I/Oユニット3は、センサその他の入力機器からの信号を受信する外部入力回路11と、出力機器に所定の制御信号を出力する外部出力回路12を備えている。I/Oユニット3は、これら外部入力回路11に接続された入力機器(図示せず)から入力信号を入力するとともに,外部出力回路12に接続された出力機器(図示せず)に対して出力信号を出力することによりI/O情報の送受を行う。さらに、記憶手段としてのROM13,RAM14並びにフラッシュメモリ15と、その記憶手段に記憶されたプログラムを実行しI/Oユニット3自身の動作を制御するMPU16を備えており、それらはI/Oユニット3内の内部バスを介して接続されている。
【0043】
ROM13には、システムプログラムが格納される。システムプログラムとは、このI/Oユニット3内で実行されるシステム制御処理に関するプログラム情報であり、具体的には後述するユーザプログラム内のひとつひとつの命令自体の処理内容や、後述するライブラリ化を実行するために必要な制御処理内容などである。また、RAM14は、実行時にユーザプログラム等を格納するためのPRGメモリ領域14aと、I/Oユニット3のシステム条件を設定するためのシステムメモリ領域14bと、I/O情報を格納する変数メモリ領域(ワークエリア)14cを備えている。I/O情報は、例えば外部入力回路11から取り込んだ入力信号や、プログラム実行結果として外部出力回路12へ出力する出力信号などがある。
【0044】
さらに、フラッシュメモリ15には、入力されたRAM14上のユーザプログラムを電断時に保持するためのPRGメモリバックアップ領域15aを備えている。また、フラッシュメモリ15には、ライブラリ化したデータを記憶するライブラリデータ記憶領域15bと、その記憶させたライブラリデータを読み出すための情報を格納するライブラリ情報記憶領域15cを備えている。
【0045】
そして、MPU16は、I/Oユニット3に接続された入力機器と通信し(入力処理)、入力信号に沿ってRAM14上に展開されたユーザプログラムを適宜実行する。このユーザプログラムは、RAM14のPRGメモリ14aにあるものか、フラッシュメモリ15のライブラリ情報15cからRAM14のPRGメモリ14aに展開したもののいずれかである(詳しくは後述する)。そして、MPU16は、そのユーザプログラム実行の各命令内容を、ROM13に格納されたシステムプログラムを参照しながら処理する(ユーザプログラム実行処理)。そして、実行結果に基づいてI/Oユニット3に接続された外部出力機器へ出力信号を送信する(出力処理)。そして、I/Oユニット3は、この入力処理,ユーザプログラム実行処理,出力処理の3つの処理をサイクリックに繰り返し実行するようになっている。
【0046】
なお、出力処理のあとに周辺処理期間を設けて、4つの処理をサイクリック処理としてもよい。この場合に、周辺処理としては、ツールからの要求に対する処理,PLCの通信ユニットを経由して受けた要求処理,リモートIO通信などの処理などがある。また、入力処理と出力処理とは分けずに一連の処理としてもよい。さらに、サイクリック処理の最初に前処理を設けて、前処理,ユーザプログラム実行処理,入出力処理,周辺処理の4つの処理を繰り返し実行するようにしてもよい。
【0047】
なお、前処理は、例えばユニット自体の異常チェック処理などがある。また前処理に状態別処理も含ませることもできる。状態別処理とは、例えば後述するライブラリ実行フラグの有無やライブラリ読出し処理フラグの有無をチェックしたり、モード設定(プログラムモード/RUNモード)をチェックしたりする処理である。この前処理の状態別処理はフラグ状態またはモード状態でよって処理が分岐する。すなわち、前述のフラグが立っていなくてモードがRUNモードであれば、ユーザプログラム実行処理に進む(さらにその後は入出力処理に進む)し、各フラグが立っている状態(つまりフラグ有)やプログラムモードであれば、ユーザプログラム実行処理をせずに、そのフラグに対応した処理(フラグ実行処理)またはプログラミングモードに対応した処理に分岐して進む。
【0048】
このように、この状態別処理で処理フローが分岐するが、いずれにしても、その後には周辺処理で分岐解除になって、その後はまた前処理に戻る。結局は、前述のように4つの処理を繰り返し実行する。なお、後述する特殊リレーサービス処理は、サイクリック処理のなかの状態別処理およびフラグ実行処理で行われる。
【0049】
なお、MPU16の処理として、このサイクリック処理とは非同期に、CPUユニット2などとユニット間結合バスを介して情報の送受を行うこともできるようにしている。それは、この情報の送信または受信として、CPUユニット2からのI/O情報読み出し要求を自ユニットが受け、対応するI/O情報を返信する処理である(これは送受信処理)。
【0050】
ここで本発明では、RAM14に記憶されたユーザプログラム(ラダー言語などの汎用言語で作成されている)の一部又は全部をライブラリ化し、ツールからはアクセスできない記憶エリアとして本実施の形態ではフラッシュメモリ15に格納するようにした。ここで言う「ツールからはアクセスできない記憶エリア」は、このI/Oユニット3のフラッシュメモリ15に対しては、ツールからの読出コマンドを用意しないことで、ツールからアクセスできない記憶エリアを設けている。別方式として、ツールから読み出し要求があっても、I/Oユニット3側でその要求を処理しないようする方式がある。いずれにしても、I/Oユニット3のフラッシュメモリ15を読み出し禁止とするような構成にすればよい。
【0051】
これにより、ツールは、RAM14に格納されているデータ等を読み出しコマンドで読み出すことができるものの、フラッシュメモリ15に格納されたデータは読み出すことができない。そこで、ノウハウを含むプログラム部分をライブラリ化してフラッシュメモリ15のみに格納する(さらには、ノウハウを含むプログラム情報をRAM14から消去する、あるいは残さないようにする)ことにより、ノウハウを含むプログラム情報を確実にプロテクトすることができる。さらに、フラッシュメモリ15に格納する際には、ユーザが作成したラダー言語ではなく、実行オブジェクト化した状態で格納することにより、万一悪意にフラッシュメモリ15を解析などしてその内容を読み出されても普通に理解できない言語となっているし、また通常では逆コンパイルできないので、ノウハウを含むプログラム情報について漏洩することがなく、より安全性が高まる。もちろん、上記したようにツール5ではフラッシュメモリ15を読み出し参照することができないので、復元可能な状態のユーザプログラムのままで格納するようにしてもプロテクトとしては充分足りる。復元可能というのは、ラダー図状態まで復元することまたはニモニック状態まで復元することも含む。
【0052】
なお、ここで言うユーザとは、発明の背景の欄で記載した中間ユーザはもちろんのこと、場合によっては、メーカ(PLCの製造メーカ)や、エンドユーザの場合も有りうる総称的なものである。つまり、ユーザプログラムを開発することができたり、そのユーザプログラムをユニットにダウンロードしたり、ライブラリ化したりすること等ができる正当行為者等を含むものである。このことは、以後の説明でも同様である。
【0053】
上記した機能を実現するため、さらに、RAM14に格納したユーザプログラムをライブラリ化してフラッシュメモリ15に記憶させるライブラリ生成機能を備えている(MPU16により実現)。ライブラリ生成機能は、図3,図4で詳述する。ここで、ライブラリ化には「部品ライブラリ」と「全体ライブラリ」との2種類を想定していることを説明する。
【0054】
まず部品ライブラリについて説明する。この部品ライブラリは複数種類がある。一例としては、「メインプログラムから構成されるユーザプログラムの一部」を部品ライブラリ化する場合である。この場合は、その部品ライブラリ化の対象となるプログラムはサブルーチンプログラムとなる。つまりメインプログラムにはサブルーチンプログラムが含まれていて、そのサブルーチンプログラムを部品ライブラリとして扱えるようにする。ライブラリ化後のサブルーチンプログラムの実行は、メインプログラム実行時に専用命令によって部品ライブラリ化したサブルーチンプログラムを呼び出して実行することになる。
【0055】
また他の例としては、「サブルーチンプログラムのみから構成されるユーザプログラムの全部」を部品ライブラリ化する場合である。この場合は、部品ライブラリ化対象となる一つまたは複数のサブルーチンプログラムが、それぞれが部品ライブラリとしてのサブルーチンプログラムとなる。
【0056】
そして、ライブラリ化後のサブルーチンプログラムの実行は、のちに別途作成されるメインプログラムの実行時に専用命令によって、そのサブルーチンプログラムが呼び出して実行することになる。この2つの例のように、メインプログラムから呼び出されて実行される対象プログラムとしてライブラリ化したものを、部品ライブラリと呼ぶ。なお、この部品ライブラリに伴い、本実施の形態では、メインプログラムから希望の部品ライブラリを呼び出すための専用命令(詳細は後述する)を用意した。この部品プログラムをメモリに格納するのは、実施の形態では図4のST4〜ST7あたりで説明した。また実際のプログラム実行は、図10のST32,ST36,ST37で説明する。
【0057】
なお、この部品ライブラリの便利な点は、ユーザが多用する処理プログラム部分を部品ライブラリとしてサブルーチン化し、それを別途作成するユーザプログラム(メインプログラム)中でその部品ライブラリを呼び出して実行するように、専用命令をユーザプログラムの必要な箇所に挿入することで簡単かつ効率的にプログラムが組める。つまり、一度部品プログラムにしておくことで、それをその後のメインプログラム作成時に1種の応用命令的に活用できるわけである。
【0058】
また、このように部品ライブラリ化されたサブルーチンプログラムは、メインプログラムとは別々に存在しているので、メインプログラムの作成,編集の影響を受けることはない。また、ユニット提供者がアプリケーションのコアとなる処理部分だけを部品ライブラリ化して、この実施の形態のユニットをユーザに提供すれば、ユーザにてその部品ライブラリのプログラムを活用しながら自由にメインプログラムを作成することができ、システムに合った形で簡単にプログラムをカスタマイズすることができる。
【0059】
次に全体ライブラリについて説明する。これは普通のユーザプログラム(つまり、サブルーチンプログラムのみから構成されるような特別なユーザプログラムでないものを想定した。)の全体をライブラリ化したい場合には、そのユーザプログラム全体が、全体ライブラリの対象となり、これを1つのライブラリとして扱うことになる。そしてそのユーザプログラム全体を全体ライブラリ化する。その全体ライブラリを使用する際には、一つのひとかたまりのメインプログラムとして実行することになる。なお、この全体ライブラリ化のメモリ格納は、実施の形態での図4のST4〜ST7あたりで説明した。また全体ライブラリの実行は、実施の形態の図10のST34,ST35、ST36,ST37で説明した。このように、ひとつのメインプログラムと同等に扱うことから、前述の部品ライブラリに比して、全体ライブラリと呼ぶ。この全体ライブラリは、ユーザの制御プログラム全てをプロテクトしておきたい場合や、特定用途向けアプリケーションプログラムすべてをプリインストールした形でユニット提供者がユーザに「特殊用途向けの○○制御ユニット」という形式で提供することなどに利用できる。
【0060】
次に、ライブラリ生成機能について説明する。まず、ライブラリ生成機能に関与するRAM14とフラッシュメモリ15の関係は、図3に示すようになっている。RAM14のPRGメモリ領域14aは、ツールで作成したユーザプログラムを中間コード(中間言語)に変換してから格納する領域である。RAM14の変数メモリ14cの変数メモリ領域に、中間言語で格納したプログラムがライブラリ化するプログラムであるか否のフラグをツールから設定する。またシステムメモリ領域14bには、ライブラリ種別(全体ライブラリ/部品ライブラリ)等のライブラリ化する際の各種システム設定情報がツールから設定される(後述のST2で述べる)。これらの設定は、I/Oユニット3がプログラミングモードにて行われる。
【0061】
そしてこの後、I/Oユニット3をいったんRUNモードに切り替える。RUNモードにするのは、RAM14のPRGメモリ領域14aに格納したユーザプログラムを、コンパイルするためである。ユーザプログラムを一度RUNさせて生成された実行オブジェクトのデータ(機械語に翻訳されたユーザプログラム)は、RAM14の変数メモリ14cの実行オブジェクト領域に格納される(なお、後述するが、ここに格納した実行オブジェクトは、対象のユーザプログラムの種別が部品ライブラリである場合に、図4のST5で利用される。さらに、ユーザプログラムのコンパイル時に同時に生成されるサブルーチンテーブルなどのプログラム実行に必要な情報もシステムメモリ領域14bに格納される)。
【0062】
また、一度RUNモードにしたときには、MPU16の処理にて、RAM14のPRGメモリ領域14aのユーザプログラムが、フラッシュメモリのPGMメモリバックアップ領域15aに格納される。これはRAM14のPRGメモリのユーザプログラムを必要なときに再現するためのものである。例えば一例として、プログラムのライブラリ化をすべく、作成中のプログラムを編集しユニットにダウンロードしRUNモードにすることを繰り返し行っている時などに、ユニットが電源オフしたことなどによって編集中のユーザプログラムがRAM14から消去または不定状態に変化しても、ユーザが必要に応じて前回ダウンロードした編集プログラムを再現するのに再現利用できるように、バックアップをしておくものである。
【0063】
なお、ライブラリ化の処理終了後には、このフラッシュメモリのバックアップエリアの内容を消去し、RAM14に再現展開して、ツールから読み出しできないようにしている。なお、内容消去の代わりに、実施の形態で説明したように、秘密のものでない別途のプログラム(END命令だけのプログラムなど)に更新することでもよい。
【0064】
さらに、このRAM14の中身は、ユニットを電源オフすることですべて消去されるようになっている。そのため、いったんユーザプログラムがRAM14に格納されても、ライブラリ化終了後にユニットの電源をオフすることでユーザプログラム(秘密にしたいプログラム部分を含むプログラム)は消去され、後からツールでRAM14にアクセスしたとしても秘密にしたいプログラムが読み出されるおそれはない。また、フラッシュメモリ15のほうは、ユニットが電源オフしても記憶内容は消去しないようになっている。
【0065】
また、RAM14の変数メモリ領域14cには、図4のST1等で説明するライブラリ化を実行するためのフラグ(ライブラリ化実行フラグ)が格納される。このフラグは、ユーザがツールでユーザプログラムを作成し、I/Oユニット3にダウンロードしたあとに、ライブラリ化を実行したいときに、ライブラリ化実行フラグをセットする。
【0066】
係る状態において、ライブラリ生成機能は、図4に示すフローチャートをMPU16が実行するようになっている。I/Oユニット3のモードを、RUNモードからプログラミングモードに戻すと、MPU16は、ツールで作成したユーザプログラムについて、RAM14の変数メモリ領域14cのライブラリ化実行フラグを読み出す。MPU16は、読み出したフラグがONの場合(ST1)に、RAM14のシステムメモリ領域14bに格納された各種システム設定を読み出し(ST2)、読み出した設定内容からライブラリ種別が部品ライブラリか全体ライブラリかを判断する。実際にはライブラリ種別が、部品ライブラリの指定か否かを判断する(ST3)。
【0067】
なお、部品ライブラリ化しようとしているプログラムは、ツールで作成することになるが、その作成後にライブラリ化処理する方法は、少なくとも2通りある。
【0068】
第1の方法は、ツールで対象プログラムを特定してから、部品ライブラリ対象部分だけをI/Oユニット3にダウンロードする方法である。この場合は、前述したように、部品ライブラリ化する場合に当たり、ライブラリ化対象はRAMに格納されたサブルーチンプログラムから構成されるユーザプログラム全体となる。
【0069】
また、第2の方法は、ツールで作成したユーザプログラム(ライブラリ化する部分、市内部分を含んだプログラム)をすべてI/Oユニット3にダウンロードし、そのあとツールでライブラリ対象部分を特定する方法である。この場合は、RAMに格納された一部のライブラリ対象部分だけを部品ライブラリ化することになる。
【0070】
部品ライブラリの指定の場合、つまりライブラリ対象が、ユーザプログラムの一部または全部を部品ライブラリ化する場合には、ステップ4に飛び、MPU16は、RAM14のPRGメモリ領域14aに格納された対処のユーザプログラムをMPU16が読み出すとともに、読み出したプログラムを中間言語の状態のままフラッシュメモリ15のライブラリデータ記憶領域15bに格納する(ST4)。このステップ4は、実行オブジェクト化される前のユーザプログラムをフラッシュメモリ15上に格納するために行なわれる。この内容は逆コンパイル可能なので、必要に応じてラダー図状態まで復元することも、ニモニック状態で見ることもできる。
【0071】
次いで、MPU16は、RAM14の変数メモリ領域14cの実行オブジェクト用領域に格納されたそのユーザプログラムの実行オブジェクトを読み出すとともに、その実行オブジェクト(機械語に翻訳されたユーザプログラム)をフラッシュメモリ15のライブラリデータ記憶領域15bに格納する(ST5)。ここでは、前述したようにI/Oユニット3をRUNモードに切り替え、ユーザプログラムを一度RUNして生成された実行オブジェクトを前もって、RAM14の変数メモリ領域14cの実行オブジェクト用領域に格納するようにしたが、これに限らず、前もってコンパイルして格納せずに、このステップ5の中で、改めてRAM14のユーザプログラムをコンパイルし、コンパイル後の実行オブジェクトをフラッシュメモリ15のライブラリデータ記憶領域15bに格納するようにしてもよい。この格納内容は、普通に理解できない言語となっているし、また逆コンパイルできないので、ラダー図状態またはニモニック状態まで復元することができない。
【0072】
また、この例では、ST4とST5とで二重にユーザプログラムをライブラリデータ記憶領域15bに格納、つまり、実行オブジェクト化される前のユーザプログラムと実行オブジェクト化された後のユーザプログラムとの2つをライブラリデータ記憶領域15bに格納しているが、ST4またはST5の一方を省略することもできる。
【0073】
さらに、MPU16は、対象となるユーザプログラムのコンパイル時に生成されたサブルーチンテーブルなどのプログラム実行に必要な情報をRAM14のシステムメモリ領域14bから読み出すとともに、フラッシュメモリ15のライブラリ情報記憶領域15cに格納する(ST6)。サブルーチンテーブルは、サブルーチンと、それぞれのサブルーチンに付けられた番号と、それぞれが格納されたフレッシュメモリのアドレス範囲などとの関連付け情報が含まれている。さらに、その他のライブラリ情報を生成し、フラッシュメモリ15のライブラリ情報記憶領域15cに格納する(ST7)。このライブラリ情報としては、例えば、ライブラリを認識するためのコードであるライブラリIDや、ユーザ等がわかりやすくするために、登録ライブラリに付加した固有の名称(ライブラリ名)や、ライブラリ内で特殊な命令を使用している場合の参照情報テーブル(ライブラリ命令テーブル)等各種の情報がある。このライブラリ情報は、後述するように正規のユーザがメモリカードにバックアップする場合やメモリカードからダウンロードする場合に利用される。また、ライブラリIDやライブラリ名についてはライブラリ化処理の際に、ユーザがツールで予め設定し、RAM14のシステムメモリ領域14bに格納しておいたものを読み出すことにより生成される。ライブラリ命令テーブルは、ライブラリ化処理の際に行われるユニットシステム処理で作られる。さらに、上記した予め記憶・設定された情報以外にも、例えばユーザプログラムや実行オブジェクトを格納したライブラリデータ記憶領域内のアドレスやポインタなどのユーザプログラム等を読み出すための情報もライブラリ情報として格納される。
【0074】
その後、ライブラリIDは読み出し可能なRAM14に残ったままなので、正規のユーザ以外に利用されないようにライブラリIDを初期化後、ライブラリ化実行フラグをOFFにして、ライブラリ化の全体処理を終了する(ST8)。なお、ライブラリIDを消去する旨を説明したが、ライブラリID以外のライブラリ情報も同じように初期化して消去してもよい。なお、RAM14に格納されたユーザプログラム等をライブラリ化(部品ライブラリ化)してフラッシュメモリ15に格納する際の処理イメージの一例としては、例えば、図5に示すようなものとなる。
【0075】
一方、ライブラリ種別が全体ライブラリの場合には、MPU16の処理としてはステップ3の分岐判断でNOとなるのでステップ9に飛び、MPU16がRAM14のPRGメモリ領域14aに格納されたユーザプログラムを読み出すとともに、読み出したユーザプログラムをフラッシュメモリ15のライブラリデータ記憶領域15bに格納する(ST9)。次いで、MPU16がRAM14のシステムメモリ領域14bに格納されている各種システム設定を読み出すとともに、フラッシュメモリ15のライブラリ情報記憶領域15cに格納する(ST10)。さらに、MPU16によりその他のライブラリ情報を生成し、フラッシュメモリ15のライブラリ情報記憶領域15cに格納する(ST11)。このライブラリ情報としては、例えば、ライブラリを認識するためのコードであるライブラリIDや、ユーザ等がわかりやすくするために、登録ライブラリに付加した固有の名称(ライブラリ名)や、ライブラリ内で特殊な命令を使用している場合の参照情報テーブル(ライブラリ命令テーブル)等各種の情報がある。このライブラリ情報の作成処理は部品ライブラリの場合と基本的に同様である。その後、ライブラリ化実行フラグをOFFにして、ライブラリの全体処理を終了する(ST8)。なお、RAM14に格納されたユーザプログラム全体をライブラリ化(全体ライブラリ化)してフラッシュメモリ15に格納する際の処理イメージの一例としては、例えば、図6に示すようなものとなる。
【0076】
なお、このようにライブラリ化されてフラッシュメモリに格納されたライブラリプログラム(ST4,ST5,ST9で格納されたプログラム)は、図8,図9,図10で説明する実行環境にて実行される。
【0077】
最後に、RAM14の記憶内容とフラッシュメモリ15のPRGメモリバックアップ領域の記憶内容とを消去するが、この消去はさまざまな方法がある。一例を挙げると、ST8の後、ユーザは、END命令だけのユーザプログラムをツールで作成し、それをI/Oユニット3にダウンロードする。すると、RAM14のPGMメモリ14aにEND命令だけのユーザプログラムが格納される。このときライブラリ化処理をしたときの前回のユーザプログラムはEND命令の上書き格納によって消去され、新しくEND命令だけのユーザプログラムが残ることになる。そして、I/Oユニット3をRUNモードに切り替えることで、フラッシュメモリ15のPRGメモリバックアップ領域15aのほうにもEND命令だけのユーザプログラムがバックアップとして上書き記憶される。このとき前回のライブラリ化対象のプログラムは消去される。この後I/Oユニット3の電源をオフすると、RAM14の記憶内容は消去する。このようにすることで、ライブラリ化対象のプログラムを読み出し可能なメモリエリアから消し去ることができる。
【0078】
他の例としては、ST8のライブラリ化実行フラグをOFFして、ライブラリ化全体処理の終了とともに、RAM14aとフラッシュメモリのPRGメモリバックアップ領域15aに残っているライブラリ化対象のユーザプログラムが、I/Oユニット3のシステム的な処理によって消去するようにしてもよい。また他の例としては、ST8の前か後のいずれかで、ツールから消去操作をすることでも実現できる。
【0079】
次に、MPU16に設けられたライブラリ生成機能を稼動させ、上記した手順によりユーザプログラムをライブラリ化したI/Oユニット3を用い、実際に制御を行う場合のライブラリ化したプログラムの実行について説明する。
【0080】
まず、ユーザ(前述のライブラリ化を施したユーザとは別のユーザを想定している)がツールにより、ユーザプログラムを新規で作成する。このときフラッシュメモリ15に部品ライブラリが格納されていて、その部品ライブラリを利用したい場合、メインプログラム(ラダー言語で作成)に、サブルーチンの呼び出しのための専用命令を書く。ここでは、[LIB A B C]という専用命令を用意した。つまり、「LIB」がフラッシュメモリ15に格納した部品ライブラリ(サブルーチンライブラリ)の呼び出し命令であり、「A」がフラッシュメモリ15内のライブラリサブルーチンを特定するライブラリサブルーチン番号であり、「B」がライブラリに入力する引数データのエリアを指定するための入力CH先頭番号であり、「C」がライブラリから出力される引数データを格納するエリアを指定するための出力CH先頭番号である。Aのサブルーチン番号は、ライブラリ化を施したユーザが、I/Oユニットの操作マニュアルなどにサブルーチンプログラムの処理内容やそのサブルーチン番号などを解説しておき、それを参照することで知ることができる。また、引数データのエリアB,Cは、ユーザプログラムを作成しているユーザがI/Oユニット3内のデータメモリ(図2では図示せず)などに設定すればよい。なお、ユーザプログラムを作成したのち、ツールからI/Oユニット3に対してポートを介してダウンロードする。ダウンロードすると、ユーザプログラムはRAM14に格納される。そしてI/Oユニット3をRUNモードにすることで、RAM14に格納されたユーザプログラムは、バックアップのためにフラッシュメモリのPRGバックアップエリアに格納されるとともに、コンパイルされ実行オブジェクトとして、RAM14の実行オブジェクト格納手段に格納する。なお、RUNモードのイニシャル処理については、図10で詳述する。
【0081】
次いで、RUNモードのI/Oユニット3は、MPU16によって、RAM14の変数メモリの実行オブジェクト領域に格納されたメインプログラムを実行する。実行中に上記専用命令が存在した場合、MPU16はそのサブルーチンプログラムのライブラリサブルーチン番号を認識し、そのサブルーチン番号に基づいてフラッシュメモリ15内のライブラリ情報記憶領域15cに格納したライブラリ情報中のサブルーチンテーブルを参照し、該当する部品ライブラリがフラッシュメモリにおける格納場所を認識し、当該部品ライブラリを起動する。このときプログラムカウンタは、ユーザプログラム(メインプログラム)のRAM14のPGMメモリ上のアドレスから、フラッシュメモ15の部品ライブラリが格納されているライブラリデータ領域の特定のアドレスに切り替わる。この部品ライブラリの起動時は、ライブラリ用サブルーチンワークテーブルに戻りアドレス等の必要なデータがスタックされる。そして、ライブラリ内のサブルーチンからメインプログラム実行に復帰する場合に、スタックしていた戻りアドレスを、プログラマブルカウンタに入れることで、メインプログラムの続きから処理実行される。
【0082】
上記した処理を実行する具体的な処理機能は、図8,図9に示すフローチャートのようになっている。まず、メインプログラムをMPU16が実行している。メインプログラムの実行中に専用命令(LIB)が出現すると、図8に示すライブラリサブルーチン実行処理がMPU16にて起動する。そして、MPU16がまず指定ライブラリが指定されているか否かを判断し(ST20)、指定されている場合には、サブルーチン実行後にメインプログラムに戻るための情報を残すべく、ライブラリ実行用ワークにメインプログラム実行状態(実行アドレス等)を退避(スタック)する(ST21)。
【0083】
次いで、MPU16にて、PC(プログラムカウンタ)をメインプログラム実行アドレス空間からライブラリ実行アドレス空間へ切り替え(ST22)、ライブラリ化されたプログラムを実行する(ST23)。つまり、ライブラリ情報に従い、指定された部品ライブラリをフラッシュメモリから読み出して、そのプログラムを実行する。一方、指定ライブラリがない場合には、ステップ20の分岐判断でNOとなるので、ステップ24に飛び、命令エラー処理を実行後、処理を終了する(ST25)。
【0084】
また、ステップ23のライブラリ実行によるライブラリサブルーチンを完了し、元のメインプログラムへ復帰する場合は、MPU16は図9に示すフローチャートに従って処理される。なお、本実施の形態では、この復帰処理は通常のサブルーチンからの復帰処理と共用している。通常のサブルーチンプログラムとは、RAM14に格納するラダーメインプログラムの一部として作成されるもので、ライブラリ化してフラッシュメモリに格納されるサブルーチンプログラムではない。そのため、まず、現在のサブルーチン処理がライブラリ実行か否かを判断する(ST26)。そして、ライブラリ実行の場合には、待避させていたライブラリ用ワークのメインプログラム実行状態(実行アドレス等)から復帰する(ST27)。すなわち、ステップ21で退避したデータ(メインプログラム実行状態)を取得する。そして、取得したデータに基づき、プログラムカウンタをメインプログラム実行アドレスへ切り替える(ST28)。これにより、復帰処理が完了し、メインプログラムを順次実行するようになる。
【0085】
なお、通常のサブルーチンからの復帰の場合には、ステップ26の分岐判断でNOとなるので、ステップ29に飛び、通常サブルーチンワークからデータ復帰(サブルーチン処理を実行する前に退避処理していたデータを取得)をし、復帰処理を完了することになる。
【0086】
一方、全体ライブラリの実行は、ライブラリ化したプログラムそのものをメインプログラムとして実行するものである。これは前述の通常のユーザプログラムで部分ライブラリを実行する場合と、その方法が違う。つまり、通常のユーザプログラム実行は、RAM14のPRGメモリ領域14aに格納されているため、その領域からメインプログラムとしてユーザプログラムを読み出し、コンパイルしてプログラム実行するが、この全体ライブラリを実行する場合には読み出し対象のユーザプログラムがRAM14には存在せず、フラッシュメモリ15にライブラリとして格納されているため、そのフラッシュメモリ15に格納されたプログラムをコンパイル対象とし、コンパイル後プログラムを実行することになる。
【0087】
なお、本実施の形態におけるI/Oユニット3は、部品ライブラリと全体ライブラリのプログラムの利用形態はもちろん、係るライブラリ化をしない通常のユーザプログラムの利用形態のいずれも実施可能にしている。そのため、起動後のRUNイニシャル処理をする。ここでRUNイニシャル処理について図10に示すフローチャートを用いて説明する。
【0088】
ユーザ(ライブラリ化を施したユーザとは別のユーザ)がツールにより、ユーザプログラムを作成してI/Oユニット3のRAM14のPGRメモリ領域14aにダウンロードして実行させる場合、作成したユーザプログラム中で部品ライブラリを呼び出して利用するなら、RAM14のシステムメモリ領域14bのライブラリの指定情報を部品ライブラリに設定する。もしライブラリを利用せずに、通常のユーザプログラム(通常のサブルーチン処理をする場合も含む)だけを処理するのであれば、RAM14のシステムメモリ領域14bのライブラリの指定情報を部品ライブラリでも全体ライブラリでもない通常のユーザプログラム実行に設定する。
【0089】
そしてその後、I/Oユニット3はプログラムモードからRUNモードに切り替わる。なお、前述のようにRUNモードになると、MPU16は、フラッシュメモリ15のバックアップ領域15aの方に、RAM14のPGRメモリ領域14aにダウンロードされたユーザプログラムをバックアップ記憶させる。また、電源オン時など、フラッシュメモリ15のバックアップ領域15aにユーザプログラムが格納されていて、RAM14のPGRメモリ領域14aが空の場合には、MPU16は、フラッシュメモリ15のバックアップ領域15aのユーザプログラムを、RAM14のPGRメモリ領域14aに展開しておく。
【0090】
RUNモードに切り替わると、まず、MPU16は、RAM14のシステムメモリ領域14bに格納されたシステム設定を読み出し、ライブラリの指定があるか否かを判断する(ST30,ST31)。そして、ライブラリの指定がない場合には通常のユーザプログラムのみの実行であるので、RAM14のPGRメモリ領域14aに格納されたプログラム(ユーザプログラム)をコンパイル対象にセットする(ST32)。
【0091】
また、ライブラリの指定があった場合(ステップ31の分岐判断でYES)でも部品ライブラリの設定の場合(ステップ33の分岐判断でNO)には、メインプログラムはRAM14に格納されたユーザプログラムから実行するため、ステップ32に飛び、上記した処理を実行する。なお、このとき、部品ライブラリプログラムをコンパイルしないのは、図4のST5の処理で、すでにコンパイルして実行オブジェクトの状態でフラッシュメモリに格納しているからである。図4の処理において、ST5をせずにST4のみしていた場合には、図10では図示していないが、フラッシュメモリにST4で格納されたユーザプログラム(実行オブジェクト化する前のもの)を読み出してコンパイルし、フラッシュメモリに実行オブジェクトの状態で格納する処理を増やせばよい。
【0092】
そして、ライブラリの指定があり(ステップ31の分岐判断でYES)、全体ライブラリの設定の場合(ステップ33の分岐判断でYES)には、フラッシュメモリ15内のライブラリ情報記憶領域15cに格納された命令テーブルシステム設定をセットする(ST34)。これにより、コンパイル処理対象の全体ライブラリがフラッシュメモリ15内のどこに格納されているか等がわかる。そして、フラッシュメモリ15のライブラリデータ記憶領域15bに格納されたプログラム(全体ライブラリ)をコンパイル対象にセットする(ST35)。
【0093】
上記したステップ32或いはステップ35を実行後、MPU16は、フラッシュメモリ15のライブラリデータ記憶領域15bに格納された対象ライブラリプログラムを読み出してコンパイルを実行し(ST36)、実行オブジェクトの状態でRAM14に格納する。その後は、通常のRUNモードとしてのユーザプログラムの実行を行う。なお、上記したステップ34,35,36が全体ライブラリの実行のための処理機能である。換言すると、全体ライブラリのみに対応しているI/Oユニットの場合には、ステップ30から33までの処理ステップが不要となる。
【0094】
上記したようにして、部品ライブラリや全体ライブラリの生成/読み出し実行ができる。また、部品ライブラリの場合には、ライブラリ化するプログラムは図3のところで述べたように一旦RAM14に格納するが、ライブラリ化処理を完了した後は係るRAM14に格納したプログラムは不要となり、消去される。そして、実質的なユーザプログラムは、RAM14に格納したメインプログラムとフラッシュメモリ15に格納した部品ライブラリであるため、部品ライブラリ化したプログラム容量分だけ、RAM14の領域を使わなくて済む(その分はフラッシュメモリに格納される)ので、RAM14にとって使用できるプログラム容量を増やすことができる。つまり、部品ライブラリ化するプログラムと、RAM14に格納するユーザプログラムの配分を適宜に設定することにより、実質的にRAM14のPGRメモリ領域14aのメモリ容量以上のサイズのユーザプログラムを作成することができる。
【0095】
ところで、いったんライブラリ化したプログラムは、アクセス不可なフラッシュメモリのほうにのみ記録され、その内容はツールなどから読み出しはできないため、どのプログラムをライブラリ化してフラッシュメモリ15に登録したかわからなくなる。そこで本実施の形態では、ライブラリ名の読み出し機能を設けた。
【0096】
すなわち、図11に示すフローチャートを実施する機能をMPU16に持たせている。はじめに、ユーザがライブラリ名を読み出したい場合、ツールを用いてRAM14の変数メモリ14cに存在するライブラリ名読み出しフラグを立てる。そして、I/Oユニット3は、サイクリック処理の中で特殊リレーサービス処理を実行する。その特殊リレーサービス処理内のひとつの処理として、まず、ライブラリ名読み出しフラグを読み出し(ST41)、読み出し指定がある(フラグがON)場合(ステップ42の分岐判断でYES)には、ライブラリの有無をチェックする(ST43)。そして、ライブラリが存在する場合(ステップ43でYES)には、フラッシュメモリ15内のライブラリ名をRAM14の変数メモリ領域14cの予め決まった領域へセットする(ST44)。これにより、ユーザはツールを用いてRAM14の予め決まった領域を参照し、読み取りすることにより、ライブラリ名を取得することができ、ライブラリ化したプログラムの内容を判断することができる。
【0097】
次に、上述したI/Oユニット3の各機能を応用した実施の形態を説明する。上述したI/Oユニット3のRAM14やフラッシュメモリ15に記憶された情報は、ユニット間結合バスを介して接続されているCPUユニット2に装着したメモリカード(例えば、コンパクトフラッシュメモリ等)にバックアップすることができる。もちろん、メモリカードの装着はCPUユニットに限ることは無く、当該I/Oユニットにメモリカード装着構造を加えてもよいし、その他メモリカードを装着し、I/OユニットのRAM14やフラッシュメモリ15に対してデータの読み書きを制御する機能を備えたユニットを別途新しく設けても良い。いずれかのユニットを利用して、I/Oユニット3のRAM14やフラッシュメモリ15に記憶されたプログラム情報のバックアップを採る(アップロードする)ことで、さまざまな応用ができる。また、メモリカードに格納した情報を、I/Oユニット3のRAM14やフラッシュメモリ15に格納する(ダウンロードする)ようにしてもさまざまな応用ができる。
【0098】
そして、このバックアップ機能を利用することにより、フラッシュメモリ15に格納したライブラリをメモリカードに格納することができ、そのメモリカードを他のPLCに実装するとともに、ダウンロードすることにより、ライブラリ化したプログラムを係る他のPLCに組み込むことができてしまう。
【0099】
そこで、本実施の形態では、正規のユーザ以外の人が不正にバックアップをして係る他のPLCに組み込むことができないように、アップロード時のプロテクト機能を設けた。これにより、ライブラリの不正使用を抑止(メモリカードへのバックアップ防止)することができる。そして、具体的な処理機能は以下の通りである。
【0100】
まず、メモリカードへのアップロード(ユニット→メモリカード)操作は、ユーザがRAM14のシステムメモリ領域14bのシステム設定(図示せず)にツールを使ってライブラリIDを格納し、次にユニット割付リレーエリア(CPUユニットとI/Oユニット間でサイクリックにデータ交換するエリア)のフラグ操作により行うようにした。そして、図12に示すように、バックアップファイル形式は、番号とファイル名を関連付けたものとし、フラグ操作はユニットデータアップロードとユニットデータダウンロードを用意し、いずれも「0→1」に変わった際に、メモリカードへの書き込み/読み出しを行うようになる。さらにステータス表示としては、メモリカード転送エラーと、転送Busyが用意される。
【0101】
これらステータス表示は、その状態を表すデータとしてユニット内に格納される。この格納されたデータをもとにユニット外部へ報知(LED等の表示)したり、ツールで表示したりできる。なお、メモリカードへのアップロード操作やダウンロード操作(後述)に用いるフラグ操作対象のフラグはI/Oユニット3内の所定部分(例えば、変数メモリ14c)に設ける。このフラグ操作対象のフラグは、CPUユニットとI/Oユニットの間でサイクリックにデータ交換するエリアに設けると良い。このようにすれば、CPUユニットの所定エリア(上述のユニット割付リレーエリア相当)をフラグ操作することでアップロード/ダウンロード操作ができ、CPUユニットに接続されるツール以外の機器(例えば、プログラマブル表示器)からもアップロード/ダウンロード操作が可能となる。
【0102】
この状態におけるメモリカードへのアップロード機能は、以下のようにMPU16にて実行(特殊リレーサービス処理のひとつとして)される。すなわち、メモリカードへデータを書き込む時、以下の情報▲1▼から▲3▼をライブラリ関連データとセットで書き込む。
【0103】
▲1▼ヘッダー情報
▲2▼バックアップデータ(ライブラリ関連データ)
▲3▼SUM値
【0104】
そして、アップロード対象の保存データをメモリカードに書き込む前に、メモリカードに「unit**.prm」(**はユニット番号)という名称のファイルを生成し、ヘッダー情報を書き込む。ヘッダー情報は、図13に示すように、ユニットタイプ情報を記入したユニット形式と、ユニットのソフトバージョン情報と、最大内部パラメータ長を備えてなる。なお、図13において、バックアップデータは、アップロード対象のユーザプログラムやライブラリ等である。また、ライブラリIDもバックアップデータとしてメモリカードへ格納される。なお、前述のヘッダー情報及びバックアップデータのデータ構造は、ユーザプログラムを作成・編集するツールでは、解釈できない構造となっているため、該ツールを利用してラダー言語やその他の言語プログラムに復元することはできない。
【0105】
そして、I/Oユニット3のフラッシュメモリ15内に保存されているライブラリIDとシステム設定に設けてあるライブラリID(アップロード操作としてユーザがツールを用いて入力したもの)の照合をかけて一致しているか否かを判断し、一致している場合のみメモリカードへの書き込みを許可し、処理を実行する。これにより、第三者により本ライブラリを搭載してあるユニットから別のメモリカードへ複写等されることを防止し、さらに、アップロードしたデータを再度別ユニットにダウンロードして使用することを防ぐ(コピープロテクト)ことができる。よって、本アップロード操作は、本ライブラリのライブラリIDを知っているユーザのみ操作が可能となる。
【0106】
すなわち、ライブラリIDは、フラッシュメモリ15に格納されているため、I/Oユニット3にアクセスしても知得することはできない(ライブラリ化処理をする際には、RAMにライブラリID等が格納されるが、図4のステップ8の実行によりライブラリIDが初期化される)。よって正規のユーザ以外はライブラリIDを知らないので、当該ライブラリIDの入力した人は正規のユーザと判断し、メモリカードへのバックアップを許容する。そのため、正規のユーザ以外が、メモリカードにバックアップすることにより、ライブラリ化されたプログラム等を不正取得されることが防止できる。
【0107】
なお、上記したように、この正規のユーザのチェックのために、予めRAM14にライブラリIDを登録するので、そのまま残しておくと、ライブラリIDを不正取得させるおそれがある。そこで、バックアップ処理完了後或いは正規のユーザであることを確認後などの所定のタイミングで、RAM14に格納したライブラリIDを消去する。
【0108】
一方、ダウンロード機能(メモリカード→ユニット)は、以下の通りである。ユニットへのダウンロード操作は、ユーザがユニット割付リレーエリアの所定フラグを操作することで実行される。具体的なダウンロード処理は、特殊リレーサービス処理のひとつとしてMPU16にて実行される。すなわち、ダウンロード処理時に、I/Oユニット3は最初にメモリカードからヘッダー情報を読み込む。この時、メモリカード上に該当するファイル名のファイルが見つからない場合や、ヘッダー情報に格納されているユニット形式が自ユニットの形式と一致しない場合には、エラーが発生したと判断し、メモリカード転送エラーフラグをONして終了する。
【0109】
このように、一旦メモリカードにアップロード(バックアップ)したライブラリを、所定の手順に従ってI/Oユニット3にダウンロードすることができる。そして、このダウンロードする際にI/Oユニット3は、アップロードした際のI/Oユニット3と同一でも良いし、他のI/Oユニット3でもよい。同一のI/Oユニット3の場合には、アップロードは、文字通りデータ(情報)のバックアップとなる。また、他のI/Oユニット3にダウンロードする場合には、既にユーザ等が作成しライブラリ化したプログラムをパッケージ化(部品化)することで、他のI/Oユニット3におけるプログラム開発,実装に利用できる。
【0110】
つまり、PLCや、PLC用のユニットの製造メーカや、そのPLC,ユニットを購入し、産業機械に組み込むユーザなどにとっては、各取引先に対して、ユーザプログラム,ライブラリを組み込んだユニット等の提供をするのみならず、ライブラリ生成手段等を備えた本発明のユニット,PLCを既に持つ相手に対しては、上記バックアップしたメモリカードを提供するような事業形態をとることもできる。もちろん、同一ユーザ内での他のI/Oユニットにダウンロードすることもできる。
【0111】
その場合でも、メモリカードに格納されたライブラリIDを知らない人は、メモリカードを用いてフラッシュメモリ15にライブラリをダウンロードされたI/Oユニットから、再度メモリカードにバックアップすることはできない。
【0112】
なお、上記した実施の形態では、I/Oユニットに適用した例を説明したが、本発明はこれに限ることは無く、CPUユニットやその他のユニットに適用することができるのはもちろんである。CPUユニットに適用した場合でも基本的な構成はほぼ同じであるが、IOユニットで説明した外部入力/出力回路をCPUユニットでは持たないことがあり、代わりにユニット間結合バスのインタフェース回路をもつ構成となる。
【0113】
また、「リモートIO用マスタユニット」に適用した場合には、IOユニットで説明した外部入力/出力回路が、リモートIO用スレーブユニットとのインタフェース回路となる。適用可能なユニットしては、実施の形態の中で述べた「カウンタユニット」,「アナログユニット」,「位置制御ユニット」なども含まれる。位置制御ユニットへの適用は、実施の形態中の図2の外部入力回路11から入力する信号が位置情報を示すアナログ信号またはパルス信号となり、プログラム実行される内容が位置決めに関する制御となり、外部出力回路12から出力される信号が位置決めのための命令信号でパルス信号またはアナログ信号となる。さらには、それら各ユニットを含んで構成されるPLCも本発明に含まれる。
【0114】
更にまた、本発明に係るPLCは、上記のような複数のユニットを連結して形成されるPLCに限られるものではなく、一体型のものでも、ユーザプログラムをライブラリ化する機能等を備えていれば本発明に含まれる。「一体型PLC」とは、マイクロPLCとも呼ばれるPLCであり、実施の形態で説明した電源ユニットがもつ機能、CPUユニットの機能、I/Oユニットの機能それぞれがユニット毎に分離していなくて、一つのユニットケースに集約して内蔵されているPLCのことである。
【0115】
【発明の効果】
以上のように、この発明では、ユーザが作成するプログラムの一部または全部をライブラリ化してツールでのアクセスができない第2の記憶手段に格納するようにしたため、プロテクトを簡単かつ確実にかけることができる。
【図面の簡単な説明】
【図1】システム全体の一例を示す図である。
【図2】I/Oユニットの内部構造の一例を示す図である。
【図3】RAMとフラッシュメモリのデータ構造を説明する図である。
【図4】ライブラリ生成機能の一例を説明する。
【図5】部品ライブラリ化の一例を示す図である。
【図6】全体ライブラリ化の一例を示す図である。
【図7】部品ライブラリのプログラム実行時の一例を示す図である。
【図8】部品ライブラリの読み出し機能を説明するフローチャートである。
【図9】復帰処理機能の部品ライブラリの読み出し機能を説明するフローチャートである。
【図10】全体ライブラリの使用(実行)機能等を説明するフローチャートである。
【図11】ライブラリ名読み出しプログラムを説明するフローチャートである。
【図12】メモリカードへのバックアップ/アップロード機能を説明する図である。
【図13】メモリカードへ格納するデータ構造の一例を示す図である。
【符号の説明】
1 電源ユニット
2 CPUユニット
2a メモリカードスロット
3 I/Oユニット
5 ツール
11 外部入力回路
12 外部出力回路
13 ROM
14 RAM
15 フラッシュメモリ
16 MPU
Claims (12)
- PLCを構成するユニットであって、
同一のユニット内に、
ユーザプログラムを記憶する第1の記憶手段と、
前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、
前記第1の記憶手段に格納された前記ユーザプログラムを実行するユーザプログラム実行手段と、
前記第2の記憶手段に格納されたライブラリ化されたプログラムを実行するプログラム実行手段とを備え、
前記第2の記憶手段は、前記ユニット内に実装されるとともに、前記ユーザプログラムをアップロードするツールではアクセス不可としたことを特徴とするユニット。 - 前記ライブラリ生成手段は、前記ユーザプログラムを実行オブジェクト化して前記第2の記憶手段に格納するようにしたことを特徴とする請求項1に記載のユニット。
- 前記ライブラリ化されたプログラムは、サブルーチンライブラリであって、
前記プログラム実行手段は、前記第1の記憶手段に格納されたメインユーザプログラム中に前記サブルーチンライブラリ呼び出しの専用命令が存在する場合に、指定されたサブルーチンライブラリを実行するとともに、前記メインユーザプログラムに復帰する機能を備えたことを特徴とする請求項1または2に記載のユニット。 - 前記ライブラリ化されたプログラムは、前記ユーザプログラムの全体であって、
前記プログラム実行手段は、システム稼動の際に、前記第2の記憶手段に格納されたライブラリ化されたプログラムを実行可能な状態にすることを特徴とする請求項1または2に記載のユニット。 - 前記ライブラリ生成手段は、ライブラリ化するプログラムを特定するためのライブラリ名を関連付けて第2の記憶手段に格納する機能を持ち、
前記第2の記憶手段に格納された前記ライブラリ名を読み出すとともに前記第1の記憶手段に格納するライブラリ名読み出し手段を備えたことを特徴とする請求項1から4のいずれか1項に記載のユニット。 - 前記ライブラリ生成手段は、前記第2の記憶手段に、前記ライブラリ化されたプログラムとともに、そのライブラリを特定するライブラリ識別情報を関連づけて格納する機能を持ち、
前記第2の記憶手段に格納した情報を外部記憶手段にバックアップするバックアップ手段を備え、
そのバックアップ手段は、入力されたライブラリ識別情報が、前記第2の記憶手段に予め格納された正規のものと一致するか否かを判断し、一致した場合に前記情報を前記外部記憶手段に格納するようにしたことを特徴とする請求項1から5のいずれか1項に記載のユニット。 - ユーザプログラムを記憶する第1の記憶手段と、
前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、
前記第1の記憶手段に格納された前記ユーザプログラムを実行するユーザプログラム実行手段と、
前記第2の記憶手段に格納されたライブラリ化されたプログラムを実行するプログラム実行手段とを備え、
前記第2の記憶手段は、前記ユーザプログラムをアップロードするツールではアクセス不可としたことを特徴とするPLC。 - ユーザプログラムを格納する第1の記憶手段と、前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、前記ユーザプログラムをアップロードするツールではアクセス不可となる第2の記憶手段を備えたPLCを構成するユニットにおけるユーザプログラムの処理方法であって、
前記ライブラリ生成手段が、前記第1の記憶手段に格納された前記ユーザプログラムの少なくとも一部をライブラリ化して前記第2の記憶手段に格納して前記ライブラリ化した部分を保護し、
前記ユーザプログラムの実行時は、前記第2の記憶手段に格納されたライブラリ化されたプログラムを適宜実行させることを特徴とするユーザプログラムの処理方法。 - 入力信号を受け取る入力回路と、その入力信号に基づいてユーザプログラムを実行するプログラム実行手段と、実行結果を出力する出力回路とを持つPLC用のユニットであって、
ダウンロードされたユーザプログラムの一部を部品ライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、
前記部品ライブラリ化したプログラムを格納してある第2の記憶手段と、
前記部品ライブラリ化したプログラムを呼び出して実行するための専用命令を挿入したユーザプログラムをツールで作成し、そのユーザプログラムを格納する第1の記憶手段とを備え、
前記プログラム実行手段は、前記第1の記憶手段に格納されたユーザプログラムをスキャン実行し、前記ユーザプログラム中の専用命令を実行することによって前記第2の記憶手段から前記部品ライブラリ化されたプログラムを呼び出して実行し、その呼出実行が終了すれば前記ユーザプログラムに復帰して実行するものであり、
前記第2の記憶手段を前記ツールからアクセス不可とすることで、前記部品ライブラリ化したプログラムを読み出しできないようにしたことを特徴とするユニット。 - 入力信号を受け取る入力回路と、その入力信号に基づいてユーザプログラムを実行するプログラム実行手段と、実行結果を出力する出力回路とをもつPLC用のユニットであって、
ダウンロードされたユーザプログラムの全部を全体ライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、
前記全体ライブラリ化したプログラムを格納してある第2の記憶手段と、
前記全体ライブラリ化したプログラムを呼び出して実行するための設定フラグを、ツールの操作によって格納する第1の記憶手段とを備え、
前記プログラム実行手段は、前記第1の記憶手段の設定フラグをきっかけに全体ライブラリ化されたプログラムを第2の記憶手段から呼び出して実行するものであり、
前記第2の記憶手段を前記ツールからアクセス不可とすることで、前記全体ライブラリ化したプログラムを読み出しできないようにしたことを特徴とするユニット。 - PLCを構成するユニットであって、
ツールにて作成した、ライブラリ化してあるプログラムを呼び出して実行するための専用命令を有するユーザプログラムを格納する第1の記憶手段と、
ダウンロードされたユーザプログラムの少なくとも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、
前記ライブラリ化されたプログラムを格納しておく第2の記憶手段と、
前記ユーザプログラムをスキャン実行してゆき、前記ユーザプログラム中の専用命令の実行によって、前記第2の記憶手段から前記ライブラリ化プログラムを呼び出して実行するプログラム実行手段とを備え、
第2の記憶手段のライブラリ化プログラムは、前もって格納されていて、ユーザプログラムを作成するときに使用するツールからは、前記ライブラリ化プログラムを読み出しできないようにすることで、ライブラリ化プログラムの内容をプロテクトすることを特徴とするPLC用のユニット。 - PLCを構成するユニットであって、
ツールにてライブラリ化してあるプログラムを呼び出して実行するための設定フラグを格納する第1の記憶手段と、
ダウンロードされたユーザプログラムの少なくも一部をライブラリ化して第2の記憶手段に格納するライブラリ生成手段と、
前記ライブラリ化されたプログラムが格納しておく第2の記憶手段と、
RUNモードにて、前記第1の記憶手段の設定フラグを読み出して、実行する旨のフラグ設定がされている場合には、前記第2の記憶手段からライブラリ化プログラムを呼び出して実行するプログラム実行手段とを備え、
前記第2の記憶手段のライブラリ化プログラムは前もって格納されていて、設定フラグを設定するツールからはライブラリ化プログラムを読み出しできないようにすることで、ライブラリ化プログラムの内容をプロテクトすることを特徴とするPLC用のユニット。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002382445A JP3548829B2 (ja) | 2002-01-10 | 2002-12-27 | ユニット及びplc並びにユーザプログラムの処理方法 |
EP03000086A EP1329783B1 (en) | 2002-01-10 | 2003-01-08 | Programmable controller unit and method of processing user program |
CNB031014267A CN100403193C (zh) | 2002-01-10 | 2003-01-10 | 单元和可编程控制器以及用户程序的处理方法 |
US10/341,331 US7010368B2 (en) | 2002-01-10 | 2003-01-10 | Programmable controller unit and method of processing user program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002003954 | 2002-01-10 | ||
JP2002382445A JP3548829B2 (ja) | 2002-01-10 | 2002-12-27 | ユニット及びplc並びにユーザプログラムの処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004005389A JP2004005389A (ja) | 2004-01-08 |
JP3548829B2 true JP3548829B2 (ja) | 2004-07-28 |
Family
ID=26625484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002382445A Expired - Lifetime JP3548829B2 (ja) | 2002-01-10 | 2002-12-27 | ユニット及びplc並びにユーザプログラムの処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7010368B2 (ja) |
EP (1) | EP1329783B1 (ja) |
JP (1) | JP3548829B2 (ja) |
CN (1) | CN100403193C (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020012881A1 (ja) | 2018-07-13 | 2020-01-16 | オムロン株式会社 | プログラム開発装置、およびコントローラ |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3594035B2 (ja) * | 2003-03-13 | 2004-11-24 | オムロン株式会社 | 制御装置、cpuユニット、プログラマブルコントローラのユーザプログラム編集方法、及びオンラインエディットされる際のプログラマブルコントローラの処理方法 |
US20050144408A1 (en) * | 2003-12-24 | 2005-06-30 | Kenji Ejima | Memory protection unit, memory protection method, and computer-readable record medium in which memory protection program is recorded |
JP4438552B2 (ja) * | 2004-07-29 | 2010-03-24 | 株式会社ジェイテクト | 安全plc、シーケンスプログラム作成支援ソフトウェア及びシーケンスプログラムの判定方法 |
CN100359462C (zh) * | 2005-01-04 | 2008-01-02 | 凌阳科技股份有限公司 | 一种可编程控制装置的开发方法及系统 |
CN100370416C (zh) * | 2005-01-04 | 2008-02-20 | 凌阳科技股份有限公司 | 一种可编程控制装置及其方法 |
JP2006190119A (ja) * | 2005-01-07 | 2006-07-20 | Hitachi Industrial Equipment Systems Co Ltd | プログラマブルコントローラ |
JP4426492B2 (ja) * | 2005-03-30 | 2010-03-03 | Ykk株式会社 | プログラマブル・ターミナル・システム |
US7739311B2 (en) * | 2005-04-07 | 2010-06-15 | Tibco Software Inc. | Method and system for handling large data sets in a statistical language |
JP4501781B2 (ja) * | 2005-05-26 | 2010-07-14 | パナソニック電工株式会社 | プログラマブルコントローラ |
JP4442524B2 (ja) * | 2005-07-12 | 2010-03-31 | 株式会社ジェイテクト | 安全plc |
US7881812B2 (en) * | 2005-09-29 | 2011-02-01 | Rockwell Automation Technologies, Inc. | Editing and configuring device |
US7660638B2 (en) * | 2005-09-30 | 2010-02-09 | Rockwell Automation Technologies, Inc. | Business process execution engine |
EP1865421B1 (de) * | 2006-06-09 | 2019-02-20 | Siemens Aktiengesellschaft | System zur Erstellung dynamischer Webseiten |
DE102006055330A1 (de) * | 2006-11-23 | 2008-05-29 | Kraussmaffei Technologies Gmbh | Verfahren zur Ablaufprogrammierung eines Spritzgießzyklus einer Spritzgiessmaschine |
JP2008165709A (ja) * | 2007-01-05 | 2008-07-17 | Koyo Electronics Ind Co Ltd | モーションプログラム保護方法およびプログラマブルコントローラ |
JP2008171053A (ja) * | 2007-01-09 | 2008-07-24 | Koyo Electronics Ind Co Ltd | モーションモジュールおよびプログラマブルコントローラ |
CN101467112B (zh) * | 2007-01-10 | 2011-04-06 | 三菱电机株式会社 | 可编程显示器以及控制系统 |
US20100250007A1 (en) * | 2007-05-09 | 2010-09-30 | Johnson Controls Technology Company | Refrigeration system |
JP4849078B2 (ja) * | 2008-02-05 | 2011-12-28 | 富士電機株式会社 | プログラマブル・ロジックコントローラ及びプログラマブル・ロジックコントローラのロジック更新支援ツール |
US8688258B2 (en) * | 2008-09-11 | 2014-04-01 | Rockwell Automation Technologies, Inc. | Method of controlling a machine tool |
CN102339031B (zh) * | 2010-07-27 | 2013-12-25 | 深圳市合信自动化技术有限公司 | 一种子程序调用的方法、装置及plc控制系统 |
US9311460B2 (en) * | 2011-03-15 | 2016-04-12 | Omron Corporation | Programmable controller system, tool device, tool program, storage medium, and programmable controller |
DE102012207916B3 (de) * | 2012-05-11 | 2013-09-19 | Artis Gmbh | Verfahren und Vorrichtung zur automatisierten Konfiguration einer Überwachungsfunktion einer Werkzeugmaschine |
CN102968089B (zh) * | 2012-10-23 | 2014-12-24 | 深圳市汇川控制技术有限公司 | 可编程逻辑控制器及实现方法 |
JP6171387B2 (ja) * | 2013-02-15 | 2017-08-02 | オムロン株式会社 | コントローラ、情報処理装置およびプログラム |
CN103197590B (zh) * | 2013-03-18 | 2015-06-10 | 张二浩 | 基于活动存储设备的逻辑控制器及其控制方法 |
KR101777438B1 (ko) * | 2013-05-20 | 2017-09-11 | 엘에스산전 주식회사 | Plc 시스템의 입출력 모듈 |
DE102013216136B3 (de) * | 2013-08-14 | 2015-03-19 | Artis Gmbh | Verfahren und Vorrichtung zur automatisierten Konfiguration einer Überwachungsfunktion eines Industrieroboters |
KR101564174B1 (ko) * | 2014-10-13 | 2015-10-28 | 엘에스산전 주식회사 | Plc 내 mpu와 메모리 사이의 데이터 송수신 방법 |
KR102095224B1 (ko) * | 2018-02-09 | 2020-03-31 | 엘에스산전 주식회사 | 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 |
JP7505862B2 (ja) * | 2019-03-14 | 2024-06-25 | オムロン株式会社 | 制御システム、制御方法、および制御デバイス |
CN111026382B (zh) * | 2019-12-13 | 2024-01-16 | 深圳市杰美康机电有限公司 | 混合编程方法、终端设备及计算机可读存储介质 |
JP2024084362A (ja) * | 2022-12-13 | 2024-06-25 | オムロン株式会社 | 開発支援装置、開発支援方法および開発支援プログラム |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4118789A (en) * | 1977-06-06 | 1978-10-03 | Allen-Bradley Company | Program protection module for programmable controller |
US5295059A (en) * | 1992-09-09 | 1994-03-15 | Allen-Bradley Company, Inc. | Programmable controller with ladder diagram macro instructions |
CA2126740A1 (en) * | 1993-07-06 | 1995-01-07 | Naveen Jain | Method and system for incorporation of a utility function into an operating system |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
JP3460747B2 (ja) | 1995-04-12 | 2003-10-27 | 三菱電機株式会社 | 数値制御装置 |
JPH08305558A (ja) * | 1995-04-27 | 1996-11-22 | Casio Comput Co Ltd | 暗号化プログラム演算装置 |
US5671420A (en) * | 1995-06-28 | 1997-09-23 | Canon Information Systems, Inc. | Distribution diskette utility |
DE19707107A1 (de) | 1997-02-22 | 1998-09-10 | Bosch Gmbh Robert | Einrichtung zur Programmierung eines SPS |
JPH10333900A (ja) | 1997-05-28 | 1998-12-18 | Tsutomu Ishida | Pcプログラムコピー防止方法 |
US20030028690A1 (en) * | 2000-07-20 | 2003-02-06 | John Appleby-Alis | System, method and article of manufacture for a reconfigurable hardware-based multimedia device |
-
2002
- 2002-12-27 JP JP2002382445A patent/JP3548829B2/ja not_active Expired - Lifetime
-
2003
- 2003-01-08 EP EP03000086A patent/EP1329783B1/en not_active Expired - Lifetime
- 2003-01-10 US US10/341,331 patent/US7010368B2/en not_active Expired - Lifetime
- 2003-01-10 CN CNB031014267A patent/CN100403193C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020012881A1 (ja) | 2018-07-13 | 2020-01-16 | オムロン株式会社 | プログラム開発装置、およびコントローラ |
Also Published As
Publication number | Publication date |
---|---|
EP1329783B1 (en) | 2012-10-24 |
JP2004005389A (ja) | 2004-01-08 |
CN1431570A (zh) | 2003-07-23 |
EP1329783A2 (en) | 2003-07-23 |
US20030144753A1 (en) | 2003-07-31 |
US7010368B2 (en) | 2006-03-07 |
CN100403193C (zh) | 2008-07-16 |
EP1329783A3 (en) | 2006-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3548829B2 (ja) | ユニット及びplc並びにユーザプログラムの処理方法 | |
JP5039428B2 (ja) | プログラマブルコントローラ及びplcシステム | |
US7831320B2 (en) | Parameter setting device | |
US7110837B2 (en) | Control system and method for on-line editing of user program | |
US8381173B2 (en) | Platform-independent method and system for deploying control logic programming | |
US20020133240A1 (en) | Controllers, extension boards and communication units | |
EA006639B1 (ru) | Способ компиляции и исполнения прикладных программ в многопроцессорной среде | |
KR20000022660A (ko) | 직관적 프로그래밍 능력을 갖는 프로세서 기반 공정 제어 시스템 | |
CN112948893A (zh) | 一种基于批量硬件烧录的固件加密方法 | |
CN113360143A (zh) | 远程软件开发方法、装置、存储介质及处理器 | |
EP3764219B1 (en) | Support device and support program | |
JP7172864B2 (ja) | サポート装置およびサポートプログラム | |
JPH103307A (ja) | 数値制御装置 | |
CN110442074B (zh) | 可编程逻辑控制器程序的处理装置 | |
JP6171385B2 (ja) | コントローラおよび情報処理装置 | |
JP2003512667A (ja) | 電子装置 | |
CN110471675B (zh) | 一种程序烧录方法、系统、装置及计算机可读存储介质 | |
JP2005141435A (ja) | ツール | |
JP4305740B2 (ja) | プログラマブルコントローラシステムおよび接続保証方法 | |
US8612962B2 (en) | Method for programming a memory-programmable controller with resistant storage of data in memory | |
JP4849078B2 (ja) | プログラマブル・ロジックコントローラ及びプログラマブル・ロジックコントローラのロジック更新支援ツール | |
JP3629947B2 (ja) | プログラマブルコントローラシステム、プログラマブルコントローラ支援装置、プログラマブルコントローラ、および、記録媒体 | |
JP7052620B2 (ja) | サポート装置およびサポートプログラム | |
TWI774469B (zh) | 程式編譯管理系統與其作業方法 | |
JP2000020297A (ja) | 制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040316 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040329 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3548829 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090430 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100430 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110430 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140430 Year of fee payment: 10 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |