JP2006323609A - プログラマブルコントローラ - Google Patents

プログラマブルコントローラ Download PDF

Info

Publication number
JP2006323609A
JP2006323609A JP2005145849A JP2005145849A JP2006323609A JP 2006323609 A JP2006323609 A JP 2006323609A JP 2005145849 A JP2005145849 A JP 2005145849A JP 2005145849 A JP2005145849 A JP 2005145849A JP 2006323609 A JP2006323609 A JP 2006323609A
Authority
JP
Japan
Prior art keywords
instruction
index register
program
programmable controller
index
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
Application number
JP2005145849A
Other languages
English (en)
Inventor
Koji Matsumoto
孝司 松本
Yoshiharu Maruyama
吉晴 丸山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Systems Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Electric Systems Co Ltd filed Critical Fuji Electric Systems Co Ltd
Priority to JP2005145849A priority Critical patent/JP2006323609A/ja
Publication of JP2006323609A publication Critical patent/JP2006323609A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】インデックスレジスタ命令をもたないプログラマブルコントローラにおいて、インデックスレジスタ命令を含む命令からインデックスレジスタ命令を用いない命令を機械的に作成し提供する。
【解決手段】インデックスレジスタ命令を使用して作成されたプログラムを、機械的作業によってインデックスレジスタ命令を持たない命令に変換し、インデックスレジスタ命令を持たないプログラマブルコントローラを動作させる。
【選択図】図1

Description

本発明は、インデックスレジスタ命令に対応していないプログラマブルコントローラのプログラムに関し、特にインデックスレジスタ命令をIEC61131−3で動作するプログラムに変換するプログラマブルコントローラに関する。
プログラマブルコントローラにおけるプログラムに変更があった場合の支援装置として、例えば特許文献1に記載されたものが知られている。特許文献1に記載されたプログラマブルコントローラの支援装置では、前回コンパイル時の変数名とアドレスを変数の追加/削除等を伴うプログラム変更があった場合においても、変数の割付けアドレスがズレないようにし、データの連続性を保持可能としている。
従来のプログラマブルコントローラではプログラム命令の一つとしてインデックスレジスタ命令を持っている。インデックスレジスタとは「領域Aを表す識別子+領域A内での通番α」で構成された実効アドレスDを格納するレジスタであり、このインデックスレジスタ自身の加算、減算を行うことにより、領域A内でのアドレスの操作を行うことができる。インデックスレジスタ命令には以下の3つがある。
1)インデックスレジスタの宣言を行う命令(下記2)、3)の命令に先行して一度だけ使用する命令。)
領域Aを表す識別子と領域A内での通番αから実効アドレスDを決定し、インデックスレジスタとして登録する。
2)インデックスレジスタを使用した演算を行う命令(複数回使用可能)
インデックスレジスタによって参照される領域の型の指定、及びインデックスレジスタのアドレス(ここでは、アドレスD)とオフセットの値により、相対アドレスとして求められるアドレスD’の値を用いた演算を行う。
3)インデックスレジスタの加減算を行う命令(複数回使用可能)
インデックスレジスタ自身のアドレスに加減算を行うことによりインデックスレジスタのアドレス値を加減算する。
特開2003−58380号公報
インデックスレジスタ命令を用いたプログラムは多数存在するが、インデックスレジスタ命令をもたないプログラマブルコントローラでは、インデックスレジスタ命令を用いたプログラムを動作させることが出来ない。特にプログラマブルコントローラの国際規格であるIEC61131−3におけるプログラム言語ではインデックスレジスタを想定していないため、インデックスレジスタ命令を用いたプログラムの動作などに課題がある。このような場合、インデックスレジスタ命令を持つプログラマブルコントローラと交換するのが簡単な方法であるが、交換費用や環境への配慮から安易に交換せずに済ます方法が求められる。また既設設備を残したまま新しいシステムを追加した場合、インデックスレジスタ命令を保持する/しないプログラマブルコントローラが混在することが想定され、ソフトウェア開発の見地からもインデックスレジスタ命令をもたないプログラマブルコントローラへのインデックスレジスタ命令の組込みが求められる。
本発明は、インデックスレジスタ命令を使用して作成されたプログラムを、機械的作業によって、インデックスレジスタ命令を持たないプログラマブにプログラムに変換し、変換後のプログラムが変換前と比較して複雑にならないようにしたプログラマブルコントローラを提供することを目的とする。
上記の課題を解決する手段として、本発明は以下のように構成する。
第1に、インデックスレジスタ命令を保持しないプログラマブルコントローラにおいて、プログラムソース格納装置よりプログラムコードを逐次読込む手段と、該プログラムコードからインデックスレジスタ命令を抽出する抽出手段と、該抽出したインデックスレジスタ命令をインデックスレジスタ命令を用いない命令に変換する変換手段と、該変換後の命令を格納する変換済プログラム格納装置と、を備えるように構成する。
第2に、前記抽出手段は、対象行にインデックスレジスタ関連命令がないときには、前記変換済プログラム格納装置に対象行を格納する第1の格納手段と、対象行にインデックスレジスタ関連命令があるときには、インデックスレジスタ命令を含む対象行を抽出する手段と、を備えるように構成する。
第3に、前記変換手段は、インデックス命令が宣言処理のときには、命令要素を命令要素格納テーブルに格納する第1の命令要素格納手段と、インデックス命令がインデックスレジスタ使用演算処理のときには、該第1の命令要素格納手段で格納した命令要素と演算対象のアドレス情報との位置関係を格納する第2の命令要素格納手段と、インデックス命令がインデックスレジスタ加減算処理のときには、加減算対象のインデックスレジスタを前記第1の命令要素格納手段から特定する特定処理と、を備えるように構成する。
第4に、前記変換手段は、前記第2の命令要素格納手段で格納した命令要素を対応する配列宣言命令に変換し、変換済プログラムとして前記変換済プログラム格納装置に格納する第2の格納手段と、前記第2の命令要素格納手段で格納した情報より対応する使用演算命令に変換し、変換済プログラムとして前記変換済プログラム格納装置に格納する第3の格納手段と、前記特定処理結果を対応する加減算命令に変換し、変換済プログラムとして前記変換済プログラム格納装置に格納する第4の格納手段と、を備えるように構成する。
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
図1は、本発明によるプログラマブルコントローラの実施例を示す構成図である。図1において、プログラムソース格納装置1に、インデックスレジスタを使用しているプログラムが格納されており、プログラム変換装置2でインデックスレジスタ命令を用いない命令に変換後、変換済プログラム格納装置6にインデックスレジスタ命令を用いないプログラムを引き渡す。プログラム変換装置2では、プログラムを逐次読み込み、命令抽出手段3でインデックスレジスタ命令に関するプログラムを抽出後、命令変換手段5を用いてインデックスレジスタ命令と同様に動作する命令に変換する。命令変換手段5においては、命令要素格納テーブル4をインデックスレジスタ命令要素の入出力バッファとして使用している。
図2は、インデックスレジスタ命令11と同様に動作する命令の一例として、配列を用いた命令19を用いた場合に、インデックスレジスタ命令と配列を用いた命令の情報相関を説明する図である。配列を用いた命令は、プログラマブルコントローラの国際規格であるIEC61131−3においてプログラム言語で定められているので、インデックスレジスタ命令を配列を用いた命令に変換することにより、インデックスレジスタ命令をもたないプログラマブルコントローラでも動作可能になる。インデックスレジスタ命令11は、インデックスレジスタの宣言12、インデックスレジスタを使用した演算15、インデックスレジスタの加減算18からなり、インデックスレジスタの宣言12は領域識別子13、領域内通番14を有し、インデックスレジスタを使用した演算15はデータ型16、オフセット値17を有する。
一方で、配列を用いた命令19は配列の宣言20、配列要素に対する演算23、配列インデックスに対する加減算26からなり、配列の宣言20は領域識別子21、データ型22を有し、配列要素に対する演算23は領域内通番24、オフセット値25を有する。
ここで領域識別子13と領域識別子21、領域内通番14と領域内通番24、データ型16とデータ型22、オフセット値17とオフセット値25の値は、インデックスレジスタ命令11と配列を用いた命令19の間において対応関係にある。
図3は、図1に示す命令要素格納テーブル4の一例である。1つのレコード(1行)に対して、インデックスレジスタ名、領域識別子、領域内通番、データ型、オフセット値、宣言フラグを備える。
インデックスレジスタ名:インデックスレジスタ自体の名称。多くの場合は、I、J、K等が割り当てられる。
領域識別子:メモリ領域を区分けした、ある一定の範囲の領域を示す。
領域内通番:領域識別子内の通番を表す。領域識別子の情報と併せて使用すると、メモリの実アドレスを指す。
データ型:インデックスレジスタで参照されるアドレスのデータ型を指す。主に、ワード型とビット型がある。
オフセット値:インデックスレジスタで参照されるアドレスからの相対アドレス。多くの場合オフセット値は、0、1、2のように数値で表す。
宣言フラグ:配列宣言が行われたかの識別子。これは当テーブル固有の情報で、配列宣言を重複させないために保持する情報。ON、OFFなどの2値で表す。
図4、図5、図6、図7は、図1のプログラム変換装置2における処理を示したものであり、“インデックスレジスタ命令”を“インデックスレジスタ命令を用いない命令”に変換する処理フローの説明図である。図1、図4、図5、図6、図7及び図3を用い、処理フローの説明を以下に示す。
図4は、図1のプログラム変換装置2内の命令抽出手段3に相当する。図4において、ステップS301の処理で、図1のプログラムソース格納装置1よりプログラムを逐次一行ずつ読み込む。次にステップS302では、ステップS301で読み込んだ一行が、インデックスレジスタ関連の場合はステップS303に移行し、インデックスレジスタ関連しない場合はステップS304にて、そのまま図1の変更済プログラム格納装置6に追加する。プログラムの最初の行から最終行まで、処理を繰り返す。
次に図5は、図4のステップS303である命令変換処理の処理フローであり、この処理は、図1のプログラム変換装置2内の命令変換手段5に相当する。ステップS401では、命令の種類を判別し、宣言の場合はステップS402でインデックスレジスタ使用演算処理、演算の場合はステップS403でインデックスレジスタ使用演算処理、レジスタの加減算の場合はステップS404でインデックスレジスタ加減算処理、の各処理を行う。
演算の場合は、ステップS403のインデックスレジスタ使用演算処理に続けて、ステップS405の配列宣言追加処理、及びステップS406での列要素に対する演算を変換済プログラム格納装置へ追加の処理をする。ステップS406では、領域内通番24とオフセット値25で表される配列要素に対する演算23として変換後のプログラムを、図1の変換済プログラム格納装置6に追加する。
レジスタの加減算の場合は、ステップS404に続けて、ステップS407の配列のインデックスに対する加減算処理として、領域内通番24と加減算値で表される配列のインデックスに対する加減算26として変換後のプログラムを、図1の変換済プログラム格納装置6に追加する。
次に図6は、図5のステップS401による分岐後の各命令に対する処理で、ステップS402〜S404のフローを示す。
図6(a)は、図5のステップS402のフローであり、ステップS511では、図1の命令要素格納テーブル4にインデックスレジスタ名のデータレコードを追加する。これは図3の1行に相当する。ステップS512では領域識別子13を追加したレコードにコピーする。同じくステップS513では領域内通番14を追加したレコードにコピーする。またステップS514では宣言フラグをONにする。
図6(b)は、図5のステップS403のフローであり、ステップS521では、図1の命令要素格納テーブル4から対象のインデックスレジスタ名を検索する。ステップS522では、データ型16をヒットしたレコードにコピーする。同じくステップS523では、オフセット値17をヒットしたレコードにコピーする。
図6(c)は、図5のステップS404のフローであり、ステップS531では、図1の命令要素格納テーブル4から対象のインデックスレジスタ名のあるレコードを検索する。
図7は、図5のステップS405のフローであり、命令要素格納テーブル4の宣言フラグがセットされているかを、ステップS601にて判定し、セットされている場合はステップS602にて、領域識別子21で指定された領域の型がデータ型22となるように配列宣言する。その後、ステップS603にてレコードの宣言フラグをOFFにする。前記判定にて、セットされていない場合は何もせずに処理を終了する。
上記処理に従い、実際のプログラムがどの様に変換されるかの一例を以下に説明する。図8(a)〜(d)は変換前のプログラムの説明図、図8(e)〜(h)は変換後のプログラムの説明図である。

図8(a)〜(d)のプログラムが、図1のプログラムソース格納装置1に格納された後、プログラム変換装置2に通され、ステップS301により一行ずつ処理される。
始めに図8(a)は、インデックスレジスタ宣言の命令文であり「LEA Aα:I」とは、領域識別子Aの領域内通番αをインデックスレジスタIに割り当てる命令である。ここで“LEA”は宣言命令の識別子、“:”は命令の識別子である。インデックスレジスタ宣言の命令文なので、ステップS402の処理が実行される。図6(a)の一連の処理であるステップS511〜S514の処理の結果、図1の命令要素格納テーブル4に、図9(a)で示すレコードが生成される。
次に図8(b)は、インデックスレジスタ使用演算処理であり「type I offset1+Aβ→Aβ」とは、インデックスレジスタIのアドレスを基点としてデータ型がtypeで大きさでoffset1の値の位置にあるアドレスの値と、領域識別子Aの領域内通番βの格納している値を加算して、領域識別子Aの領域内通番βに戻す命令である。ここで“→”、“+”は命令の識別子である。インデックスレジスタ使用演算処理なので、ステップSS403〜S406の処理が実行される。始めにステップS403が処理され、図6(b)の一連の処理であるステップS521〜S523の処理の結果、図1の命令要素格納テーブル4である図9(a)は図9(b)で示すレコードに更新される。次にステップS405が処理され、ステップS601〜S603の処理の結果、図1の命令要素格納テーブル4である図9(b)は図9(c)で示すレコードに更新される。またステップS602では、図9(e)を、図1の変換済プログラム格納装置6に格納する。図9(e)の「E AT %A0;」とは、領域識別子Aの領域内通番0番目を配列Eに割り当てる命令である。「E ARRAY[0・・・size] of type」とは、データ型がtypeで、配列Eをsizeの大きさで確保する命令である。なおsizeは領域内通番の最大の大きさ同じとする。ここで“ARRAY”、“AT”、“%”、“;”、“ [”、“] ”及び“VAR”と“VAR_END”は命令の識別子になる。最後にステップS406が処理され、図9(f)を、図1の変換済プログラム格納装置6に格納する。「Aβ:=E[α+offset1]+Aβ」とは、配列Eにおいて領域内通番αから相対でoffset1にある値と、領域識別子Aの領域内通番βの指すアドレスの値を加算して、加算後の値を領域識別子Aの領域内通番βの指すアドレスの値に戻す命令である。ここで“:=”、“ [”、“ ]”、“+”は命令の識別子になる。
次に図8(c)も、インデックスレジスタ使用演算処理である。図8(b)との違いは、offset2と値が異なる点と、ステップS601でOFFに分岐する点である。ステップS403処理の結果、図1の命令要素格納テーブル4である図9(c)は図9(d)で示すレコードに更新される。またステップS406が処理され、図9(g)を、図1の変換済プログラム格納装置6に格納する。
最後に図8(d)は、インデックスレジスタの加減算命令文であり「I IADD h」とは、インデックスレジスタIのアドレス値にhを加算する命令である。ここで“IADD”はアドレス加算命令の識別子になる。インデックスレジスタの加減算命令なので、フローによりステップS404〜S407の処理が実行される。ステップS407では、図9(g)を、図1の変換済プログラム格納装置6に格納する。「α:=α+h」とは、領域内通番αにhの値を加算して、加算後の値を領域内通番αに戻す命令である。
以上、図8に示したプログラムは一例であり、加減算の値は表記上、文字変数としているが、実際には数値を用いることができる。また、命令の識別子の記載方法を限定するものでは無く、各記述方法に柔軟に対応するものとする。
本発明によるプログラマブルコントローラの実施例を示す説明図 インデックスレジスタ命令と配列を用いた命令の情報相関の説明図 命令要素格納テーブルの一例を示す説明図 命令抽出処理フローの説明図 命令変換処理フローの説明図 命令変換処理フローの詳細説明図 配列宣言追加処理フローの説明図 本発明による変換前及び変換後のプログラムの一例を示す説明図 各変換過程における命令要素格納テーブル格納状態の説明図
符号の説明
1 プログラムソース格納装置
2 プログラム変換装置
3 命令抽出手段
4 命令要素格納テーブル
5 命令変換手段
6 変換済プログラム格納装置
11 インデックスレジスタ命令
12 インデックスレジスタの宣言
13、21 領域識別子
14、24 領域内通番
15 インデックスレジスタを使用した演算
16、22 データ型
17、25 オフセット値
18 インデックスレジスタの加減算
19 配列を用いた命令
20 配列の宣言
23 配列要素に対する演算
26 配列インデックスに対する加減算

Claims (4)

  1. インデックスレジスタ命令を保持しないプログラマブルコントローラにおいて、
    プログラムソース格納装置よりプログラムコードを逐次読込む手段と、
    該プログラムコードからインデックスレジスタ命令を抽出する抽出手段と、
    該抽出したインデックスレジスタ命令をインデックスレジスタ命令を用いない命令に変換する変換手段と、
    該変換後の命令を格納する変換済プログラム格納装置と、
    を備えることを特徴とするプログラマブルコントローラ。
  2. 請求項1に記載のプログラマブルコントローラにおいて、
    前記抽出手段は、
    対象行にインデックスレジスタ関連命令がないときには、前記変換済プログラム格納装置に対象行を格納する第1の格納手段と、
    対象行にインデックスレジスタ関連命令があるときには、インデックスレジスタ命令を含む対象行を抽出する手段と、
    を備えることを特徴とするプログラマブルコントローラ。
  3. 請求項1に記載のプログラマブルコントローラにおいて、
    前記変換手段は、
    インデックス命令が宣言処理のときには、命令要素を命令要素格納テーブルに格納する第1の命令要素格納手段と、
    インデックス命令がインデックスレジスタ使用演算処理のときには、該第1の命令要素格納手段で格納した命令要素と演算対象のアドレス情報との位置関係を格納する第2の命令要素格納手段と、
    インデックス命令がインデックスレジスタ加減算処理のときには、加減算対象のインデックスレジスタを前記第1の命令要素格納手段から特定する特定処理と、
    を備えることを特徴とするプログラマブルコントローラ。
  4. 請求項3に記載のプログラマブルコントローラにおいて、
    前記変換手段は、
    前記第2の命令要素格納手段で格納した命令要素を対応する配列宣言命令に変換し、変換済プログラムとして前記変換済プログラム格納装置に格納する第2の格納手段と、
    前記第2の命令要素格納手段で格納した情報より対応する使用演算命令に変換し、変換済プログラムとして前記変換済プログラム格納装置に格納する第3の格納手段と、
    前記特定処理結果を対応する加減算命令に変換し、変換済プログラムとして前記変換済プログラム格納装置に格納する第4の格納手段と、
    を備えることを特徴とするプログラマブルコントローラ。
JP2005145849A 2005-05-18 2005-05-18 プログラマブルコントローラ Pending JP2006323609A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005145849A JP2006323609A (ja) 2005-05-18 2005-05-18 プログラマブルコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005145849A JP2006323609A (ja) 2005-05-18 2005-05-18 プログラマブルコントローラ

Publications (1)

Publication Number Publication Date
JP2006323609A true JP2006323609A (ja) 2006-11-30

Family

ID=37543243

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005145849A Pending JP2006323609A (ja) 2005-05-18 2005-05-18 プログラマブルコントローラ

Country Status (1)

Country Link
JP (1) JP2006323609A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198132A (ja) * 2009-02-23 2010-09-09 Mitsubishi Electric Corp プログラマブルコントローラ
JP2016081097A (ja) * 2014-10-10 2016-05-16 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198132A (ja) * 2009-02-23 2010-09-09 Mitsubishi Electric Corp プログラマブルコントローラ
JP2016081097A (ja) * 2014-10-10 2016-05-16 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ

Similar Documents

Publication Publication Date Title
CN108874438B (zh) 补丁生成方法、装置、电子设备及计算机存储介质
JP4541418B2 (ja) プログラマブルコントローラの周辺装置、置換方法およびプログラム
US5819097A (en) Industrial controller compiler with expandable instruction set
US7237229B2 (en) Debugging aid parallel execution of a plurality of iterations with source lists display corresponding to each iteration
CN102541521B (zh) 基于结构化查询语言的操作指令自动生成装置及方法
WO2013145105A1 (ja) シーケンスプログラムデバッグ支援装置
US8464236B2 (en) Data consistency in data processing systems
CN105431790B (zh) 编程装置
CN101251800A (zh) 图形用户界面生成方法及装置
CN110442371A (zh) 一种发布代码的方法、装置、介质及计算机设备
US20220237041A1 (en) Parallel processing system performing in-memory processing
CN110502362A (zh) 基于微服务架构的错误码定义方法、装置和计算机设备
US7269828B2 (en) Method for safely instrumenting large binary code
CN113031967B (zh) 一种代码转换方法及装置
CN107024900A (zh) 最优编译plc命令的方法
JP2006323609A (ja) プログラマブルコントローラ
JP2009193181A (ja) ソフトウェアの開発支援システム、支援方法およびこの方法のプログラム
JP2009048259A (ja) プログラム変換方法及び変換用プログラム
US20160162287A1 (en) Automatic generation of certificate of origin (coo) for software systems
US10613854B2 (en) Systems and methods for automated renumbering, reformatting, and re-referencing of branching statements or go-to instruction line referencing within modified code using a dual-pass approach that includes operations using predicted new line numbers, error detection/correction, and alignment correction processing
JP4767309B2 (ja) 情報処理装置、情報処理方法、及びコンピュータプログラム
JP2006309666A (ja) プログラム開発支援装置、プログラム動作比較方法および半導体集積回路製造方法
JP2008204023A (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
JP5141095B2 (ja) プラントコントローラシステム
EP2336883A1 (en) Programming system in multi-core, and method and program of the same

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080215

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20081215

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090219

A977 Report on retrieval

Effective date: 20090917

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090929

A02 Decision of refusal

Effective date: 20100309

Free format text: JAPANESE INTERMEDIATE CODE: A02