JPH02263241A - プログラム作成装置および制御装置 - Google Patents
プログラム作成装置および制御装置Info
- Publication number
- JPH02263241A JPH02263241A JP8147389A JP8147389A JPH02263241A JP H02263241 A JPH02263241 A JP H02263241A JP 8147389 A JP8147389 A JP 8147389A JP 8147389 A JP8147389 A JP 8147389A JP H02263241 A JPH02263241 A JP H02263241A
- Authority
- JP
- Japan
- Prior art keywords
- work area
- program
- memory
- package
- 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.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[発明の目的]
(産業上の利用分野)
この発明は、鉄鋼、紙バルブ、化学、食品プラントなど
の一般産業設備や上下水道設備、廃棄物処理設備、ビル
設備などのFAシステムにおける制御装置に用いられる
プログラム作成装置と制御装置とに関する。
の一般産業設備や上下水道設備、廃棄物処理設備、ビル
設備などのFAシステムにおける制御装置に用いられる
プログラム作成装置と制御装置とに関する。
(従来の技術)
コンピュータ技術において一般に、ワークエリアは演算
値のようなテンポラリデータの保存に使用されるレジス
タ的な使用と、時系列データの演算・参照を目的として
データ保存を行なう使用との2種類の形態の使用が可能
なメモリエリアである。
値のようなテンポラリデータの保存に使用されるレジス
タ的な使用と、時系列データの演算・参照を目的として
データ保存を行なう使用との2種類の形態の使用が可能
なメモリエリアである。
そこで、従来、このワークエリアを有効に活用してプロ
セスの制御を行なうプログラム制御装置が広く利用され
るようになって来ている。そして、この様なプロセスの
プログラム制御装置では、プロセス制御プログラムのプ
ログラミング言語として、シーケンス制御用にはラダー
ダイヤグラムやSFC(Sequential Fu
ncti。
セスの制御を行なうプログラム制御装置が広く利用され
るようになって来ている。そして、この様なプロセスの
プログラム制御装置では、プロセス制御プログラムのプ
ログラミング言語として、シーケンス制御用にはラダー
ダイヤグラムやSFC(Sequential Fu
ncti。
n Cha r t) 、計装ループ制御用には計装
ブロックなどのPOL言語が採用されている。
ブロックなどのPOL言語が採用されている。
これらのPOL言語は、制御に必要な最小単位の機能を
パッケージ化(サブルーチン化)したものである。そし
て、サブルーチンプログラムはおおむね制御タスク作成
時には標準パッケージとしてすでに用意されているが、
標準パッケージだけでは目的とする制御タスクを作成で
きないようなシステムの制御を行なわなければならない
場合には、制御タスクを作成する前に要求仕様を満足す
るようなパッケージを新たに作成する必要がある。
パッケージ化(サブルーチン化)したものである。そし
て、サブルーチンプログラムはおおむね制御タスク作成
時には標準パッケージとしてすでに用意されているが、
標準パッケージだけでは目的とする制御タスクを作成で
きないようなシステムの制御を行なわなければならない
場合には、制御タスクを作成する前に要求仕様を満足す
るようなパッケージを新たに作成する必要がある。
この制御タスクの作成は、用意されたパッケージ(サブ
ルーチンプログラム)に、対象プロセス制御に適したパ
ラメータを設定し、これを積み上げることにより実現す
る。
ルーチンプログラム)に、対象プロセス制御に適したパ
ラメータを設定し、これを積み上げることにより実現す
る。
ところが、従来のワークエリア管理方式では、制御タス
ク作成時に、ワークエリアを必要とするパッケージには
ワークエリアアドレスをも1パラメータとして制御タス
クのプログラマ−が人為的に固定アドレスを割り付ける
ようにしている。
ク作成時に、ワークエリアを必要とするパッケージには
ワークエリアアドレスをも1パラメータとして制御タス
クのプログラマ−が人為的に固定アドレスを割り付ける
ようにしている。
このワークエリアの人為的な割付けは、制御タスク中の
ワークエリアを必要とするパッケージのワークエリアア
ドレス設定パラメータの端子にパッケージで使用するワ
ークエリアアドレスを逐一記述しなければ成らないため
、プログラム設計から保守に至るまでのエンジニアリン
グコストを増大させる問題点があった。
ワークエリアを必要とするパッケージのワークエリアア
ドレス設定パラメータの端子にパッケージで使用するワ
ークエリアアドレスを逐一記述しなければ成らないため
、プログラム設計から保守に至るまでのエンジニアリン
グコストを増大させる問題点があった。
また、使用ワークエリア領域の予約・保守を人間系で行
なうために不完全であって、ワークエリアの重複使用や
記述ミスといった誤りも犯し易く、解析の困難なトラブ
ルが発生する問題点もあった。
なうために不完全であって、ワークエリアの重複使用や
記述ミスといった誤りも犯し易く、解析の困難なトラブ
ルが発生する問題点もあった。
さらに、ワークエリアの固定アドレス割付けは、タスク
単位での使用可能なワークエリアサイズが固定であると
いう制限にも関連しており、タスク単位でのワークエリ
アサイズの制限は制御タスク作成時にパッケージの組合
わせによってはワークエリアが不足してくる場合もあり
、本来の制御タスクのプログラミングの妨げとなる問題
点もあった。
単位での使用可能なワークエリアサイズが固定であると
いう制限にも関連しており、タスク単位でのワークエリ
アサイズの制限は制御タスク作成時にパッケージの組合
わせによってはワークエリアが不足してくる場合もあり
、本来の制御タスクのプログラミングの妨げとなる問題
点もあった。
加えて、最近の制御装置では、プログラムメモリの有効
活用を目的として、プログラムダウンローディング時の
プログラムメモリ自動割付は処理や不要となった制御タ
スクを削除したり制御タスクの入れ替えを行なった場合
のパッキング処理(不使用の制御タスクプログラムのメ
モリに後続の制御タスクプログラムを前詰めに移動させ
ることにより、メモリの不使用領域と使用領域との混在
を無くす処理)を可能とする装置があるが、ワークエリ
アを固定アドレス割付、けとすると、制御タスクのダウ
ンローディング後の削除時などに特にワークエリア領域
内でメモリの不使用領域と使用領域が混在し、プログラ
ムメモリ有効活用の思想に合致しなくなる場合が起こる
問題点もあった。
活用を目的として、プログラムダウンローディング時の
プログラムメモリ自動割付は処理や不要となった制御タ
スクを削除したり制御タスクの入れ替えを行なった場合
のパッキング処理(不使用の制御タスクプログラムのメ
モリに後続の制御タスクプログラムを前詰めに移動させ
ることにより、メモリの不使用領域と使用領域との混在
を無くす処理)を可能とする装置があるが、ワークエリ
アを固定アドレス割付、けとすると、制御タスクのダウ
ンローディング後の削除時などに特にワークエリア領域
内でメモリの不使用領域と使用領域が混在し、プログラ
ムメモリ有効活用の思想に合致しなくなる場合が起こる
問題点もあった。
(発明が解決しようとする課題)
以上のように従来のプログラム制御装置では制御タスク
のワークエリアを固定アドレスとして人為的に割り付け
ていたために重複割付けや記述ミスにより解析困難なト
ラブルが生じたり、ワークエリア不足を生じるために、
効率的な制御タスクプログラミングが妨げられたり、さ
らにワークエリアの不使用領域と使用領域とが混在する
ことによりプログラムメモリの有効活用が図れなくなる
といった問題点があった。
のワークエリアを固定アドレスとして人為的に割り付け
ていたために重複割付けや記述ミスにより解析困難なト
ラブルが生じたり、ワークエリア不足を生じるために、
効率的な制御タスクプログラミングが妨げられたり、さ
らにワークエリアの不使用領域と使用領域とが混在する
ことによりプログラムメモリの有効活用が図れなくなる
といった問題点があった。
この発明は、このような従来の問題点に鑑みて成された
もので、制御装置単位でのプログラムワークエリアの自
動割付けを行なうことによりエンジニアリングコストの
削減、ワークエリアアドレスの設定ミスに起因するトラ
ブルの撲滅、メモリの有効活用、プログラム作成/変更
に柔軟に対応することのできるプログラム作成装置およ
び制御装置を提供することを目的とする。
もので、制御装置単位でのプログラムワークエリアの自
動割付けを行なうことによりエンジニアリングコストの
削減、ワークエリアアドレスの設定ミスに起因するトラ
ブルの撲滅、メモリの有効活用、プログラム作成/変更
に柔軟に対応することのできるプログラム作成装置およ
び制御装置を提供することを目的とする。
[発明の構成]
(課題を解決するための手段)
この発明の請求項1のプログラム作成装置は、入力され
たプログラムに対してコンパイルを行なうコンパイル部
と、前記コンパイル部のコンパイル時にプログラム中の
ワークエリアを使用するパッケージをコールする箇所に
ワークエリア相対アドレス情報を設定するワークエリア
相対アドレス設定部と、前記コンパイル部によりコンパ
イルされた結果、パッケージコール部分にパッケージ毎
のワークエリア相対アドレス情報が付加されたオブジェ
クトプログラムとそのオブジェクトプログラムのサイズ
とオブジェクトプログラムで使用するワークエリアサイ
ズとを共にダウンローデインするダウンローディング部
とを備えたものである。
たプログラムに対してコンパイルを行なうコンパイル部
と、前記コンパイル部のコンパイル時にプログラム中の
ワークエリアを使用するパッケージをコールする箇所に
ワークエリア相対アドレス情報を設定するワークエリア
相対アドレス設定部と、前記コンパイル部によりコンパ
イルされた結果、パッケージコール部分にパッケージ毎
のワークエリア相対アドレス情報が付加されたオブジェ
クトプログラムとそのオブジェクトプログラムのサイズ
とオブジェクトプログラムで使用するワークエリアサイ
ズとを共にダウンローデインするダウンローディング部
とを備えたものである。
また、この発明の請求項2の制御装置は、請求項1に記
載のプログラム作成装置からダウンローディングされて
くるオブジェクトプログラムを記憶するプログラムメモ
リと、ワークエリアメモリと、前記オブジェクトプログ
ラムを前記プログラムメモリの所定のアドレスに割り付
けて記憶させるプログラムメモリ割付は部と、前記オブ
ジェクトプログラムに含まれる各パッケージのワークエ
リア相対アドレス情報に応じて前記ワークエリアメモリ
にパッケージ毎のワークエリアを割り付けるワークエリ
アメモリ割付は部と、前記プログラムメモリに記憶され
ているオブジェクトプログラムの実行管理を司るタスク
スケジューラとを備えたものである。
載のプログラム作成装置からダウンローディングされて
くるオブジェクトプログラムを記憶するプログラムメモ
リと、ワークエリアメモリと、前記オブジェクトプログ
ラムを前記プログラムメモリの所定のアドレスに割り付
けて記憶させるプログラムメモリ割付は部と、前記オブ
ジェクトプログラムに含まれる各パッケージのワークエ
リア相対アドレス情報に応じて前記ワークエリアメモリ
にパッケージ毎のワークエリアを割り付けるワークエリ
アメモリ割付は部と、前記プログラムメモリに記憶され
ているオブジェクトプログラムの実行管理を司るタスク
スケジューラとを備えたものである。
この発明の請求項3の制御装置は、請求項2の制御装置
に対してさらに、プログラムのパッキング部と、このパ
ッキング部によるプログラムのパッキング時にプログラ
ムメモリとワークエリアメモリとにそれぞれプログラム
毎のワークエリアを再割付けするプログラムメモリ再割
付は部およびワークエリアメモリ再割付は部とを設けた
ものである。
に対してさらに、プログラムのパッキング部と、このパ
ッキング部によるプログラムのパッキング時にプログラ
ムメモリとワークエリアメモリとにそれぞれプログラム
毎のワークエリアを再割付けするプログラムメモリ再割
付は部およびワークエリアメモリ再割付は部とを設けた
ものである。
(作用)
この発明の請求項1のプログラム作成装置では、プログ
ラマが入力装置を通して入力する制御タスクプログラム
に対して、コンパイル部がコンパイルを行ない、オブジ
ェクトプログラムを作成すると共に、このコンパイル時
にワークエリア相対アドレス設定部が制御タスクがワー
クエリアを使用するパッケージをコールする箇所にワー
クエリア相対アドレスを設定する。
ラマが入力装置を通して入力する制御タスクプログラム
に対して、コンパイル部がコンパイルを行ない、オブジ
ェクトプログラムを作成すると共に、このコンパイル時
にワークエリア相対アドレス設定部が制御タスクがワー
クエリアを使用するパッケージをコールする箇所にワー
クエリア相対アドレスを設定する。
そして、ダウンローディング部が制御装置に対してオブ
ジェクトプログラムをダウンローディングする時には、
パッケージに支えるワークエリア相対アドレス情報を含
むオブジェクトプログラムのダウンローディングと共に
、オブジェクトプログラム毎のワークエリアサイズもダ
ウンローディングし、制御装置側でオブジェクトプログ
ラム毎にそのワークエリアメモリ上に所定の大きさのワ
ークエリアを自動的に割付けさせるようにする。
ジェクトプログラムをダウンローディングする時には、
パッケージに支えるワークエリア相対アドレス情報を含
むオブジェクトプログラムのダウンローディングと共に
、オブジェクトプログラム毎のワークエリアサイズもダ
ウンローディングし、制御装置側でオブジェクトプログ
ラム毎にそのワークエリアメモリ上に所定の大きさのワ
ークエリアを自動的に割付けさせるようにする。
そして、この発明の請求項2の制御装置では、請求項1
のプログラム作成装置からダウンローディングされてき
たオブジェクトプログラムをプログラムメモリに記憶さ
せるのであるが、その時にプログラムメモリ割付は部が
オブジェクトプログラムを所定のアドレスに自動的に割
り付けて記憶させていく。また、ダウンローディングさ
れてきたオブジェクトプログラム中で使用するワークエ
リアについては、ワークエリアメモリ割付は部がワーク
エリアメモリの所定のアドレスに自動的に割り付けてい
く。
のプログラム作成装置からダウンローディングされてき
たオブジェクトプログラムをプログラムメモリに記憶さ
せるのであるが、その時にプログラムメモリ割付は部が
オブジェクトプログラムを所定のアドレスに自動的に割
り付けて記憶させていく。また、ダウンローディングさ
れてきたオブジェクトプログラム中で使用するワークエ
リアについては、ワークエリアメモリ割付は部がワーク
エリアメモリの所定のアドレスに自動的に割り付けてい
く。
こうしてダウンローディングされたオブジェクトプログ
ラムはタスクスケジューラにより起動され、制御を行な
う。
ラムはタスクスケジューラにより起動され、制御を行な
う。
さらにこの発明の請求項3の制御装置では、パッキング
部によりプログラムメモリ中のオブジェクトプログラム
から不使用になったプログラムおよびワークエリアを削
除し、同時にプログラムメモリ再割付は部により各オブ
ジェクトプログラムをプログラムメモリ上の所定のアド
レスに再割付けして記憶させ、またワークエリア再割付
は部によりオブジェクトプログラム毎にそのワークエリ
アをワークエリアメモリ上に再割付けし、タスクスケジ
ューラのプログラム実行に供する。
部によりプログラムメモリ中のオブジェクトプログラム
から不使用になったプログラムおよびワークエリアを削
除し、同時にプログラムメモリ再割付は部により各オブ
ジェクトプログラムをプログラムメモリ上の所定のアド
レスに再割付けして記憶させ、またワークエリア再割付
は部によりオブジェクトプログラム毎にそのワークエリ
アをワークエリアメモリ上に再割付けし、タスクスケジ
ューラのプログラム実行に供する。
(実施例)
以下、この発明の実施例を図に基づいて詳説する。
第1図はこの発明の請求項1のプログラム作成装置の一
実施例を示しており、第2図はこの発明の請求項2の制
御装置の一実施例を示している。
実施例を示しており、第2図はこの発明の請求項2の制
御装置の一実施例を示している。
第1図に示すプログラム作成装置2において、プログラ
マがプログラムを入力する入力装置1と、この入力装置
1から入力をコンパイルしてオブジェクトプログラムを
作成するコンパイル部201と、このコンパイル部20
1においてコンパイルされたオブジェクトプログラムか
らコールされる種々のパッケージについて、ワークエリ
アを必要とするパッケージに対してオブジェクトプログ
ラムのパッケージコール部分にワークエリアの大きさに
応じた相対アドレスを設定するワークエリア相対アドレ
ス設定部202と、前記コンパイル部201がコンパイ
ルしたオブジェクトプログラムをそのタスクサイズ情報
、ワークエリアサイズ情報と共に制御装置3にダウンロ
ーディングするダウンローディング部203とを備えて
いる。
マがプログラムを入力する入力装置1と、この入力装置
1から入力をコンパイルしてオブジェクトプログラムを
作成するコンパイル部201と、このコンパイル部20
1においてコンパイルされたオブジェクトプログラムか
らコールされる種々のパッケージについて、ワークエリ
アを必要とするパッケージに対してオブジェクトプログ
ラムのパッケージコール部分にワークエリアの大きさに
応じた相対アドレスを設定するワークエリア相対アドレ
ス設定部202と、前記コンパイル部201がコンパイ
ルしたオブジェクトプログラムをそのタスクサイズ情報
、ワークエリアサイズ情報と共に制御装置3にダウンロ
ーディングするダウンローディング部203とを備えて
いる。
そして、第2図に詳しく示した制御装置3は、プログラ
ム作成部2からダウンローディングされてくるオブジェ
クトプログラムの入力処理を行なう入力部301と、入
力されてきたオブジェクトプログラムを記憶するプログ
ラム記憶部302と、オブジェクトプログラムに含まれ
るパッケージ毎のワークエリアを設定するワークエリア
メモリ303と、このプログラムメモリにオブジェクト
プログラム毎の先頭アドレスを自動的に割り付けるプロ
グラムメモリアドレス割付は部304と、オブジェクト
プログラム毎のワークエリアの先頭アドレスを自動的に
割り付けるワークエリア割付は部305とを備えている
。
ム作成部2からダウンローディングされてくるオブジェ
クトプログラムの入力処理を行なう入力部301と、入
力されてきたオブジェクトプログラムを記憶するプログ
ラム記憶部302と、オブジェクトプログラムに含まれ
るパッケージ毎のワークエリアを設定するワークエリア
メモリ303と、このプログラムメモリにオブジェクト
プログラム毎の先頭アドレスを自動的に割り付けるプロ
グラムメモリアドレス割付は部304と、オブジェクト
プログラム毎のワークエリアの先頭アドレスを自動的に
割り付けるワークエリア割付は部305とを備えている
。
また、この制御装置3はパッキング機能を備えていて、
パッキングのためのパッキング部306と、パッキング
後のオブジェクドブ、ログラム毎の先頭アドレスを再割
付けするプログラムメモリアドレス再割付は部307と
、ワークエリアの再割付けのためのワークエリア再割付
は部308とを備えている。
パッキングのためのパッキング部306と、パッキング
後のオブジェクドブ、ログラム毎の先頭アドレスを再割
付けするプログラムメモリアドレス再割付は部307と
、ワークエリアの再割付けのためのワークエリア再割付
は部308とを備えている。
さらに、制御装置3は、プログラムの実行のためのオブ
ジェクトプログラム先頭アドレス、ワークエリア先頭ア
ドレス、タスクサイズ、ワークエリアサイズを登録する
管理テーブルメモリ309と、この管理テーブルメモリ
309に対してそれらの必要情報を記憶させるための管
理テーブル作成部310と、プログラム実行・管理を司
るタスクスケジューラ311と、このタスクスケジュー
ラ311によりワークエリア先頭アドレスを取り出して
セットされるインデックスレジスタ312とを備えてい
る。
ジェクトプログラム先頭アドレス、ワークエリア先頭ア
ドレス、タスクサイズ、ワークエリアサイズを登録する
管理テーブルメモリ309と、この管理テーブルメモリ
309に対してそれらの必要情報を記憶させるための管
理テーブル作成部310と、プログラム実行・管理を司
るタスクスケジューラ311と、このタスクスケジュー
ラ311によりワークエリア先頭アドレスを取り出して
セットされるインデックスレジスタ312とを備えてい
る。
上記の構成のプログラム作成装置およびプログラム制御
装置の動作について、次に説明する。
装置の動作について、次に説明する。
制御タスク(オブジェクトプログラム)のプログラマ−
がプログラム作成装置2を用いて制御タスクプログラム
を作成すると、プログラム作成装置2はコンパイル部2
01によりコンパイル部、ダウンローディング部203
により制御装置3にダウンローディングする。この場合
、プログラム作成部2から制御装置3にタスクオブジェ
クトプログラムサイズ、タスクで使用するワークエリア
サイズ、及びタスクオブジェクトプログラムが送信され
る。
がプログラム作成装置2を用いて制御タスクプログラム
を作成すると、プログラム作成装置2はコンパイル部2
01によりコンパイル部、ダウンローディング部203
により制御装置3にダウンローディングする。この場合
、プログラム作成部2から制御装置3にタスクオブジェ
クトプログラムサイズ、タスクで使用するワークエリア
サイズ、及びタスクオブジェクトプログラムが送信され
る。
第4図および第5図にコンパイル部201における制御
タスクオブジェクトおよびパッケージオブジェクトのコ
ンパイル処理が示されている。まず、タスク内使用ワー
クエリアの相対アドレスを初期化しく5TI) 、タス
クエンドに至るまでワークエリアを使用するパッケージ
をサーチしくSr1,5T3) 、ワークエリアを使用
するパッヶ−ジに対しては、パッケージをコールする前
に使用ワークエリアアドレスをスタックにブツシュする
ステートメントを付加しく5T5) 、ワークエリア相
対アドレス設定部202においてタスク内使用ワークエ
リア相対アドレスにパッケージワークエリアサイズを加
算してい< (Sr1)。
タスクオブジェクトおよびパッケージオブジェクトのコ
ンパイル処理が示されている。まず、タスク内使用ワー
クエリアの相対アドレスを初期化しく5TI) 、タス
クエンドに至るまでワークエリアを使用するパッケージ
をサーチしくSr1,5T3) 、ワークエリアを使用
するパッヶ−ジに対しては、パッケージをコールする前
に使用ワークエリアアドレスをスタックにブツシュする
ステートメントを付加しく5T5) 、ワークエリア相
対アドレス設定部202においてタスク内使用ワークエ
リア相対アドレスにパッケージワークエリアサイズを加
算してい< (Sr1)。
Sr1において、ワークエリアを使用しないパッケージ
に対してはそのパッケージのコール命令だけをセットし
て次のパッケージに移行する(Sr1)。
に対してはそのパッケージのコール命令だけをセットし
て次のパッケージに移行する(Sr1)。
上記の動作はタスクエンド命令に至るまで繰り返し行わ
れる。
れる。
また、プログラム作成部2のコンパイル部201による
パッケージのコンパイル処理は、第5図に示すようにそ
のパッケージがワークエリアを使用しているかどうかを
判断しく5T11)、ワークエリアを使用しているパッ
ケージに対してはパッケージの先頭にスタックからの使
用ワークエリアアドレスをポツプするステートメントを
付加する(ST12)。
パッケージのコンパイル処理は、第5図に示すようにそ
のパッケージがワークエリアを使用しているかどうかを
判断しく5T11)、ワークエリアを使用しているパッ
ケージに対してはパッケージの先頭にスタックからの使
用ワークエリアアドレスをポツプするステートメントを
付加する(ST12)。
制御装置3では、プログラムメモリアドレス割付は部3
04、ワークエリア割付は部305によりタスクサイズ
、ワークエリアサイズを基準にしてプログラムメモリ3
02、ワークエリアメモリ303の空きエリアに自動割
付けし、管理テーブル作成部310により管理テーブル
メモリ311にタスク先頭アドレスTa、ワークエリア
先頭アドレスW a 、タスクサイズTs、ワークエリ
アサイズWsを登録し、同時にプログラムメモリ302
のタスク先頭アドレスTaからタスクオブジェクトプロ
グラムを格納していく。
04、ワークエリア割付は部305によりタスクサイズ
、ワークエリアサイズを基準にしてプログラムメモリ3
02、ワークエリアメモリ303の空きエリアに自動割
付けし、管理テーブル作成部310により管理テーブル
メモリ311にタスク先頭アドレスTa、ワークエリア
先頭アドレスW a 、タスクサイズTs、ワークエリ
アサイズWsを登録し、同時にプログラムメモリ302
のタスク先頭アドレスTaからタスクオブジェクトプロ
グラムを格納していく。
そして、このタスクの起動タイミングとなった場合、タ
スクの実行管理を司るタスクスケジューラ311は、管
理テーブルメモリ309からワークエリア先頭アドレス
Waを取り出し、インデックスレジスタRXにセットし
、このタスクを起動する。
スクの実行管理を司るタスクスケジューラ311は、管
理テーブルメモリ309からワークエリア先頭アドレス
Waを取り出し、インデックスレジスタRXにセットし
、このタスクを起動する。
制御タスクプログラムのロジックは、制御タスクを構成
するパッケージを呼び出す処理の集合体であり、第3図
に示すような構成を備えている。
するパッケージを呼び出す処理の集合体であり、第3図
に示すような構成を備えている。
つまり、タスクオブジェクトプログラム5は、パッケー
ジSIO,S20.S25.S31をそれぞれ呼び出す
「パッケージ呼び出し処理」およびEND命令によって
構成されている。この各々のパッケージのワークエリア
サイズは、例えばパッケージS10が6バイト、S20
が0バイト、S25が2バイト、S31が4バイトであ
るとすると、この制御タスクのワークエリアサイズWs
は全体で12バイトである。
ジSIO,S20.S25.S31をそれぞれ呼び出す
「パッケージ呼び出し処理」およびEND命令によって
構成されている。この各々のパッケージのワークエリア
サイズは、例えばパッケージS10が6バイト、S20
が0バイト、S25が2バイト、S31が4バイトであ
るとすると、この制御タスクのワークエリアサイズWs
は全体で12バイトである。
第3図ではタスクオブジェクト5とパッケージオブジェ
クト6とは別エリアに登録されているように示しである
が、実際には同一のプログラムメモリ302上にタスク
オブジェクトとパッケージオブジェクトとが混在した形
で格納されているのである。
クト6とは別エリアに登録されているように示しである
が、実際には同一のプログラムメモリ302上にタスク
オブジェクトとパッケージオブジェクトとが混在した形
で格納されているのである。
タスクスケジューラ311により起動された制御タスク
は、まず「パッケージS10呼び出し処理」を実行する
。
は、まず「パッケージS10呼び出し処理」を実行する
。
このパッケージS10は、ワークエリアを使用するパッ
ケージなので、パッケージコール命令の前にパッケージ
S10で使用するワークエリア先頭アドレスを求め、ス
タックにブツシュする処理が付加されている。パッケー
ジS10はこの制御タスクの1番目の処理なので、タス
ク内使用ワークエリア相対アドレスとして0がセットさ
れている。したがって、この値をインデックスレジスタ
RXの内容Waでインデックス修飾した値(Wa−〇+
Wa)がパッケージのワークエリア先頭アドレスとして
スタックにブツシュされ、パッケージSIOがコールさ
れる。
ケージなので、パッケージコール命令の前にパッケージ
S10で使用するワークエリア先頭アドレスを求め、ス
タックにブツシュする処理が付加されている。パッケー
ジS10はこの制御タスクの1番目の処理なので、タス
ク内使用ワークエリア相対アドレスとして0がセットさ
れている。したがって、この値をインデックスレジスタ
RXの内容Waでインデックス修飾した値(Wa−〇+
Wa)がパッケージのワークエリア先頭アドレスとして
スタックにブツシュされ、パッケージSIOがコールさ
れる。
なおここで、タスクの先頭から最後まで、インデックス
レジスタRXは破壊されてはならない。
レジスタRXは破壊されてはならない。
パッケージS10は処理の先頭でスタックからパッケー
ジS10のワークエリア先頭アドレスWaをポツプし、
パッケージS10の処理が終了したならば、制御タスク
のパッケージコール命令の次番地にリターンする。
ジS10のワークエリア先頭アドレスWaをポツプし、
パッケージS10の処理が終了したならば、制御タスク
のパッケージコール命令の次番地にリターンする。
次は、「パッケージS20の呼び出し処理」であるが、
このパッケージはワークエリアを使用しないので、ワー
クエリア関連処理は付加されておらず、ここではワーク
エリア先頭アドレスをポツプする処理は付加されない。
このパッケージはワークエリアを使用しないので、ワー
クエリア関連処理は付加されておらず、ここではワーク
エリア先頭アドレスをポツプする処理は付加されない。
次の「パッケージS25呼び出し処理」と、「パッケー
ジS31呼び出し処理」とは、前記「パッケージS10
呼び出し処理」と同様にそれぞれのパッケージをコール
するに際して、パッケージワークエリア先頭アドレスと
してそれぞれ(Wa+6)、(Wa+8)番地をスタッ
クにブツシュして該当するパッケージをコールすること
により制御タスクが実行される。
ジS31呼び出し処理」とは、前記「パッケージS10
呼び出し処理」と同様にそれぞれのパッケージをコール
するに際して、パッケージワークエリア先頭アドレスと
してそれぞれ(Wa+6)、(Wa+8)番地をスタッ
クにブツシュして該当するパッケージをコールすること
により制御タスクが実行される。
これらの一連の処理の系別機能分担が第6図にまとめて
示されているが、系として人間系8、プログラム作成装
置系9、制御装置系10の3種類があり、以下、系別に
その処理機能を説明する。
示されているが、系として人間系8、プログラム作成装
置系9、制御装置系10の3種類があり、以下、系別に
その処理機能を説明する。
人間系8では、制御装置3内のワークエリア先頭アドレ
ス及びサイズを指定する。このサイズはタスク単位では
なく制御装置−括単位なので、このサイズをオーバーし
ない限り制御タスク単位でのワークエリアサイズは無制
限に使用可能である。
ス及びサイズを指定する。このサイズはタスク単位では
なく制御装置−括単位なので、このサイズをオーバーし
ない限り制御タスク単位でのワークエリアサイズは無制
限に使用可能である。
続いて、制御タスク構成要求であるパッケージを作成す
る。ここで、ワークエリアを使用スルパ゛ッケージなら
ば、コンパイルデータとして必要なのでパッケージのワ
ークエリア使用サイズを登録する。ただし、標準パッケ
ージだけで制御タスクの作成が可能なシステムの場合に
は、パッケージの作成の必要はない。
る。ここで、ワークエリアを使用スルパ゛ッケージなら
ば、コンパイルデータとして必要なのでパッケージのワ
ークエリア使用サイズを登録する。ただし、標準パッケ
ージだけで制御タスクの作成が可能なシステムの場合に
は、パッケージの作成の必要はない。
最後に、制御タスクの作成を行なう。この時、制御タス
クを構成するパッケージのパラメータとしてワークエリ
アアドレスを指定する必要はない。
クを構成するパッケージのパラメータとしてワークエリ
アアドレスを指定する必要はない。
人間系8における制御タスク作成が完了したならば、プ
ログラム作成装置系9でコンパイルを実行する。この時
、前述の第4図および第5図に示す処理に基づき、制御
タスクのワークエリア使用パッケージをコールする箇所
にワークエリア相対アドレス情報が設定される。また、
ワークエリアを使用するパッケージの先頭にはスタック
からワークエリア先頭アドレスを取り出す処理が付加さ
れる。
ログラム作成装置系9でコンパイルを実行する。この時
、前述の第4図および第5図に示す処理に基づき、制御
タスクのワークエリア使用パッケージをコールする箇所
にワークエリア相対アドレス情報が設定される。また、
ワークエリアを使用するパッケージの先頭にはスタック
からワークエリア先頭アドレスを取り出す処理が付加さ
れる。
コンパイルが完了した場合、制御装置系1oに対して制
御タスクのダウンローディングを行う。
御タスクのダウンローディングを行う。
この時のダウンローディング項目は、タスクサイズ、ワ
ークエリアサイズ、タスクオブジェクトである。
ークエリアサイズ、タスクオブジェクトである。
制御装置系10では、ダウンローディングデータを受信
すると、第3図に示したようにプログラムメモリ302
とワークエリアメモリ303とにプログラムパッケージ
の先頭アドレス、ワークエリア先頭アドレスの自動割付
けを行ない、制御タスクプログラムを実行する。
すると、第3図に示したようにプログラムメモリ302
とワークエリアメモリ303とにプログラムパッケージ
の先頭アドレス、ワークエリア先頭アドレスの自動割付
けを行ない、制御タスクプログラムを実行する。
ダウンローディング処理や制御タスクの削除処理を繰り
返すうちにパッキング処理が必要になった場合には、制
御タスク実行の合間にパッキング部306によりパッキ
ング処理を行ない、削除されていない制御タスクのプロ
グラムメモリとワークエリアメモリとの内容を前詰めに
パッキングし、新しいタスク先頭アドレスとワークエリ
ア先頭アドレスとをそれぞれプログラムメモリアドレス
再割付は部307とワークエリア再割付は部308とに
より再割付けし、それらのアドレス情報を管理テーブル
作成部310により管理テーブルメモリ311に登録す
る。
返すうちにパッキング処理が必要になった場合には、制
御タスク実行の合間にパッキング部306によりパッキ
ング処理を行ない、削除されていない制御タスクのプロ
グラムメモリとワークエリアメモリとの内容を前詰めに
パッキングし、新しいタスク先頭アドレスとワークエリ
ア先頭アドレスとをそれぞれプログラムメモリアドレス
再割付は部307とワークエリア再割付は部308とに
より再割付けし、それらのアドレス情報を管理テーブル
作成部310により管理テーブルメモリ311に登録す
る。
このようにして、制御装置のダウンローディング時、パ
ッキング時において、常にタスクのワークエリア先頭ア
ドレスを自動割付けし、タスク・サブルーチンを管理す
る管理テーブルにそれらのアドレス情報を保存し、タス
クスケジューラが制御タスクを起動するごとに管理テー
ブルよりタスクに割り付けられたワークエリア先頭アド
レスを取り出し、インデックスレジスタにセットし、制
御タスクプログラムを実行する。
ッキング時において、常にタスクのワークエリア先頭ア
ドレスを自動割付けし、タスク・サブルーチンを管理す
る管理テーブルにそれらのアドレス情報を保存し、タス
クスケジューラが制御タスクを起動するごとに管理テー
ブルよりタスクに割り付けられたワークエリア先頭アド
レスを取り出し、インデックスレジスタにセットし、制
御タスクプログラムを実行する。
そして、制御タスク(オブジェクトプログラム)は、ワ
ークエリア使用のパッケージをコールする前にコンパイ
ル部により設定されたタスク内使用ワークエリア相対ア
ドレスに上記のインデックスレジスタの値をインデック
ス修飾した値、すなわちコールするパッケージのワーク
エリア先頭アドレスをスタックにブツシュする。
ークエリア使用のパッケージをコールする前にコンパイ
ル部により設定されたタスク内使用ワークエリア相対ア
ドレスに上記のインデックスレジスタの値をインデック
ス修飾した値、すなわちコールするパッケージのワーク
エリア先頭アドレスをスタックにブツシュする。
コールされたパッケージは、処理の先頭で、このパッケ
ージで使用できるワークエリア先頭アドレスをスタック
からポツプし、パッケージ内での以降の処理に用いる。
ージで使用できるワークエリア先頭アドレスをスタック
からポツプし、パッケージ内での以降の処理に用いる。
これにより、この発明の実施例に係るプログラム作成装
置および制御装置では、制御タスクプログラミング時の
パッケージのワークエリアアドレス指定の負担がなくな
り、加えてワークエリアもパッキング対象となるために
プログラムメモリだけでなく、ワークエリアのメモリを
も有効に活用でき、プログラム作成争変更に柔軟に対応
できるのである。
置および制御装置では、制御タスクプログラミング時の
パッケージのワークエリアアドレス指定の負担がなくな
り、加えてワークエリアもパッキング対象となるために
プログラムメモリだけでなく、ワークエリアのメモリを
も有効に活用でき、プログラム作成争変更に柔軟に対応
できるのである。
[発明の効果]
以上のようにこの発明の請求項1のプログラム作成装置
では、制御タスクのコンパイル時にワークエリアを使用
するパッケージをコールする箇所にワークエリア相対ア
ドレス情報を設定し、制御装置にダウンローディングす
る際にはタスクサイズとワークエリアサイズとをタスク
オブジェクトと共にダウンローディングするようにして
いるため、制御装置において制御タスクのパッケージ毎
のワークエリアをワークエリアメモリ上に自動割付けで
きるようになる。
では、制御タスクのコンパイル時にワークエリアを使用
するパッケージをコールする箇所にワークエリア相対ア
ドレス情報を設定し、制御装置にダウンローディングす
る際にはタスクサイズとワークエリアサイズとをタスク
オブジェクトと共にダウンローディングするようにして
いるため、制御装置において制御タスクのパッケージ毎
のワークエリアをワークエリアメモリ上に自動割付けで
きるようになる。
またこの発明の請求項2の制御装置では、前記プログラ
ム作成装置により作成されダウンローディングされてき
た制御タスクに対して、そのダウンローディング時にプ
ログラムメモリ、ワークエリアメモリの空きエリアへの
自動割付けができ、プログラマ−がプログラム作成時に
あらかじめワークエリアを設定する必要がなく、設定ミ
スを撲滅することができると共にメモリの有効活用が図
れ、さらにプログラマ−の負担を軽減することができて
エンジニアリングコストを低減することができる。
ム作成装置により作成されダウンローディングされてき
た制御タスクに対して、そのダウンローディング時にプ
ログラムメモリ、ワークエリアメモリの空きエリアへの
自動割付けができ、プログラマ−がプログラム作成時に
あらかじめワークエリアを設定する必要がなく、設定ミ
スを撲滅することができると共にメモリの有効活用が図
れ、さらにプログラマ−の負担を軽減することができて
エンジニアリングコストを低減することができる。
第1図はこの発明の請求項1のプログラム作成装置の一
実施例のブロック図、第2図はこの発明の請求項2の制
御装置の一実施例のブロック図、第3図は上記の制御装
置のプログラム実行動作を示す説明図、第4図は上記の
プログラム作成装置の制御タスクのコンパイル動作を示
すフローチャート、第5図は上記のプログラム作成装置
のパッケージのコンパイル動作を示すフローチャート、
第6図は上記のプログラム作成装置と制御装置とを統合
した系別処理機能分担を示す説明図である。 1・・・入力装置 2・・・プログラム作成装置 3・・・制御装置 4・・・制御対象5・・・
タスクオブジェクト 6・・・パッケージオブジェクト 201・・・コンパイル部 202・・・ワークエリア相対アドレス設定部203・
・・ダウンローディング部 301・・・入力部 302・・・プログラムメモリ 303・・・ワークエリアメモリ 304・・・プログラムメモリアドレス割付は部305
・・・ワークエリアメモリ割付は部306・・・パッキ
ング部 307・・・プログラムメモリアドレス再割付は部30
8・・・ワークエリアメモリ再割付は部309・・・管
理テーブルメモリ 310・・・管理テーブル作成部 311・・・タスクスケジューラ
実施例のブロック図、第2図はこの発明の請求項2の制
御装置の一実施例のブロック図、第3図は上記の制御装
置のプログラム実行動作を示す説明図、第4図は上記の
プログラム作成装置の制御タスクのコンパイル動作を示
すフローチャート、第5図は上記のプログラム作成装置
のパッケージのコンパイル動作を示すフローチャート、
第6図は上記のプログラム作成装置と制御装置とを統合
した系別処理機能分担を示す説明図である。 1・・・入力装置 2・・・プログラム作成装置 3・・・制御装置 4・・・制御対象5・・・
タスクオブジェクト 6・・・パッケージオブジェクト 201・・・コンパイル部 202・・・ワークエリア相対アドレス設定部203・
・・ダウンローディング部 301・・・入力部 302・・・プログラムメモリ 303・・・ワークエリアメモリ 304・・・プログラムメモリアドレス割付は部305
・・・ワークエリアメモリ割付は部306・・・パッキ
ング部 307・・・プログラムメモリアドレス再割付は部30
8・・・ワークエリアメモリ再割付は部309・・・管
理テーブルメモリ 310・・・管理テーブル作成部 311・・・タスクスケジューラ
Claims (3)
- (1)入力されたプログラムに対してコンパイルを行な
うコンパイル部と、前記コンパイル部のコンパイル時に
プログラム中のワークエリアを使用するパッケージをコ
ールする箇所にワークエリア相対アドレス情報を設定す
るワークエリア相対アドレス設定部と、前記コンパイル
部によりコンパイルされた結果、パッケージコール部分
にパッケージ毎のワークエリア相対アドレス情報が付加
されたオブジェクトプログラムとそのオブジェクトプロ
グラムのサイズとオブジェクトプログラムで使用するワ
ークエリアサイズとを共にダウンローディンするダウン
ローディング部とを備えて成るプログラム作成装置。 - (2)請求項1に記載のプログラム作成装置からダウン
ローディングされてくるオブジェクトプログラムを記憶
するプログラムメモリと、ワークエリアメモリと、前記
オブジェクトプログラムを前記プログラムメモリの所定
のアドレスに割り付けて記憶させるプログラムメモリ割
付け部と、前記オブジェクトプログラムに含まれる各パ
ッケージのワークエリア相対アドレス情報に応じて前記
ワークエリアメモリにパッケージ毎のワークエリアを割
り付けるワークエリアメモリ割付け部と、前記プログラ
ムメモリに記憶されているオブジェクトプログラムの実
行管理を司るタスクスケジューラとを備えて成る制御装
置。 - (3)プログラムのパッキング部と、このパッキング部
によるプログラムのパッキング時にプログラムメモリと
ワークエリアメモリとにそれぞれプログラム毎のワーク
エリアを再割付けするプログラムメモリ再割付け部およ
びワークエリアメモリ再割付け部とを備えて成る請求項
2に記載の制御装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8147389A JPH02263241A (ja) | 1989-04-03 | 1989-04-03 | プログラム作成装置および制御装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8147389A JPH02263241A (ja) | 1989-04-03 | 1989-04-03 | プログラム作成装置および制御装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02263241A true JPH02263241A (ja) | 1990-10-26 |
Family
ID=13747372
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8147389A Pending JPH02263241A (ja) | 1989-04-03 | 1989-04-03 | プログラム作成装置および制御装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH02263241A (ja) |
-
1989
- 1989-04-03 JP JP8147389A patent/JPH02263241A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4779194A (en) | Event allocation mechanism for a large data processing system | |
| EP0473802B1 (en) | Computer with extended virtual storage concept | |
| JP4836419B2 (ja) | 産業オートメーション用のcilコード・プログラムのオンライン修正 | |
| EP0569861A1 (en) | A method for implementing virtual function tables in a compliler for an object-oriented programming language | |
| US6842759B2 (en) | Single-instance class objects across multiple JVM processes in a real-time system | |
| JPH0644085A (ja) | アクセスを実行する方法及び装置並びにコンピュータシステム | |
| CN100414517C (zh) | 异构体系结构中的覆盖生成、管理的方法和设备 | |
| US5051893A (en) | System for processing data to facilitate the creation of executable images | |
| CA1306308C (en) | Task scheduling mechanism for large data processing systems | |
| WO2002091175A1 (en) | Specialized heaps for creation of objects in object-oriented environments | |
| Hanson | Storage Management for an Implementation of SNOBOL4 | |
| US6275985B1 (en) | Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support | |
| EP1946211A2 (en) | System and method for managing a short-term heap memory | |
| JPH02263241A (ja) | プログラム作成装置および制御装置 | |
| CN114661291A (zh) | 控制系统及控制方法 | |
| US6842838B2 (en) | Preemptive memory-block splitting | |
| JPH03231333A (ja) | プログラム作成装置および制御装置 | |
| JPH0520043A (ja) | プログラム作成装置およびその制御装置 | |
| JPH06259238A (ja) | プログラム作成装置およびその制御装置 | |
| KR100315500B1 (ko) | 메모리할당방법 | |
| JP7499966B2 (ja) | 制御装置、及び、アドレス管理方法 | |
| US5675806A (en) | Program linkage method for using dummy arguments to link program having hierarchical structure | |
| JPH06250923A (ja) | スワップ領域制御方法 | |
| Purser | The design of a real‐time operating system for a minicomputer. part II | |
| KR20250065405A (ko) | 별도의 메모리 관리 유닛 없이 마이크로 컨트롤러의 메인 메모리의 메모리 내용을 변경하는 방법, 그의 사용, 마이크로 컨트롤러 및 차량 |