JP3691986B2 - プログラマブルコントローラ - Google Patents
プログラマブルコントローラ Download PDFInfo
- Publication number
- JP3691986B2 JP3691986B2 JP19620499A JP19620499A JP3691986B2 JP 3691986 B2 JP3691986 B2 JP 3691986B2 JP 19620499 A JP19620499 A JP 19620499A JP 19620499 A JP19620499 A JP 19620499A JP 3691986 B2 JP3691986 B2 JP 3691986B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- programmable controller
- data
- address
- task
- 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 - Fee Related
Links
Images
Landscapes
- Programmable Controllers (AREA)
Description
【発明の属する技術分野】
本発明は、例えば鉄鋼、製紙プラントや上下水道等の公共システム、自動車産業等の産業用システムの制御に広く用いられるプログラマブルコントローラ(一般に、PLCと称している)に係り、特にタスクおよびプログラム毎に独立したローカル変数領域を確保できるようにしたプログラマブルコントローラに関するものである。
【0002】
【従来の技術】
従来から、プログラマブルコントローラにおいては、演算の対象としてレジスタを使用していることが多い。これは、いわゆるグローバル変数であるので、どんなプログラムからでもアクセスが可能であり、レジスタの重複使用による制限等を受け、プログラムのバグを発生させる原因ともなっている。
【0003】
【発明が解決しようとする課題】
このため、最近では、ローカル変数を使用可能なプログラマブルコントローラの実現が強く望まれてきているが、ハードウェアレベルで実現したプログラマブルコントローラは存在しないのが実状である。
【0004】
本発明の目的は、タスクおよびプログラム毎に独立したローカル変数領域を確保できるようにして、レジスタの重複使用による制限他を受けることなく、タスクおよびプログラム毎に自由に変数を定義して使用することが可能なプログラマブルコントローラを提供することにある。
【0005】
【課題を解決するための手段】
上記の目的を達成するために、請求項1の発明では、シーケンスプログラムメモリに記憶されているシーケンスプログラムを実行するシーケンス演算装置と、制御に使用する変数等のデータを記憶するデータメモリとを備えて構成されるプログラマブルコントローラにおいて、1台の前記シーケンス演算装置が使用するデータメモリの割付構成として、シーケンスプログラムを構成するタスクおよび当該タスク内のプログラム毎に、前記シーケンスプログラムのコンパイラが独立したデータ領域を割り当てるようにしている。
【0006】
また、請求項2の発明では、コントローラ全体の実行制御を行なう中央演算処理装置と、中央演算処理装置が実行するプログラムを記憶しているプログラムメモリと、シーケンスプログラムメモリに記憶されているシーケンスプログラムを実行するシーケンス演算装置と、制御に使用する変数等のデータを記憶するデータメモリとを備えて構成されるプログラマブルコントローラにおいて、1台の前記シーケンス演算装置が使用するデータメモリの割付構成として、シーケンスプログラムを構成するタスクおよび当該タスク内のプログラム毎に、前記シーケンスプログラムのコンパイラが独立したデータ領域を割り当てるようにしている。
【0007】
従って、請求項1または請求項2の発明のプログラマブルコントローラにおいては、1台の前記シーケンス演算装置に対してタスクおよびプログラム毎に、独立したデータ領域を割り当てることにより、タスクおよびプログラム毎に前記シーケンスプログラムのコンパイラが独立したローカル変数領域を確保できるため、従来のようにレジスタの重複使用による制限他を受けることなく、タスクおよびプログラム毎に自由に変数を定義して使用することができる。
【0008】
一方、請求項3の発明では、上記請求項1または請求項2の発明のプログラマブル コントローラにおいて、プログラムに固有な変数をアクセスする際に、当該プログラムに固有のベースアドレスを基準にして変数をアクセスするようにしている。
【0009】
従って、請求項3の発明のプログラマブル コントローラにおいては、プログラムに固有なベースアドレスおよびオペランドアドレスとを加算して目的のメモリアドレスを生成することにより、プログラムに固有な変数をアクセスすることができる。
【0010】
また、請求項4の発明では、上記請求項1または請求項2の発明のプログラマブルコントローラにおいて、シーケンス演算装置に、プログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタを備え、プログラムを切り替える際に所定の命令によってベースアドレスレジスタの内容を変更するようにしている。
【0011】
従って、請求項4の発明のプログラマブルコントローラにおいては、プログラム毎の変数をアクセスする際のベースアドレスを記憶するベースレジスタを設けることにより、プログラムを切り替える際にベースアドレスレジスタの内容を変更することで、プログラムに固有な変数をアクセスすることができる。
【0012】
一方、請求項5の発明では、上記請求項4の発明のプログラマブルコントローラにおいて、ベースアドレスレジスタに、タスクが占用するデータ領域を示すアドレスを格納するタスクベースアドレス設定命令を設け、タスクを切り替える際にタスクベースアドレス設定命令を実行することにより、プログラムが使用するデータ領域を指定するようにしている。
【0013】
従って、請求項5の発明のプログラマブルコントローラにおいては、タスクを切り替える際にタスクベースアドレス設定命令を実行することにより、ベースアドレスレジスタにタスクが占用するデータ領域を示すアドレスを格納させることができるため、タスク毎に占用するデータ領域を指定することができる。
【0014】
また、請求項6の発明では、上記請求項4の発明のプログラマブルコントローラにおいて、あるプログラムから他のプログラムを呼び出す際に、呼び出されるプログラムが占用するデータ領域のアドレスを、プログラム呼び出し命令によってベースアドレスレジスタに設定することにより、呼び出されたプログラムが専用のデータ領域を使用するようにしている。
【0015】
従って、請求項6の発明のプログラマブルコントローラにおいては、あるプログラムから他のプログラムを呼び出す際に、ベースアドレスレジスタに現在設定されている値を基準にして、呼び出されるプログラムが占用するローカル変数領域の大きさを反映してベースアドレスレジスタを変更することにより、あるプログラムから呼び出された別のプログラムも専用のデータ領域を使用することができ、また上位のプログラムが使用しているローカル変数領域と連続しかつ下位領域となる領域を占用することができる。
【0016】
さらに、請求項7の発明では、上記請求項1または請求項2の発明のプログラマブルコントローラにおいて、シーケンス演算装置に、プログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタと、プログラムに固有な変数領域の大きさを記憶するデータ範囲レジスタとを備え、あるプログラムから他のプログラムを呼び出す際に、呼び出されるプログラムが占用するデータ領域の先頭アドレスおよびデータ量を、プログラム呼び出し命令によってベースアドレスレジスタおよびデータ範囲レジスタに設定することにより、呼び出されたプログラムの専用データ領域外へのアクセスを検出するようにしている。
【0017】
従って、請求項7の発明のプログラマブルコントローラにおいては、プログラム呼び出し命令が、呼び出されるプログラムが使用するローカル変数領域の範囲をデータ範囲レジスタに設定することにより、データ範囲レジスタにプログラム固有のデータ領域を記憶させることができるため、プログラムが他のプログラムのデータ領域をアクセスしないように監視する、すなわち呼び出されたプログラムが専用のデータ領域外のデータをアクセスしないように制御することができる。
【0018】
一方、請求項8の発明では、上記請求項1または請求項2の発明のプログラマブルコントローラにおいて、シーケンス演算装置に、プログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタと、プログラムに固有な変数領域の大きさを記憶するデータ範囲レジスタとを備え、タスクを切り替える際に、当該タスクに固有な一時使用データ領域の先頭アドレスおよびデータ量を、専用のタスク切替命令によって一時使用データ用のベースアドレスレジスタおよびデータ範囲レジスタに設定することにより、呼び出されたプログラムが使用するデータが専用のデータ領域を使用すると共に、専用データ領域外へのアクセスを検出するようにしている。
【0019】
従って、請求項8の発明のプログラマブルコントローラにおいては、タスクを切り替える際に、専用のタスク切替命令が一時使用データ用ベースアドレスレジスタおよび一時使用のデータ範囲レジスタを設定することにより、タスク毎に独立した一時使用データ領域を使用することができ、またデータ範囲を監視することにより、専用の一時使用データ領域外へのアクセスを禁止することができる。
【0020】
また、請求項9の発明では、上記請求項1または請求項2の発明のプログラマブルコントローラにおいて、プログラムが使用する固有のデータ量をコンパイラに指示するように、プログラムに固有なデータ量をプログラム呼び出し命令の中に格納するようにしている。
【0021】
従って、請求項9の発明のプログラマブルコントローラにおいては、プログラムが使用するローカル変数のデータ量をプログラム呼び出し命令に含めるようにすることにより、コンパイラがあるプログラムおよび下流のプログラム全体で使用するローカル変数領域を求めることが容易になる。
【0022】
さらに、請求項10の発明では、上記請求項1または請求項2の発明のプログラマブルコントローラにおいて、プログラムを呼び出す際に、当該プログラムに付したプログラム番号によってプログラムの開始アドレスを指定すると共に、プログラム内から当該プログラム内でのみ使用される専用のプログラムを呼び出す際には、呼び出しアドレスからの相対アドレスによってプログラムを呼び出すようにしている。
【0023】
従って、請求項10の発明のプログラマブルコントローラにおいては、プログラムをプログラムに付された固有の番号によって管理することにより、先頭アドレスや使用データ量等の関連するデータをプログラム呼び出し命令に含めることが必要なくなるため、少ないプログラムコード量でプログラムを構成することができる。また、あるプログラム内でだけ使用されるプログラムを呼び出す際には、プログラム番号ではなく、相対アドレスを使用して呼び出すことにより、プログラムの呼出しを高速に実行することができる。
【0024】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0025】
(第1の実施の形態)
図1は、本発明によるプログラマブルコントローラの要部構成例を示すブロック図である。
【0026】
すなわち、本発明のプログラマブルコントローラは、図1に示すように、中央演算処理装置(以下、CPUと称する)1は、プログラムメモリ2と、ワークメモリ3と、シーケンス演算装置4と、シーケンスプログラムメモリ5と、データメモリ6と、マイコンバス7と、通信インタフェース8と、I/O9と、モニタ装置20とから構成している。
【0027】
CPU1は、本プログラマブルコントローラの中枢部分であり、コントローラ全体の実行制御を行なうものである。
【0028】
プログラムメモリ2は、CPU1が実行するプログラムを記憶しているメモリであり、例えばOSや制御プログラムを記憶している。
【0029】
ワークメモリ3は、CPU1が全体制御を実行する時に作業領域として使用するメモリである。
【0030】
シーケンス演算装置4は、シーケンスプログラムメモリ5に記憶されているシーケンスプログラムを実行するプロセッサである。
【0031】
シーケンスプログラムメモリ5は、ユーザが作成したシーケンスプログラムを記憶するメモリである。
【0032】
データメモリ6は、ユーザが使用する制御に使用する変数等のデータを記憶するメモリである。
【0033】
マイコンバス7は、本プログラマブルコントローラ内の要素をCPU1やシーケンス演算装置4と接続するためのバスであり、アドレスバス、データバス、制御バスの総体である。
【0034】
通信インタフェース8は、本プログラマブルコントローラとモニタ装置20等とを通信媒体を介して接続するためのインタフェース回路である。
【0035】
I/O9は、本プログラマブルコントローラと外部の制御対象とを接続するための入出力装置である。
【0036】
モニタ装置20は、本プログラマブルコントローラのシーケンスプログラムの実行状態を監視したり、シーケンスプログラムの作成・修正に使用されるものである。
【0037】
本実施の形態のプログラマブルコントローラでは、例えば図2に概念図を示すようなシーケンスプログラムを扱う。
【0038】
図2において、シーケンスプログラムは、2個のタスクA,Bから構成されている。
【0039】
タスクAは、プログラムA1が、その中からプログラムB1とC1を呼び出している。また、プログラムC1は、プログラムB2を呼び出している。
【0040】
ここで、プログラムB1とプログラムB2は、同じオブジェクトプログラムを使用するプログラムであり、扱う変数だけが異なるプログラムである。
【0041】
一方、同様に、タスクBは、プログラムA2が、その中からプログラムB3とプログラムC2を呼び出している。
【0042】
ここで、プログラムA2は、プログラムA1と同じオブジェクトプログラムを使用するプログラムであり、プログラムB3,C2は、それぞれプログラムB1,C1と同じオブジェクトプログラムを使用するプログラムである。
【0043】
このように、同一のオブジェクトプログラムを使用しながら、扱う変数だけを変更してプログラムを構成すると、プログラムメモリ2の容量を節約することができる。
【0044】
本実施の形態のプログラマブルコントローラでは、前記図1におけるデータメモリ6の割付構成として、例えば図3に示すように、シーケンスプログラムを構成する各タスクおよびこのタスク内の各プログラム毎に、独立したデータ領域を割り当てるように構成している。
【0045】
ここで、この独立したデータ領域の割り当ては、本実施の形態では、CPU1で行なう、すなわちコンパイラをCPU1で走らせるようにしている。
【0046】
図3において、タスクAとタスクBが使用するデータ領域は独立しており、さらに呼び出される側のプログラム(以下、下位のプログラムと称する)のデータ領域は、呼び出す側のプログラム(以下、上位のプログラムと称する)のデータ領域に続く領域に確保している。
【0047】
従って、本実施の形態のプログラマブルコントローラにおいては、各タスクおよび各プログラム毎に、独立したデータ領域を使用することができる。
【0048】
以上のように、本実施の形態のプログラマブルコントローラでは、タスクおよびプログラム毎に、独立したデータ領域を割り当てるようにしているので、タスクおよびプログラム毎に独立したローカル変数領域を確保できるため、従来のようにレジスタの重複使用による制限他を受けることなく、タスクおよびプログラム毎に自由に変数を定義して使用することが可能となる。
【0049】
(第2の実施の形態)
図4は、本実施の形態によるプログラマブルコントローラにおけるシーケンス演算装置4の構成例を示すブロック図である。。
【0050】
すなわち、シーケンス演算装置4は、図4に示すように、シーケンス演算回路4−1と、命令レジスタ4−2と、ベースアドレスレジスタ4−3と、アドレス範囲レジスタ4−4と、MUX4−5と、加算器4−6と、メモリアドレスレジスタ4−7と、バスI/F4−8と、テンボラリメモリアドレスレジスタ4−9と、テンポラリメモリアドレス範囲レジスタ4−10と、MUX4−11と、比較回路4−12とから構成している。
【0051】
シーケンス演算回路4−1は、シーケンスプログラムメモリ5からシーケンスプログラムを順次読み出して処理する回路である。
【0052】
命令レジスタ4−2は、シーケンス演算回路4−1により読み出されたシーケンス命令を一時記憶しておくレジスタである。
【0053】
なお、この命令レジスタ4−2には、シーケンス命令のオペランドアドレスも含まれている。
【0054】
ベースアドレスレジスタ4−3は、プログラム中でデータメモリ6をアクセスする場合に、データメモリ6のアドレス計算の基礎となるアドレスを記憶しているレジスタであり、後述するように、タスクおよびプログラムの切替時に内容が変更される。
【0055】
アドレス範囲レジスタ4−4は、現在実行されているプログラムが使用するデータメモリ6の先頭アドレスおよび末尾アドレスを記憶しているレジスタであり、データメモリ6をアクセスする際にそのアドレスが適正かどうかを判定するのに使用される。
【0056】
MUX4−5およびMUX4−11は、マルチプレクサである。
【0057】
加算器4−6は、ベースアドレスレジスタ4−3に記憶されているベースアドレスと、命令レジスタ4−2に記憶されているオペランドアドレスとを加算して、目的のメモリアドレスを生成する。
【0058】
メモリアドレスレジスタ4−7は、アクセス対象のメモリアドレスを記憶するレジスタである。
【0059】
バスI/F4−8は、マイコンバス7とシーケンス演算装置4内のバスとを接続するためのI/Fである。
【0060】
テンボラリメモリアドレスレジスタ4−9は、一時使用メモリ(以下、テンボラリメモリと称する)のベースアドレスを記憶するレジスタであり、タスク切替時に内容が変更される。
【0061】
テンポラリメモリアドレス範囲レジスタ4−10は、現在実行されているタスクが使用するテンボラリメモリの先頭アドレスおよび末尾アドレスを記憶しているレジスタであり、テンボラリメモリをアクセスする際にそのアドレスが適正かどうかを判定するのに使用される。
【0062】
比較回路4−12は、アクセスされるメモリアドレスが現在実行中のタスクまたはプログラムが正常なアドレス範囲内かどうかを判定するために、メモリアドレスレジスタ4−7の内容とアドレス範囲レジスタ4−4,4−10の内容とを比較するために使用される。
【0063】
そして、メモリアドレスレジスタ4−7の内容がアドレス範囲外である時に、比較回路4−12からシーケンス演算回路4−1にエラー信号を出力する。
【0064】
本実施の形態のプログラマブルコントローラでは、プログラムに固有な変数をアクセスする際に、このプログラムに固有のベースアドレスを基準にして変数をアクセスするように構成している。
【0065】
具体的には、プログラムに固有な変数をアクセスする際に、プログラム実行前に前記ベースアドレスレジスタ4−3にこのプログラムが使用するデータメモリ6のベースアドレスを記憶しておき、データメモリ6をアクセスする際には、オペランドアドレスにこのベースアドレスを加算して実際のメモリアドレスを作成するように構成している。
【0066】
従って、本実施の形態のプログラマブルコントローラにおいては、プログラム毎に独立したデータ領域を使用することができる。
【0067】
以上のように、本実施の形態のプログラマブルコントローラでは、プログラムに固有なベースアドレスを基準にして変数をアクセスするようにしているので、プログラムを切り替える際にベースアドレスを変更することで、プログラムに固有な変数をアクセスすることが可能となる。
【0068】
(第3の実施の形態)
本実施の形態のプログラマブルコントローラでは、前記図4に示したように、シーケンス演算装置4に、メモリアドレスの計算の基礎となる、すなわちプログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタ4−3を備えて、プログラムを切り替える際に後述する命令によってベースアドレスレジスタ4−3の内容を変更するように構成している。
【0069】
従って、本実施の形態のプログラマブルコントローラにおいては、例えば図5に概念図を示すように、プログラムB1とプログラムB3が同じオブジェクトプログラムを使用している時、プログラムが異なっていれば使用しているベースアドレスが異なることから、それぞれのプログラムの中で変数Xをアクセスする際には、同じオフセットを使用して異なる変数にアクセスすることができる。
【0070】
これにより、従来のプログラマブルコントローラのように、固定アドレスを使用するレジスタやデバイスといったグローバルな資源を演算対象にするのではなく、プログラム毎に独立したローカルな変数を使用することができる。
【0071】
以上のように、本実施の形態のプログラマブルコントローラでは、プログラム毎の変数をアクセスする際のベースアドレスを記憶するベースレジスタ4−3を設けるようにしているので、プログラムを切り替える際にベースアドレスレジスタ4−3の内容を変更することで、プログラムに固有な変数をアクセスすることが可能となる。
【0072】
(第4の実施の形態)
本実施の形態のプログラマブルコントローラでは、タスクが占用するデータ領域を示すアドレスを格納する、例えば図6に示すような構成のタスクベースアドレス設定(以下、ASSIGNと称する)命令を、前記ベースアドレスレジスタ4−3に設け、タスクを切り替える際にこのASSIGN命令を実行することにより、プログラムが使用するデータ領域を指定するように構成している。
【0073】
このASSIGN命令は、オペランドとしてタスク番号を使用し、データメモリ6またはワークメモリ3に置かれた、例えば図7に概念図を示すようなタスクベースアドレステーブルから、指定されたタスク番号に対応するベースアドレスを読み出して、ベースアドレスレジスタ4−3に記憶する働きをする。
【0074】
従って、本実施の形態のプログラマブルコントローラにおいては、このASSIGN命令を、例えば図8に示すようなプログラム例のように、タスクの開始時に実行することにより、各タスクで使用するデータメモリ6を設定することができる。
【0075】
図8に示すプログラムは、タスク番号1のプログラムA1を実行するという意味であり、機械語表現では、ASSIGN命令の後にプログラム呼び出し命令が置かれている。
【0076】
ベースアドレステ−ブル4−3の内容は、プログラム実行前にはモニタ装置20からダウンロードが可能であり、プログラム実行開始後の変更に対しては、CPU1またはシーケンス演算装置4から変更が可能である。
【0077】
以上のように、本実施の形態のプログラマブルコントローラでは、タスクを切り替える際にASSIGN命令を実行するようにしているので、ベースアドレスレジスタ4−3にタスクが占用するデータ領域を示すアドレスを格納させることができるため、タスク毎に占用するデータ領域を指定することが可能となる。
【0078】
(第5の実施の形態)
本実施の形態のプログラマブルコントローラでは、あるプログラムから他のプログラムを呼び出す際に、呼び出されるプログラムが占用するデータ領域のアドレスを、プログラム呼び出し(以下、PROGRAMと称する)命令によってベースアドレスレジスタ4−3に設定することにより、呼び出されたプログラムが専用のデータ領域を使用するように構成している。
【0079】
すなわち、前記第4の実施の形態では、タスク切替時のベースアドレスはASSIGN命令で設定することで説明したが、本実施の形態では、プログラム切替時のベースアドレス変更はPROGRAM命令で実行する。
【0080】
従って、本実施の形態のプログラマブルコントローラにおいては、例えば図9に概念図を示すように、プログラムA1からプログラムB1を呼び出す場合を例にとると、プログラムA1とプログラムB1のデータメモリ6の配置は、前記図3に示したような関係になっている。
【0081】
プログラムA1は、タスクAで設定されたベースアドレスを使用しているが、プログラムB1の呼び出し時には、それをプログラムB1のオフセット分(図3では▲1▼で示す)だけずらす必要がある。
【0082】
この変更は、例えば図10に示すようなPROGRAM命令が実行する。
【0083】
PROGRAM命令は、呼び出されるプログラムが使用するデータ量(ワード数)とプログラム番号をオペランドとして持っている。
【0084】
また、PROGRAM命令には、補助命令P OFFが付属しており、このPROGRAM命令が設定するオフセットアドレスを記憶している。
【0085】
PROGRAM命令は、現在のベースアドレスレジスタ4−3の内容をセーブした後、現在値に上記のオフセット値を加えた値を、新規なベースアドレスとしてベースアドレスレジスタ4−3に記憶する。
【0086】
プログラム実行完了時には、セーブしておいたベースアドレスを、再びベースアドレスレジスタ4−3にセットする。
【0087】
タスク内でプログラムを呼び出す場合には、上記のように上位のプログラムのベースアドレスからのオフセットアドレスを使用してベースアドレスレジスタ4−3の内容を書き替えていくことにより、プログラム毎に独立したデータ領域を確保できることになる。
【0088】
なお、ここでは、便宜上PROGRAM命令と補助命令で構成したが、プログラムメモリ2の語長が許せば1個の命令で構成可能であることは言うまでもない以上のように、本実施の形態のプログラマブルコントローラでは、あるプログラムから他のプログラムを呼び出す際に、ベースアドレスレジスタ4−3に現在設定されている値を基準にして、呼び出されるプログラムが占用するローカル変数領域の大きさを反映してベースアドレスレジスタ4−3を変更するようにしているので、あるプログラムから呼び出された別のプログラムも専用のデータ領域を使用することが可能となり、また上位のプログラムが使用しているローカル変数領域と連続しかつ下位領域となる領域を占用することが可能となる。
【0089】
(第6の実施の形態)
本実施の形態のプログラマブルコントローラでは、前記図4に示したように、シーケンス演算装置4に、メモリアドレスの計算の基礎となる、すなわちプログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタ4−3と、プログラムに固有な変数領域の大きさを記憶するデータ範囲レジスタであるアドレス範囲レジスタ4−4およびテンポラリメモリアドレス範囲レジスタ4−10とを備え、あるプログラムから他のプログラムを呼び出す際に、呼び出されるプログラムが占用するデータ領域の先頭アドレスおよびデータ量を、PROGRAM命令によってベースアドレスレジスタ4−3とデータ範囲レジスタであるアドレス範囲レジスタ4−4およびテンポラリメモリアドレス範囲レジスタ4−10とに設定することにより、呼び出されたプログラムの専用データ領域外へのアクセスを検出するように構成している。
【0090】
すなわち、前記第5の実施の形態では、PROGRAM命令によってプログラム切替時のベースアドレス変更で実行することで説明したが、本実施の形態では、PROGRAM命令によって、ベースアドレスレジスタ4−3の内容の変更だけでなく、アドレス範囲レジスタ4−4およびテンポラリメモリアドレス範囲レジスタ4−10の変更も実行する。
【0091】
従って、本実施の形態のプログラマブルコントローラにおいては、例えば図10に示すようなPROGRAM命令が実行されると、例えば図11に概念図を示すようなデータメモリ範囲テーブルから、オペランドに指定されたプログラム番号のプログラムが使用するデータメモリ6の先頭アドレスおよび末尾アドレスを読み出して、アドレス範囲レジスタ4−4に記憶する。
【0092】
これらのアドレスは、前述したように、メモリアクセスの度にメモリアドレスレジスタ4−7の内容と比較回路4ー12で比較され、プログラムが固有のデータ領域外のデータを参照していないかどうかが調ベられる。
【0093】
もし、固有のデータ領域外のアドレスをアクセスしようとした場合には、前述したように、比較回路4ー12からシーケンス演算回路4−1にエラー信号が送られて、メモリアクセスを無効にすることができる。
【0094】
以上のように、本実施の形態のプログラマブルコントローラでは、PROGRAM命令が、呼び出されるプログラムが使用するローカル変数領域の範囲をデータ範囲レジスタであるアドレス範囲レジスタ4−4およびテンポラリメモリアドレス範囲レジスタ4−10に設定するようにしているので、アドレス範囲レジスタ4−4およびテンポラリメモリアドレス範囲レジスタ4−10にプログラム固有のデータ領域を記憶させることができるため、プログラムが他のプログラムのデータ領域をアクセスしないように監視する、すなわち呼び出されたプログラムが専用のデータ領域外のデータをアクセスしないように制御することが可能となる。
【0095】
(第7の実施の形態)
本実施の形態のプログラマブルコントローラでは、タスク毎に独立したテンポラリメモリを使用するように構成している。
【0096】
具体的には、前記図4に示したように、シーケンス演算装置4に、メモリアドレスの計算の基礎となる、すなわちプログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタ4−3と、プログラムに固有な変数領域の大きさを記憶するデータ範囲レジスタであるテンポラリメモリアドレスレジスタ4−9とを備え、タスクを切り替える際に、このタスクに固有な一時使用データ領域の先頭アドレスおよびデータ量を、専用のタスク切替命令(ASSIGN命令)によって一時使用データ用のベースアドレスレジスタ4−3およびテンポラリメモリアドレスレジスタ4−9に設定することにより、呼び出されたプログラムが使用するデータが専用のデータ領域を使用すると共に、専用データ領域外へのアクセスを検出するように構成している。
【0097】
ここで、テンポラリメモリは、プログラム間でのデータの授受他に使用するので、タスク毎に独立していることが好ましい。
【0098】
従って、本実施の形態のプログラマブルコントローラにおいては、前述のASSIGN命令が実行された際に、ベースアドレスの変更と同時に、テンボラリメモリのベースアドレス変更およびアドレス範囲変更も実行して、例えば図12に概念図を示すように、タスクAとタスクBとで独立した一時使用メモリを使用することができる。
【0099】
すなわち、図7に示すようなタスクベースアドレステーブルには、対応するテンポラリメモリの先頭アドレスおよび末尾アドレスも同時に記憶されており、ASSIGN命令がこれを読み出して、それらをテンポラリメモリアドレスレジスタ4−9およびテンポラリアドレス範囲レジスタ4ー10に記憶する。
【0100】
なお、メモリアドレスの計算方法、およびアドレス範囲の正当性検証の方法については、前述したデータメモリ6の場合と同様である。
【0101】
以上のように、本実施の形態のプログラマブルコントローラでは、タスクを切り替える際に、このタスクに固有な一時使用データ領域の先頭アドレスおよびデータ量を、専用のタスク切替命令(ASSIGN命令)が一時使用データ用のベースアドレスレジスタ4−3、テンポラリメモリアドレスレジスタ4−9およびテンポラリアドレス範囲レジスタ4ー10を設定するようにしているので、タスク毎に独立した一時使用データ領域を使用することが可能となり、またデータ範囲を監視することにより、専用の一時使用データ領域外へのアクセスを禁止することが可能となる。
【0102】
(第8の実施の形態)
本実施の形態のプログラマブルコントローラでは、各プログラムが使用する固有のデータ量をコンパイラに指示するように、プログラムに固有なデータ量を前記PROGRAM命令の中に格納するように構成している。
【0103】
従って、本実施の形態のプログラマブルコントローラにおいては、プログラムに固有なデータ量は、シーケンスプログラムをコンパイルする際に計算して求められ、例えば図10に概念図を示すように、PROGRAM命令のオペランドの一部として記憶しておく。
【0104】
こうすることにより、プログラムを次々にネストしながら呼び出す際に、データメモリ6のベースアドレスの変更量を容易に計算することができる。
【0105】
また、シーケンスプログラムのコンパイラは、PROGRAM命令に付属させる補助命令のオペランドとなるオフセット値を求める際に、上位のプログラムから目的のプログラムまでのPROGRAM命令に含まれるデータ量を加算していくだけで、ベースアドレスの変更量を求めることができる。
【0106】
これは、オンラインでのプログラム変更のように、プログラムのコンパイル時間を短縮したい場合に特に有効である。
【0107】
以上のように、本実施の形態のプログラマブルコントローラでは、プログラムが使用するローカル変数のデータ量をPROGRAM命令に含めるようにしているので、コンパイラがあるプログラムおよび下流のプログラム全体で使用するローカル変数領域を容易に求めることが可能となる。
【0108】
(第9の実施の形態)
本実施の形態のプログラマブルコントローラでは、プログラムを呼び出す際に、このプログラムに付したプログラム番号によってプログラムの開始アドレスを指定すると共に、プログラム内からこのプログラム内でのみ使用される専用のプログラムを呼び出す際には、呼び出しアドレスからの相対アドレスによってプログラムを呼び出すように構成している。
【0109】
すなわち、前記各実施の形態では、プログラムを呼び出す際に、プログラム番号をよりどころにして対象となるプログラムのアドレスを求めることで説明したが、本実施の形態では、これ以外に、相対アドレスを使用した呼び出し命令も用意している。
【0110】
例えば、図13に概念図を示すようなPROGRAM命令の上段の命令は、前記図10に示したものと同一であるが、下段の命令はプログラムのプログラム番号ではなく、呼び出しアドレスからの相対アドレスを使用して呼び出す。
【0111】
この場合、プログラム番号での呼び出しは、他のプログラムやタスクでプログラムを共用する時には有用であるが、呼び出し時間がかかるという問題点がある。
【0112】
この点、本実施の形態のプログラマブルコントローラにおいては、あるプログラムの下位でだけ使用されるプログラムについては、上記相対アドレスによる呼び出しを使用できるようにして、呼び出し時間の短縮を図ることができる。
【0113】
以上のように、本実施の形態のプログラマブルコントローラでは、プログラムをプログラムに付された固有の番号によって管理するようにしているので、先頭アドレスや使用データ量等の関連するデータをPROGRAM命令に含めることが必要なくなるため、少ないプログラムコード量でプログラムを構成することが可能となる。
【0114】
また、あるプログラム内でだけ使用されるプログラムを呼び出す際には、プログラム番号ではなく、相対アドレスを使用して呼び出すことにより、プログラムの呼出しを高速に実行することが可能となる。
【0115】
(その他の実施の形態)
(a)上記実施の形態では、独立したデータ領域の割り当てを、CPU1で行なう、すなわちコンパイラをCPU1で走らせる場合について説明したが、これに限らず、独立したデータ領域の割り当てを、モニタ装置20で行なう、すなわちコンパイラをモニタ装置20で走らせるようにすることも可能である。
【0116】
(b)上記実施の形態では、CPU1とシーケンス演算装置4とをそれぞれ別々に備える場合について説明したが、これに限らず、CPU1とシーケンス演算装置4とを一体として備えるようにすることも可能である。
【0117】
【発明の効果】
以上説明したように、本発明のプログラマブルコントローラによれば、タスクおよびプログラム毎に、独立したデータ領域を割り当てるようにしているので、タスクおよびプログラム毎に独立したローカル変数領域を確保できるため、従来のようにレジスタの重複使用による制限他を受けることなく、タスクおよびプログラム毎に自由に変数を定義して使用することが可能となる。
【0118】
また、タスクの切替時やプログラムの切替時には、専用の命令によって、各タスクやプログラムが使用するデータメモリのベースアドレスを自動的に設定するようにしているので、タスクまたはプログラム毎に独立したデータ領域を使用することができ、各変数はベースアドレスらのオフセットによって指定されるため、ローカル変数を実現することが可能となる。
【0119】
さらに、データアクセスの際に、メモリ領域の正当性も同時に検証するようにしているので、他のプログラムが使用している領域を誤ってアクセスすることを防止することが可能となる。なお、かかる機能は、ローカル変数についてのみでなく、テンポラリデータについても実現することが可能となる。
【0120】
さらにまた、プログラムを呼び出すために、プログラム番号による方法と、相対アドレスによる方法とを併用するようにしているので、プログラムの呼び出し時間の短縮化を図ることが可能となる。
【図面の簡単な説明】
【図1】本発明によるプログラマブルコントローラの要部構成例を示すブロック図。
【図2】本発明の第1の実施の形態によるプログラマブルコントローラにおけるタスクとプログラムの構成例を示す概念図。
【図3】同第1の実施の形態によるプログラマブルコントローラにおけるタスク内のプログラムが使用するデータメモリの構成例を示す概念図。
【図4】本発明の第2の実施の形態によるプログラマブルコントローラにおけるシーケンス演算装置の要部構成例を示すブロック図。
【図5】本発明の第3の実施の形態によるプログラマブルコントローラにおけるプログラム内の変数のアクセス方法を説明するための概念図。
【図6】本発明の第4の実施の形態によるプログラマブルコントローラにおけるタスク切替命令の構成例を示す概念図。
【図7】同第4の実施の形態によるプログラマブルコントローラにおけるタスクベースアドレステーブルの構成例を示す概念図。
【図8】同第4の実施の形態によるプログラマブルコントローラにおけるタスク切替命令のプログラム例を示す図。
【図9】本発明の第5の実施の形態によるプログラマブルコントローラにおけるプログラムの呼び出し例を説明するための概念図。
【図10】本発明の第5、第6および第8の各実施の形態によるプログラマブルコントローラにおけるプログラム切替命令の構成例を示す概念図。
【図11】同第6の実施の形態によるプログラマブルコントローラにおけるデータメモリ範囲テーブルの構成例を示す概念図。
【図12】本発明の第7の実施の形態によるプログラマブルコントローラにおけるテンポラリメモリの構成例を示す概念図。
【図13】本発明の第9の実施の形態によるプログラマブルコントローラにおける相対アドレスによるプログラム呼出し命令の構成例を示す概念図。
【符号の説明】
1…CPU
2…プログラムメモリ
3…ワークメモリ
4…シーケンス演算装置
5…シーケンスプログラムメモリ
6…データメモリ
7…マイコンバス
8…通信インタフェース
9…I/O
20…モニタ装置。
Claims (10)
- シーケンスプログラムメモリに記憶されているシーケンスプログラムを実行するシーケンス演算装置と、制御に使用する変数等のデータを記憶するデータメモリとを備えて構成されるプログラマブルコントローラにおいて、
1台の前記シーケンス演算装置が使用する前記データメモリの割付構成として、前記シーケンスプログラムを構成するタスクおよび当該タスク内のプログラム毎に、前記シーケンスプログラムのコンパイラが独立したデータ領域を割り当てるようにしたことを特徴とするプログラマブルコントローラ。 - コントローラ全体の実行制御を行なう中央演算処理装置と、前記中央演算処理装置が実行するプログラムを記憶しているプログラムメモリと、シーケンスプログラムメモリに記憶されているシーケンスプログラムを実行するシーケンス演算装置と、制御に使用する変数等のデータを記憶するデータメモリとを備えて構成されるプログラマブルコントローラにおいて、
1台の前記シーケンス演算装置が使用する前記データメモリの割付構成として、前記シーケンスプログラムを構成するタスクおよび当該タスク内のプログラム毎に、前記シーケンスプログラムのコンパイラが独立したデータ領域を割り当てるようにしたことを特徴とするプログラマブルコントローラ。 - 前記請求項1または請求項2に記載のプログラマブルコントローラにおいて、
前記プログラムに固有な変数をアクセスする際に、当該プログラムに固有のベースアドレスおよびオペランドアドレスとを加算して目的のメモリアドレスを生成することを特徴とするプログラマブルコントローラ。 - 前記請求項1または請求項2に記載のプログラマブルコントローラにおいて、前記シーケンス演算装置に、前記プログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタを備え、前記プログラムを切り替える際に所定の命令によって前記ベースアドレスレジスタの内容を変更するようにしたことを特徴とするプログラマブルコントローラ。
- 前記請求項4に記載のプログラマブルコントローラにおいて、前記ベースアドレスレジスタに、前記タスクが占用するデータ領域を示すアドレスを格納するタスクベースアドレス設定命令を設け、前記タスクを切り替える際に前記タスクベースアドレス設定命令を実行することにより、前記プログラムが使用するデータ領域を指定するようにしたことを特徴とするプログラマブルコントローラ。
- 前記請求項4に記載のプログラマブルコントローラにおいて、あるプログラムから他のプログラムを呼び出す際に、呼び出されるプログラムが占用するデータ領域のアドレスを、プログラム呼び出し命令によって前記ベースアドレスレジスタに設定することにより、前記呼び出されたプログラムが専用のデータ領域を使用するようにしたことを特徴とするプログラマブルコントローラ。
- 前記請求項1または請求項2に記載のプログラマブルコントローラにおいて、前記シーケンス演算装置に、前記プログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタと、前記プログラムに固有な変数領域の大きさを記憶するデータ範囲レジスタとを備え、あるプログラムから他のプログラムを呼び出す際に、呼び出されるプログラムが占用するデータ領域の先頭アドレスおよびデータ量を、プログラム呼び出し命令によって前記ベースアドレスレジスタおよびデータ範囲レジスタに設定することにより、前記呼び出されたプログラムの専用データ領域外へのアクセスを検出するようにしたことを特徴とするプログラマブルコントローラ。
- 前記請求項1または請求項2に記載のプログラマブルコントローラにおいて、前記シーケンス演算装置に、前記プログラムに固有な変数をアクセスする際にベースとなるベースアドレスを記憶するベースアドレスレジスタと、前記プログラムに固有な変数領域の大きさを記憶するデータ範囲レジスタとを備え、前記タスクを切り替える際に、当該タスクに固有な一時使用データ領域の先頭アドレスおよびデータ量を、専用のタスク切替命令によって一時使用データ用の前記ベースアドレスレジスタおよびデータ範囲レジスタに設定することにより、前記呼び出されたプログラムが使用するデータが専用のデータ領域を使用すると共に、前記専用データ領域外へのアクセスを検出するようにしたことを特徴とするプログラマブルコントローラ。
- 前記請求項1または請求項2に記載のプログラマブルコントローラにおいて、前記プログラムが使用する固有のデータ量をコンパイラに指示するように、前記プログラムに固有なデータ量をプログラム呼び出し命令の中に格納するようにしたことを特徴とするプログラマブルコントローラ。
- 前記請求項1または請求項2に記載のプログラマブルコントローラにおいて、前記プログラムを呼び出す際に、当該プログラムに付したプログラム番号によって前記プログラムの開始アドレスを指定すると共に、前記プログラム内から当該プログラム内でのみ使用される専用のプログラムを呼び出す際には、呼び出しアドレスからの相対アドレスによってプログラムを呼び出すようにしたことを特徴とするプログラマブルコントローラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19620499A JP3691986B2 (ja) | 1999-07-09 | 1999-07-09 | プログラマブルコントローラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19620499A JP3691986B2 (ja) | 1999-07-09 | 1999-07-09 | プログラマブルコントローラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001022413A JP2001022413A (ja) | 2001-01-26 |
JP3691986B2 true JP3691986B2 (ja) | 2005-09-07 |
Family
ID=16353938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19620499A Expired - Fee Related JP3691986B2 (ja) | 1999-07-09 | 1999-07-09 | プログラマブルコントローラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3691986B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4793585B2 (ja) * | 2006-03-15 | 2011-10-12 | オムロン株式会社 | プログラマブル・コントローラ |
KR101771289B1 (ko) * | 2014-05-19 | 2017-08-24 | 엘에스산전 주식회사 | Plc 프로그램 관리 장치 |
JP6295914B2 (ja) * | 2014-10-10 | 2018-03-20 | 富士電機株式会社 | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ |
KR102231963B1 (ko) * | 2019-10-21 | 2021-03-24 | 엘에스일렉트릭(주) | 피엘씨 변수의 메모리 할당 방법 |
JP7147808B2 (ja) * | 2020-06-30 | 2022-10-05 | 株式会社安川電機 | エンジニアリング装置、エンジニアリング方法、及びプログラム |
-
1999
- 1999-07-09 JP JP19620499A patent/JP3691986B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001022413A (ja) | 2001-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101581882B1 (ko) | 재구성 가능한 프로세서 및 그 재구성 방법 | |
US8219220B2 (en) | Industrial controller using shared memory multicore architecture | |
US5349680A (en) | Information processing apparatus for executing application programs under control of a system program | |
JP2007287103A (ja) | マイクロコンピュータ及びメモリアクセスの制御方法 | |
JP7048638B2 (ja) | コントロール装置 | |
US5968159A (en) | Interrupt system with fast response time | |
US5600807A (en) | Programmable controller capable of updating a user program during operation by switching between user program memories | |
JP3691986B2 (ja) | プログラマブルコントローラ | |
US7516311B2 (en) | Deterministic microcontroller context arrangement | |
US20060168427A1 (en) | Deterministic microcontroller with context manager | |
WO2006081094A2 (en) | Deterministic microcontroller | |
JP3674446B2 (ja) | 個別アプリケーションパッチ管理装置及び個別アプリケーションパッチ管理方法 | |
JP2020060908A (ja) | 処理プログラム、及び処理システム | |
KR100294655B1 (ko) | 멀티타스크기능을수행하는마이컴프로그래머블콘트롤러의제어방법 | |
JPH03113548A (ja) | 拡張メモリ制御装置 | |
JP5206091B2 (ja) | プログラマブルコントローラのデータアクセス方式 | |
US20060168420A1 (en) | Microcontroller cache memory | |
JP2000250612A (ja) | プログラマブルコントローラ | |
JP2576899B2 (ja) | 情報処理装置 | |
JPH059815B2 (ja) | ||
JP2573391B2 (ja) | プログラマブルコントローラ | |
JPH06110707A (ja) | 高優先度割り込み方法及び該方法が採用されたマイクロプロセッサ | |
JPS6231438A (ja) | 仮想計算機システム | |
JPS61133437A (ja) | ワンチツプマイクロコンピユ−タ | |
JPS63120303A (ja) | 汎用コントロ−ラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050322 |
|
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: 20050614 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050617 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 3691986 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090624 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090624 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100624 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100624 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110624 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120624 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120624 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130624 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |