JPH0652481B2 - シーケンスプログラム入力装置 - Google Patents

シーケンスプログラム入力装置

Info

Publication number
JPH0652481B2
JPH0652481B2 JP62237141A JP23714187A JPH0652481B2 JP H0652481 B2 JPH0652481 B2 JP H0652481B2 JP 62237141 A JP62237141 A JP 62237141A JP 23714187 A JP23714187 A JP 23714187A JP H0652481 B2 JPH0652481 B2 JP H0652481B2
Authority
JP
Japan
Prior art keywords
cell
branch
processing
sequence diagram
sequence
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
Application number
JP62237141A
Other languages
English (en)
Other versions
JPS63100504A (ja
Inventor
義光 大島
典男 横沢
正義 大関
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP62237141A priority Critical patent/JPH0652481B2/ja
Publication of JPS63100504A publication Critical patent/JPS63100504A/ja
Publication of JPH0652481B2 publication Critical patent/JPH0652481B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Programmable Controllers (AREA)

Description

【発明の詳細な説明】 [発明の利用分野] 本発明は、プログラマブル・シーケンス制御装置におい
て、シーケンスプログラムの作成、修正および編集等を
行なうシーケンスプログラム入力装置に関するものであ
る。
[従来の技術] プログラマブル・シーケンス制御装置(以下SCと略称
する。)は、従来シーケンス制御に主として用いられて
きたリレー回路と同等な機能を電子計算機と同様な蓄積
プログラム方式の汎用電子回路を用いて実現した装置で
ある。その構成を第1図に示す。1は演算制御部、2は
記憶部、3はシーケンス制御対象とのインタフェイス部
である。4はシーケンスプログラム入力装置で、操作者
はここからシーケンスプログラムを入力する。
シーケンス制御の設計には、従来第2図に示すようなリ
レーシケンス図が広く用いられている。CRTディスプ
レイ装置などの画面表示可能な表示装置を用いると、こ
のリレーシーケンス図をそのまま表示することができ
る。そこで、このリレーシーケンス図をSCのプログラ
ム入力手段に利用することにより、従来からリレーシー
ケンス図に慣れ親しんできた技術者がSCを取り扱うに
際し、容易にプログラム入力などを行なうことが可能と
なる。
このような、CRTディスプレイ装置等の画面表示装置
を用いたシーケンスプログラム入力装置は既に知られて
いる。その一例を第3図に示す。図において5は操作者
がプログラムの入力や種々の操作指令を与えるためのキ
ーボードである。6は制御部で、キーボード5から入力
されたプログラムをリフレッシュメモリ7に書込んだ
り、またシーケンスコントローラのメモリ2に書込む動
作、逆にメモリ2からシーケンスプログラムを読出し
て、リフレッシュメモリ7に書込むこと、およびキーボ
ード5から入力された各種指令を実行する。7はリフレ
ッシュメモリで、表示部10で表示すべきデータを格納
する。ここに格納されたデータは、表示制御部9から与
えられるタイミングにより順次読出され、パターン発生
器8で文字やリレーシーケンスの図形要素に変換され、
表示制御部9の制御により、表示部10に表示される。
一般にSCはシーケンス制御を実行するために論理和や
論理積を実行するための論理演算命令を持っている。こ
の命令セットの一例を第4図に示す。上記の構成のシー
ケンスプログラム入力装置においては、この論理演算命
令の一つ一つに対し、第4図の表の右側に示すリレーシ
ーケンス図の図形シンボルを対応させ、この図形シンボ
ルを印したキー(押しボタン)をプログラム入力装置の
キーボード上に用意し、操作者がこの図形シンボルキー
を適当に押していくことにより、リレーシーケンス図を
入力していた。
上記のような手順により入力したシーケンスプログラム
(リレーシーケンス図)の例を、第5図に示す。図中四
角で囲んだ部分が、入力装置のキーボード上に置いた図
形シンボルキーに対応している。また四角の右上に記し
た数字は、キー操作の順序である。なおリレー接点また
はリレー出力コイルの図形シンボルに対しては、その番
号または名前をつける必要があるが、説明の便宜上省略
した。
前述したように、キー上の各図形シンボルはSCの各命
令に一対一に対応している。上記方式では、図形シンボ
ルキーが押される度に、それがリフレッシュメモリ7に
書き込まれることにより表示部10に表示され、それと
同時に、SCのメモリ2にも対応する命令が書き込まれ
る。そこで、この方式では、プログラムの入力または修
正にあたっては、キー操作の順序が重要である。つま
り、同じキーを押すにしても、その順序も変えると、別
のリレーシーケンス図が出来上ったり、あるいは正常に
機能を果し得ないリレーシーケンス図ができてしまう。
したがって、この方式では、CRTディスプレイを利用
してリケーシーケンス図をプログラム入力手段としたこ
とにより、従来リレーシーケンス図に慣れ親しんだ技術
者がSCを取り扱う際の便宜をよくしてはいるが、実際
には通常のプログラムと同様に一次元の形式でプログラ
ムを入力しており、二次元画面を十分有効に利用してい
るとは言えない。操作者は、プログラム入力に際し、設
計図面上などに一度リレーシーケンス図を製図し、この
後、これをもとにキー入力の順序をもとめてから、実際
の入力作業を行なう必要がある。さらに、作成ずみのシ
ーケンスプログラムの修正についても効率的な方法がな
かった。
[発明の目的] 本発明の目的は、キー操作の順序等に制限がなく、二次
元の画面を利用して、作成済のシーケンスプログラムを
簡単に修正することができるシーケンスプログラム入力
装置を提供することにある。
[発明の概要] 上記の目的を達成するために、本発明では作成ずみのシ
ーケンスプログラムからシーケンス図を表示せしめ、こ
の表示されたシーケンス図を修正し、修正後のシーケン
ス図から対応する機械語命令列を生成するようにした。
[実施例] 以下に述べる実施例では、表示画面上におけるリレーシ
ーケンス図作成のための作成手段と、このリレーシケン
ス図をSCの機械命令列に変換する変換手段とを分離
し、それぞれ独立動作が可能なようにする。すなわち、
作成手段でシーケンスプログラムの入力もしくは修正中
は表示画面上のリレーシーケンス図のみが発生され、リ
レーシーケンス図の作成終了後これを変換手段によりS
Cの機械命令列に変換するという構成である。この結
果、リレーシーケンス図はSCの機械命令と直接の対応
関係がなくなるので、操作者にとってよりわかりやす
い、リレーシーケンス図作成のための操作キーを用いる
ことが可能になる。
第6図は、この考えに従ったシーケンスプログラム入力
装置の操作キーの一例である。同図(a)は図形シンボル
を入力するためのキー、(b)は入力位置を指育するため
のカーソル(画面上に表示する特別なマーク)の移動を
指示するための制御キーである。(a)の図形シンボルキ
ーは、前述の従来例と異なり、SCの機械命令と直接の
対応関係にない。
本実施例では、既に述べたように、リレーシーケンス図
の作成修正はSCの機械命令列に拘束されていない。し
たがって、図形シンボルの入力順序は任意であり、キー
入力の順序が前後することにより、リレーシーケンス図
を変換して得られるSCの機械命令列が影響を受けるこ
とはない。その代りに、上記のカーソル制御キーを用い
て、画面上での入力位置を適宜指定する必要がある。た
だし、通常のキャラクタディスプレイ装置で一般に行な
われているように、一回の入力ごとにカーソルをその隣
りの位置に自動的に移動させる機能を設ければ、カーソ
ル制御キーを用いる回数は少なくて済む。なお、カーソ
ル制御キーの代わりに、ライトペンやジョイスティック
等の手段を用いて、入力位置指定を行なうことも可能で
ある。
第6図の入力キーを用いて、第5図と同様なリレーシー
ケンス図を作成した例を、第7図に示す。図中四角で囲
んだ部分が、図形シンボルキーに対応している。なお、
第5図の場合と同様、説明の便宜上、接点および出力コ
イルの番号または名前は省略した。前述したように、こ
の例では、キー入力の順序は全く任意である。したがっ
て、入力順序を示す番号はふっていない。
このようにして、必要なリレーシーケンス図は簡単に作
成できるが、本実施例では同時にSCの機械命令は生成
されていない。そこでこのリレーシーケンス図をSCの
機械命令列に変換するための変換手段が必要となる。
第8図は、本発明によるシーケンスプログラム入力装置
の一実施例の構成である。本図は、第1図のシーケンス
プログラム入力装置4の構成図である。7,8,9,1
0および5は、第3図と同じく、それぞれリフレッシュ
メモリ,パターン発生器,表示制御部,表示部,および
キーボードである。第3図の場合と同じく、表示すべき
リレーシーケンス図の表示情報は、コードデータの形で
リフレッシュメモリ7内に格納される。この情報は,表
示制御部9の制御により順次読出され、パターン発生器
8で文字ないし図形パターンに変換されて、表示部10
に表示される。
11は統轄制御部である。キーボード5から入力制御部
12をとおりし与えられる各種処理指令を解読、その実
際の処理指令を以下に述べる各処理部に与える、などシ
ーケンスプログラム入力装置の統轄的な制御を行なう。
13は、リレーシーケンス図の画像編集装置である。キ
ーボード5から入力される画像編集指令をもとに、リレ
ーシーケンス図の作成もしくは修正などの編集処理を行
なう。
以上の部分は既存の論理回路素子を用いて容易に構成す
ることができる。
14はリレーシーケンス図変換装置である。リフレッシ
ュメモリ7内のリレーシーケンス図の表示情報をもと
に、これを論理代数式の形に変換して、論理代数式メモ
リ15に書き込む。16は、論理代数式メモリ15内に
作成された論理代数式を、さらにSCの機械命令語に変
換するための機械語変換装置である。すなわち、リフレ
ッシュメモリ7内に作成されたリレーシーケンス図は、
リレーシーケンス図変換装置14および機械語変換装置
16の作用によりSCの機械命令列によるシーケンスプ
ログラムに変換され、SCの記憶部(第1図の2の部
分)に書込まれる。
17は、逆にSCの記憶部内の機械命令列を論理代数式
の形にもどすための、論理代数式再生装置である。また
18は、さらにこれをリレーシーケンス図の形に復元す
るリレーシーケンス図再生装置である。すなわち、SC
の記憶部内のシーケンスプログラムは、各装置17,1
8をとおして、リレーシーケンス図の形に復元されて、
リフレッシュメモリ7内に書込まれ、表示部10に表示
される。この逆変換機構は、一旦作成して既にSCの記
憶部2に書込まれたシーケンスプログラムに対し、後か
ら修正を加えたい時に、必要である。すなわち、この機
構によりシーケンスプログラムの入力修正を、全てリレ
ーシーケンス図の形で行なうことが可能である。
本実施例では、リレーシーケンス図からSCの機械命令
列への変換、およびその逆変換において、どちらも一度
論理代数式の形を経由している。これを省略して、直接
リレーシーケンス図からSCの機械命令列へ、またはそ
の逆という変換方式も可能である。このような構成にす
れば、必要な回路素指数が減ることは容易に想像でき
る。(少なくとも、論理代数式メモリ15は不要にな
る。)しかし、第8図の構成では、次のような利点もあ
る。
装置14および18は、リレーシーケンス図と論理代数
式との相互変換を受けもっている。SCとのインタフェ
イスは、装置16および17の機械命令高と論理代数式
との相互変換部が受けもっており、ここを換えることに
より、任意のSCに接続することができる。
機械語変換装置16の部分は、電子計算機の高級プログ
ラミング言語(FORTRAN等)のコンパイラの技法
を用いれば、容易に構成することができる。同じ理由に
より、論理代数式再生装置17も容易に構成できる。
以下、装置14および18について、順により詳細に説
明する。
リレーシーケンス図変換装置14は、例えば第9図のよ
うに3つの部分から構成されている。20は結線構造抽
出部、21は結線構造データメモリ、22は論理代数式
への変換部である。
結線構造抽出部20は、リフレッシュメモリ7内の図形
パターンのコード情報から、リレーシーケンス図の接点
や出力コイルのつながり具合を示す論理的な結線構造を
抽出し、これに関するデータを結線構造データメモリ2
1上に形成する。論理代数式への変換部22は、結線構
造データメモリ上に形成された、リレーシーケンス図の
論理的な結線構造データから、対応する論理代数式を生
成して、これを論理代数式メモリ15上に展開する。結
線構造抽出部20は、論理代数式への変換部22の処理
に先立ち、リフレッシュメモリ内(CRT画面上)のリ
レーシーケンス図の冗長な部分(例えば、単なる縦棒や
横棒などは、各格子点を結ぶだけの役割しかしていな
い。)を除去する役割を果す。同時に、論理的な結線構
造データに変換する作業を分担することにより、後の論
理代数式への変換部22の構造を省略化している。
なお、本実施例におけるリレーシーケンス図変換装置1
4の入力、すなわち結線構造抽出部20の入力となるリ
レーシーケンス図について、次の2点の仮定を置いた。
(1) 接点および出力コイルはダイオード機能を持つもの
とする。すなわち、表示画面上に水平に表示された接点
およびコイルパターンについて、電流は常に左から右へ
流れるものとする。したがって、これらのパターンの左
端は電流の流入点、右端は電流の流出点と考えることが
できる。なお、画面の左端には電源母線、右端には接地
線があるものとする。(第7図参照) (2) 接点などを持たない横棒や縦棒は、単にその両端を
等電位で結ぶものとする。すなわち、(1)の場合と異な
り、この場合、電流の方向は規制されずにどちらの方向
にも流れることが可能である。
結線構造抽出部20の処理結果として得る結線構造デー
タのデータ構造を第10図に示す。同図(a)は、画面上
にある変換対象となるリレーシーケンス図、(b)は、
(a)から冗長な部分(単なる横棒,縦棒)を棄却して抽
出したトポロジカルな結線構造の模式図である。(c)は
結線構造データメモリ21上に展開した(b)のデータの
相互関係を示している。これはポインタを用いたリスト
構造となっている。
図から明らかなように、(c)「節」のセル(第10図
(b),(c)でS,N1,N2,Eに相当する。)と「枝」の
セル(第10図(b),(c)でX1〜X4,Y1に相当す
る。)の二種類のデータ要素から構成されている。
「節」のセルは(a)のリレーシーケンス図で、単なる横
棒や縦棒で結ばれて等電位にある点を、代表して表わし
たものである。「枝」のセルは、接点ならびに出力コイ
ルを表現するものである。この「節」のセルと「枝」の
セルとの相互接続のために、各「節」のセルからは2種
類の「鎖」が出ている。これを「右鎖」、「左鎖」と名
づける。「右鎖」は、その「節」のセルに接続してお
り、かつその「節」のセルを起点とする電流の川下にあ
る「枝」のセルをつなげるための鎖である。また、「左
鎖」は、やはりその「節」のセルに接続し、かつその
「節」のセルを逆に川下とする「枝」のセルをつなげる
鎖である。通常、画面上にある「節」のセルのすぐ右に
ある「枝」のセルは「右鎖」に接続され、すぐ左にある
「枝」のセルは「左鎖」に接続される。なお「鎖」の左
右は「節」のセルから見たときのもので、「枝」のセル
から見たときは名前と逆になる。この「左鎖」、「右
鎖」の存在を模式的に明確に表わすと、第11図のよう
になる。図で、下方に足を2本有している正方形が
「節」のセル、その左側の足が「左鎖」、右側の足が
「右鎖」である。両側に腕を伸ばして、各「節」のセル
の「左鎖」「右鎖」に継がっているのが「枝」のセルで
ある。
「鎖」につながる順番は「右鎖」,「左鎖」とも、CR
T画面上で上方にあるものほど、「節」のセルに近くな
るようにすれば、結線構造データ上でも、リレーシーケ
ンス図の相対的位置関係は保存される。
結線構造抽出部20の具体的構成の一例を、第12図に
示す。30はリレーシーケンス図の格子点走査回路、3
1は枝方向検出回路、321〜329は結線構造データ
に対する各処理回路、34はメモリである。格子点走査
回路30により、リフレッシュメモリ7内にあるリレー
シーケンス図の各格子点(配線が交わる部分)を順次走
査する。そして、そこにどのように枝がつながっている
かを、枝方向検出回路31により検出かつ分析し、それ
に応じて各処理回路321〜329の一つに処理指令を
発する。指令を発せられた処理回路は、リレーシーケン
ス図のデータをもとに、結線構造データメモリ21上の
データに対し必要な処理を行なう。
リレーシーケンス図の各格子点に対し、枝は四方から入
ってくる。したがって、枝が何も入ってこない場合を含
めると、格子点における結線の種別は16のとおりにな
る。これを第13図に示す。第13図の実線は枝が入っ
てきている部分、点線は枝が入ってきていない部分であ
る。
格子点走査回路30の走査の順序は、説明の便宜上、ま
ず上から下へとし、この上から下への走査をくり返しな
がら左から右へ走査することにより、画面上の全格子点
を走査するものとする。
この走査の順序に従うと、各格子点での処理は大略次の
ようである。
まず、上から枝が入ってきているかどうかを調べる。上
から枝が入ってきていない場合、その格子点に対する
「節」のセルは未定義と考えられる。そこで必要なら
ば、新らしくその「節」のセルのメモリ領域を確保し、
定義を行なう。
次に左から枝が入ってきているかを調べ、来ている場合
はその「枝」のセルを、その格子点に対する「節」のセ
ルの「左鎖」に追加する。
右方向に枝が出ている場合は、その枝に対する「枝」の
セルを新らしく定義し、その格子点に対する「節」のセ
ルの「右鎖」の適当な位置にその「枝」のセルを挿入す
る。
最後に下向きの枝である。この枝がある時、その格子点
の下方にも同一の「節」にセルに属する格子点があるこ
とを示しているが、必要な処理はその下方の格子点に行
ってから行なうので、下向の枝については何も処理を行
なわない。
第13図に示した各結線パターンを上述の処理の種類に
より分離すると、第14図のようになる。これは、上方
向および左方向の枝の有無に着目した分類である。(イ)
は上からの枝がなく、左からの枝がある場合、(ロ)は上
からの枝も左からの枝もある場合である。(ハ)は上から
の枝だけで左からの枝がない場合、(ニ)は上からの枝も
左からの枝もない場合である。(ホ)は枝のあるなしの分
類ではなく、何らの処理もしない場合である。(ヘ)枝が
どこか一方から来ているのみで、不完全な格子点であ
る。これは入力エラーとなる。
右方向または下方向の枝があるものを同一の分類にした
のは、右方向の枝がある時は、それが属する分類の処理
をすませた後、右方向の枝に対する「枝」のセルを生成
して、その格子点に対応する「節」のセルの「右鎖」に
接続する処理を追加すればよく、また、下方向の枝につ
いては、それに対する何らの処理も必要としないからで
ある。
第12図の各処理回路321〜329は、上述の(イ)〜
(ヘ)の各分類に応じて、対応する処理を行なう実施部で
ある。321は(イ)に対応する処理、322は(ロ)に対
応する処理、以下同様に、323は(ハ)の、324は
(ニ)の、325は(ホ)の、326は(ヘ)の処理を行な
う。また327は、上述の「枝」のセルの生成およびそ
の「節」のセルの接続処理を行なう処理回路である。3
28,329は後述するリレーシーケンス図の左端およ
び右端の処理回路である。
以下第14図の各分類別に処理内容を説明する。
(イ)の処理 最初に、左端の枝に対する「枝」のセルのポインタを読
出す。
この「枝」のセルは、現在処理中の格子点の左隣りの格
子点において生成されたものである。この「枝」のセル
は、上記左隣りの格子点に対する「節」のセルの「右
鎖」に接続されているが、「左鎖」については未処理の
状態にある。この「枝」のセルのポインタは、これを生
成した時点で、後の処理のために一旦どこかに記憶して
おく必要がある。第12図のメモリ34は、このために
設けたもので、未処理の「枝」のセルのポインタの値を
記憶する。最初に記した「枝」のセルのポインタの読出
しはここから行なったものである。
次に、現在処理中の格子点に対する「節」のセルを生成
するのであるが、この処理は、左方の枝が接点、出力コ
イル等でない単なる横棒の場合、不要である。すなわ
ち、この時はその格子点とその左隣りの格子点は同一の
「節」のセルに属すると考えられ、その「節」のセルは
すでに左隣りの格子点で定義されているので、これを用
いることができる。またこの情報を伝えた「枝」のセル
は、最終的には不要であるから、この時点でその「節」
のセルの「右鎖」から削除する。
他方、左方の枝が接点等である場合は、その格子点に対
する「節」のセルは未定義である。そこで、新らしく
「節」のセルを生成し、その「左鎖」に左方の枝の
「枝」のセルを接続する。
(ロ)の処理 (イ)の処理と同様に、まず左側の枝に対する「枝」のセ
ルのポインタを読出す。そして、その枝が接続点である
か単なる横棒であるかを調べ、接点等であれば、その
「枝」のセルをその格子点に対する「節」のセルの「左
鎖」に接続すればよい。(その格子点に対する「節」の
セルは、その上方の格子点ですでに定義されている。) これに対し、左方の枝が単なる横棒、すなわちその格子
点と左隣りの格子点が同一の「節」のセルに属するとい
うときには、以下の処理の必要となる。
まず、この格子点に対する「節」のセルはすでにその上
方で定義されている。一方、その左隣りの格子点につい
ても、すでにその「節」のセルが定義されている。そし
て、両者をつなぐ横棒の意味するところは、両方の格子
点が単一の「節」のセルに属すべきであるということで
あるから、二つの「節」のセルおよびそれに連なる「左
鎖」、「右鎖」を一つにまとめる必要がある。
これを行なうために、まず一つの「節」のセルの一方を
生かし、他方を捨てる。次の二本の鎖をそれぞれ1本化
する。まず「左鎖」は、現在処理中の格子点に対する
「節」のセルの「左鎖」を先にし、その下に左隣りの格
子点に対する「節」のセルの「左鎖」を接続する。「右
鎖」では、先に読出した単なる横棒に対する「枝」のセ
ルを、左隣りの格子点の「節」のセルの「右鎖」から削
除し、同じ位置に現在の格子点に対する「節」のセル
「右鎖」を挿入する。これらの処理の様子を第15図に
示す。(a)は、もとになるリレーシーケンス図の相当部
分の例である。(a)のN1が現在処理中の格子点、N2
その左隣りの格子点である。(b)は統合処理前の結線構
造データ、(c)は統合処理後の結線構造データを示す。
(b)のBが単なる横棒に対する「枝」のセルである。
以上の、(イ),(ロ)の処理とも、右方に枝が出ている場
合は、上述の諸処理が終了した後、その右方の枝に対す
る「枝」のセルを生成し、その格子点に対する「節」の
セルの「右鎖」に挿入する。また生成した「枝」のセル
のポインタを前述したメモリ34に記憶する。
(ハ)の処理 この場合、上からの枝があるので、すでに「節」のセル
は定義されている。一方左の枝がないのでそれの処理は
ない。右方の枝に対する「枝」のセルを生成し、これを
「節」の「右鎖」につなげばよい。
(ニ)の処理の場合は、上からの枝がないので、まずこの
格子に対する「節」のセルを生成し、その「右鎖」に、
右方の枝「枝」のセルを生成して接続する。
(ホ)の処理の場合、枝が何もきていない結線パターンに
ついては何もしないのは当然として、枝が上方および下
方のみのパターンの場合、上から枝ができているのでそ
の格子点に対する「節」のセルはすでにできており(つ
まり新らしく生成する必要がない。)また、右および左
の枝がないので、それに対する処理が不要、下向きの枝
は前にも述べたようにその格子点においては処理が不要
というわけで、枝が上方および下方のみの場合も何らの
処理も必要としない。
(ヘ)の処理の場合、すでに述べたようにこれは入力エラ
ーであるので、処理回路326は統轄制御部11に対し
て、その由通知する。これに対し、統轄制御部11は操
作者に対し、CRTディスプレイからなる表示部10を
介し、警告メッセージ等を発すればよい。
さて、今まで述べてきた処理は、リレーシーケンス図上
の一般の格子点の処理である。リレーシーケンス図の左
端および右端は、それぞれ電源母線および接地線であ
る。ここでは、上述とは別の処理が必要である。この処
理を、前述した第12図の処理回路328,329が行
なう。
まず、左端の格子点においては、これらはすべて電源母
線上にある。そこで、各格子点において右むきの枝が出
ているかどうかを調べ、出ていたら「節」のセルを生成
し、また右方の枝に対する「枝」のセルを生成し、その
「節」のセルの「右鎖」に接続する。一度「節」のセル
を生成した後は、右方の枝があるたびに、「枝」のセル
を生成して、「節」のセルの「右鎖」に接続するのみで
よい。
右端の格子点は、同様に、左むきの枝が出ているかどう
かを調べ、出ていたらその「左鎖」にその左方の枝の
「枝」のセルを接続する。通常、左端の枝は出力コイル
の枝であり、単一出力の回路しか許されていない場合は
処理はこれで終りだが、複数の出力コイルの接続を許し
ている場合は、左むきの枝をすべてひろいあげ、それら
の枝に対する「枝」のセルをその「節」のセルの「左
鎖」にすべて接続する。
以上が結線構造抽出部の20の処理内容である。
以上の説明では、結線構造データメモリ21の構造およ
び内容について、模式的にしか示してこなかった。第1
6図に、その具体的構成例を示す。
同図(a)は、「節」のセルの構成である。「節」のセル
は3語から構成される。最初の語Lはその「節」のセル
の「左鎖」の先頭ポインタを格納する。具体的には、
「左鎖」上で、その「節」のセルに最初に接続する
「枝」のセルのポインタ(メモリアドレス等)を保持す
る。同じく、2番目の語Rはその「節」のセルの「右
鎖」の先頭のポインタ、すなわち「右鎖」上でその
「節」のセルから続く最初の「枝」のセルのポインタを
格納する。3番目の語には、そのセルが「節」のセルで
あることを明示するマークNを格納する。このマークの
ためには1ビットしか必要とせず(「節」のセルと
「枝」のセルの区別がつけばよい。)、前述の2語のう
ちの一部に同居させることもできるが、後述の「枝」の
セルと語数を合わせるために、このビットを独立の語上
に置き、「節」のセルを3語とした。
(b)は「枝」のセルの構成で、やはり3語から構成され
る。最初の語Lは、「節」のセルのときと同じく、「左
鎖」のためのポインタで、「左鎖」上でこの「枝」のセ
ルは続く「枝」のセルのポインタ(その「枝」のセルの
メモリアドレス等)を格納する。もし後続の「枝」のセ
ルがない場合、ここにはこの「左鎖」の起点となる
「節」のセルのポインタを格納する。これにより、「左
鎖」上の「節」および「枝」のセルは環状に結ばれるの
で、あるセルから、それが属する「左鎖」上をたどっ
て、その「左鎖」上の任意のセルに到達することが可能
である。2番目の語Rは、同じく「右鎖」のためのポイ
ンタで、「右鎖」上における後続の「枝」のセルのポイ
ンタを格納する。「左鎖」の場合と同じく、後続のポイ
ンタがない場合には、ここにこの「右鎖」の起点となる
「節」のセルのポインタを格納する。これにより、「左
鎖」の場合と同様にセルが環状に結ばれるので、必要な
セルの探索が容易に行なえる。3番目の語には、このセ
ルが「枝」のセルであることを示すマークビットB、お
よびこの「枝」のセルに関する情報、具体的にはこの
「枝」のセルに対応するリレーシーケンス図の接点また
は出力コイルの、リフレッシュメモリ7内でのアドレス
Aを格納する。
これら「節」のセル、「枝」のセルの接続関係を示した
のが第16図(c)である。この例では、一つの「節」の
セルの「左鎖」には2つの「波」のセルが、「右鎖」に
は1つの「枝」のセルが連なっている。
結線構造データメモリ21上では、これらのセルは具体
的には第16図(d)に示すように、連続して格納されて
いる。結線構造抽出処理の途中段階における各鎖に対す
るセルの追加、挿入、削除等は、上記の各ポインタの値
を変更することにより行なわれ、結線構造データメモリ
21上で各セルを移動することはない。
この例においては、各鎖でこれに連なるセルの数が多く
なると、あるセルからその一つ手前のセルに移ろうとす
ると、実際にはその鎖を環状に一周しなくてはならず、
処理に時間がかかる。そこで、各鎖に対する各セルのポ
インタを順方向のものだけでなく、逆方向のものを用意
すれば、一つ手前にもどる処理時間は短かくなる。この
場合、一つのセルの構成は5語構成となり、結線構造デ
ータメモリの必要容量は増加する。
次に、第17図に示す、論理代数式への変換部22の処
理について述べる。
この処理は,作成された結線構造データメモリ21内の
データを用いて、電源母線に対応する「節」のセルから
始まって「枝」のセル、「節」のセルと交互にたどって
いき、順次論理代数式に変換して行くものである。
第17図の変換部22において、40は右鎖処回路、4
1は左鎖処理回路、42,43はともにスタック形式の
一時記憶用メモリである。メモリ42,43を以下、ス
タックA,スタックBと呼ぶ。
スタックAは、変換処理途中のブロックの情報(ブロッ
クとは、一対の分岐節のセルと結合節のセルからなる1
レベルの入れ子構造をさすものとし、それは論理代数式
において、一対の左カッコ、右カッコで囲まれる部分に
相当する。なお、分岐節のセルとは、その「右鎖」に二
つ以上の「枝」のセルが接続されている「節」のセル、
結合節のセルとはその「左鎖」に二つ以上の「枝」のセ
ルが節続している「節」のセルである。)を一時退避す
るためのもの、スタックBは、処理途中、部分的に生成
された論理代数式を一時退避するためのものである。さ
らに、スタックAは第18図に示すように、三つの部分
スタックA1〜A3から構成される。スタックA1は分
岐節のセルのポインタを格納する部分、スタックA2は
結合節のセルのポインタを格納する部分、スタックA3
はそのブロックの処理状況を記憶する部分である。
変換部22の処理は大きく分けて二つの部分から構成さ
れており、一つは「節」のセルの「右鎖」の処理、もう
一つはこの処理で引き出された「枝」のセルがつながる
他の一つの「節」のセルの「左鎖」の処理である。第1
7図の右鎖処理回路40、左鎖処理回路41はこれらを
それぞれ受け持ち、交互に処理を行ないながら、結線構
造データを論理代数式へ変換する。
まず、右鎖処理回路40について説明する。
第19図はその具体的構成の一例である。50は右鎖分
類回路、51は終了判定回路、521〜524は処理回
路である。また、53は結線構造データメモリ21から
読出し信号である。右鎖処理回路40では、最初に終了
判定回路51が「節」のセルからその「右鎖」をたど
り、それに連なる先頭の「枝」のセルを引出す。このと
き「右鎖」に連なる「枝」のセルがない場合、その
「節」のセルはもとのリレーシーケンス図の接地線部分
に対応する「節」のセルであり、そこで変換処理は終り
である。
したがって、このとき終了判定回路51は、その由、信
号線54により、統轄制御部に通知する。
「右鎖」に連なる「枝」のセルがある時、その「枝」の
セルは「右鎖」へつながる位置により、第20図のよう
に分類することができる。図で丸が「節」のセルを示
し、実線が各「枝」のセルを示す。実線の各「枝」のセ
ルのうち、太い実線部分が現在注目している「枝」のセ
ルを示している。したがって、第20図(a)の太い実線
は、単一の「枝」のセルのみの「右鎖」を持つ「節」の
セルにおける、その単一の「枝」のセルである。(b)の
太い実線は、複数の「枝」のセルがつながっている「右
鎖」を持つ「節」のセル、すなわち分岐節のセルにおけ
る一番上の「枝」のセルを示す。(c)の太い実線は、同
じく分岐節のセルの中間の「枝」のセル(上下に他の
「枝」のセルがある場合である。したがってこのときこ
の分岐節のセルは3本以上の「枝」のセルを持つ。)、
(d)の太い実線は分岐節のセルの一番下の「枝」のセル
である。
右鎖分類回路は、これらを分類判別して、各処理回路5
21〜524の一つに対し、処理指令を与える。各処理
回路はそれぞれ順に上記の(a)〜(d)の各分類に対応す
る処理を実行する回路である。
右鎖分類回路50における、判定処理は次のようであ
る。
まず、「右鎖」に連なる「枝」のセルの数を見て、それ
が複数のときは第20図(b)または(c)の場合であり、
単一のときは第20図(a)または(d)の場合であること
がわかる。(各場合の処理において、該当する処理が終
了した後、その「枝」のセルを「右鎖」からはずして、
「右鎖」をつめる処理を行なう。これにより、再度同一
の「節」のセルにもどってきたときには、第20図(d)
の場合も(a)の場合と同様、「右鎖」には単一の「枝」
のセルが接続されている状態になっている。) 次に、(b)と(c)ならびに(a)と(d)の区別であるが、
これは次のようにして行なう。各「節」のセルに、専用
のフラグビット(以下これを分岐節ビットと呼ぶ。)を
1ビット設け、これを初期状態ではオフにしておく。こ
の状態で各「節」のセルの「右鎖」の処理に入り、まず
上記の「枝」のセルの数の判定を行なう。このとき判定
結果が(b)または(c)であったならば、分岐節ビットを
見て、これがオフ状態ならば、この「右鎖」は初めて来
た「右鎖」である。すなわちこれに連なる先頭の「枝」
のセルは、分岐節における一番上の「枝」のセルで、
(b)の場合にあたる。この時、後での処理の便宜をはか
るために分岐節ビットをオンにし、以下(b)の場合に対
する処理を行なう。分岐説ビットがオン状態ならば、こ
の「右鎖」は既に一回以上アクセスされたことを示して
おり、これは(c)の場合に相当する。
「枝」のセルの数の判定の結果(a)または(d)の場合で
も、分岐節のビットを見て、これがオフ状態のときは
(a)の場合、オン状態のときは(d)の場合であることが
わかる。
この判定結果により、第19図の右鎖分類回路50は、
対応する処理回路521〜524に処理指令を発する。
以下順に、各処理回路における処理内容について述べ
る。
なお、第19図を信号線55は、左鎖処理回路51との
連絡用信号線、56,57はそれぞれスタックA,Bに
対する読出し書込み信号線、58は論理代数式メモリ1
5に対する書込み信号線である。
まず(a)の場合。(処理回路521での処理) それまでに完成している部分論理式の後に、「・」(論
理積のマーク)を追加し、さらにその後に処理中の
「枝」のセルに対応する接点の名前を追加する。このと
き、対応する接点がブレーク接点であったならば、接点
名の前に「/」(論理否定の記号)をつける。また、接
点でなく出力コイルであるならば、「=」(代入記号)
に続けて出力コイル名を付加する。
これで(a)の処理は終りである。なお、以下の各処理に
おいても、接点名を追加する処理が何回か出てくるが、
このときも上と同様に、ブレーク接点および出力コイル
であったならば対応する処理を行なうものとする。
次に(b)の場合。(処理回路522での処理) これは、分岐節のセルの最初の「枝」のセルについてで
あり、新らしいブロックの開始を意味する。そこでスタ
ックAにこのブロックの情報エリアを確保するととも
に、その情報を整える必要がある。具体的には、スタッ
クA1に、現在の「節」のセルのポインタを入れ、スタ
ックA2,A3には「0」を入れる。スタックA2には本
来結合節のセルのポインタを入れるべきであるが、これ
は現在未定であるので、仮に「0」を入れておく。スタ
ックA3はそのブロックの処理状況を記憶するためのも
のであるが、これは具体的には、このブロックの分岐節
のセルにおいて一番下の「枝」のセルに達したか否かを
記憶する1ビットのフラグである。最初はここを「0」
にしておく。
それから、現在組立中の部分論理式に「・」を追加し、
その後処理中の部分論理式全体をスタックBに退避す
る。
次に、現在の「枝」のセルに対応する接点名をとってき
て、これを新らしく部分論理式の核にする。
最後に、処理の終った「枝」のセルを「右鎖」からはず
し、「右鎖」をつめる。
三番目に(c)の場合。(処理回路523での処理) これは、分岐節のセルの中間の「枝」のセルの処理であ
る。後に述べるように、この状態の分岐節のセルの処理
に入るのは、その前にその分岐節のセルとペアをなす結
合節のセルにおける処理を行なった結果に因る。この結
合節のセルに到るまでは、現在の「枝」のセルより上方
の各「枝」のセルに体する処理を行なっているわけで、
結合節のセルに到るまでに組立てられた部分論理式は、
結合節のセルにおける処理ですでにスタックBに退避し
ている。
そこで、この分岐節のセルでは、まず現在の「枝」のセ
ルに対応する節点名をとってきて、これを新らしく部分
論理式の核にした後、処理の終った「枝」のセルを「右
鎖」からはずし、「右鎖」をつめればよい。
最後に(d)の場合。(処理回路524での処理) これは(c)の状況と似ているが、この時は(c)の処理に
加えて、分岐節のセルの「右鎖」の一番下の「枝」のセ
ルに達した印に、スタックA3の先頭を「0」から
「1」に変える。
以上が右鎖処理回路40の処理内容である。
次に、現在の「枝」のセルの他の端をたどり、この
「枝」のセルに接続するもう一つの「節」のセルをもと
め、この「節」のセルの「左節」の処理に入る。
第21図は、左鎖処理回路41の具体的構成の一例であ
る。第19図の右鎖処理回路40とほぼ同様な構成で6
0は左鎖分類回路、611〜613は左鎖の各分類に応
じた各処理回路である。また53および55〜58は信
号線で、第19図と同様である。
「左鎖」の場合も、「右鎖」の場合と同様に、その
「枝」のセルのつながる位置により、第22図のように
分類することができる。第20図と同様、太い実線が現
在注目している「枝」のセルを示す。
どの分類の「枝」のセルであるかについての判定も、
「右鎖」の場合と同様で、「左鎖」につながる「枝」の
セルの数と、「節」のセルに別途設けた結合節ビットを
用いて行なう。
以下順に各処理回路611〜613の処理内容について
説明する。
まず第22図(a)の場合。
この時、必要な処理はすでに前述の「右鎖」側で終って
いる。(第20図(a)に対する処理)残るは、この
「枝」のセルを「左鎖」からはずし、消去することぐら
いであるが、この処理は絶対必要な処理ではない。した
がって、この場合、対応する処理部は不要である。
次に第22図(b)の場合。(処理回路611での処理) この時、第20図の(b)の場合と同様に、まず現在の
「節」のセルの結合節ビットをオン状態にする。次に、
スタックA2の先頭の値を調べる。この値が「0」であ
るか否かにより、次に続く処理が分かれる。これは以下
の理由による。
同じく結合節のセルの一番上の「枝」のセルであって
も、第23図に示すように、相対する分岐節のセルとの
関係により、二種類に分類することができる。同図(a)
は、分岐節のセルにおいても結合節のセルにおいても、
接続する「枝」のセルが一番上のものである場合であ
る。(この場合、分岐節のセル、結合節のセルに接続す
る「枝」のセルが同一のものである必要はない。両者を
結ぶ複合した「枝」のセルを単一の枝として見たてた場
合に成り立っていればよい。以下同様。)第23図(b)
は、結合節のセルでは一番上の「枝」のセルであるが、
対応する分岐節のセルでは中間の「枝」のセルとなって
いる場合である。両者の場合についてスタックA2の先
頭の値を見ると、第23図(a)の場合はまだ未完成の状
態で、ここには「0」が入っている。そこで、ここを
「0」から現在の「節」のセルのポインタの値にかえ
る。
第23図(b)の場合は、スタックA2の先頭の値はすで
に「0」でなく、現在処理中の「枝」のセルよりも上方
の「枝」のセルの結合節のセルのポインタが入っている
はずである。ところが、現在処理中の「枝」のセルは結
合節のセルの一番上の「枝」のセルである。つまり、第
23図(b)で分岐節のセルを出発した時は、とりあえず
3本以上の「枝」のセルを持つブロックの中間の「枝」
のセルとして出発したところが、現在の結合節のセルに
達した時点で、この「枝」のセルは別のブロック(現在
処理中のブロックの入れ子となるブロック)の一番上の
「枝」のセルでなければならないことがわかったことに
なる。そこで、この時の処理は次のとおりとなる。
新らしいブロックと前のブロックの分岐節のセルは同じ
ものである。そこで、スタックA1にその先頭と同じも
のを再度入れる。(分岐節のセルのポインタ)スタック
2には、現在の結合節のセルのポインタを入れる。ま
たスタックA3には「0」を入れる。
スタックAに関する上記処理が終った後、さらに次の処
理を行なう。
まず現在の部分論理式に「+」(論理和の記号)を追加
して、これをスタックBに退避する。次に現在の「枝」
のセルを「左鎖」からはずし、「左鎖」を短縮する。そ
して、スタックA1の先頭の値によって指される「節」
のセルを次に処理する「節」のセルとする。(ただし、
スタックA1のレベルはそのままに保つ。) 第三に第22図(c)の場合。(処理回路612での処
理) この場合も第22図(b)の時と同様に、相対する分岐節
のセル、および分岐節のセルと結合節のセルを結ぶ枝の
配置により、第24図のように分類することができる。
同図(a)は、現在処理中の「枝」のセルが、分岐節のセ
ルでも結合節のセルでも単純に中間の「枝」のセルであ
る場合である。第24図(c)は、相対する分岐節のセル
においては、現在処理中の「枝」のセルが一番下の枝に
なっている場合である。(この時のスタックA3の先頭
は「1」になっている。) 第24図(d)は、第24図(c)と同じく相対する分岐節
のセルでは一番下の「枝」のセルになっている場合であ
るが、この場合、この結合節のセルと分岐節のセルによ
り構成されるブロックとそれに先行する「枝」のセルを
ひとまとめにして単一の「枝」のセルとして見た場合、
一番上の「枝」のセルになる場合である。これに対し、
第24図(c)の場合は、まとめて見た結果が中間の
「枝」のセルとなっている場合である。
第24図(c),(d)の場合、現在の結合節のセルと相対
する分岐節のセルからなるブロックの一番下の「枝」の
セルをとおってその結合節のセルへまで達したわけであ
るから、このブロックの終結処理を行なう必要がある。
このような場合の検出はスタックA3の先頭を見ること
により行なうことができる。第24図(c),(d)のよう
な場合、相対する分岐節のセルでは一番下の「枝」のセ
ルになっているからスタックA3の先頭を「1」にして
ある。
なお、第24図(c)のような形は、単に一重のブロック
の場合だけでなく、第25図のように、ブロックが二重
またはそれ以上の入れ子になっていて、各ブロックの終
結処理がペンディング状態になっている場合もある。
そこで第24図(c)の場合には、最初にスタックA3
先頭を見て、これが「1」であり、かつスタックA2の
先頭が現在の結合節のセルのポインタに等しい時、次の
処理を行なう。(この条件がなりたたなければ、以下の
処理はスキップする。) まずスタックBの先頭の部分論理式をとり出しこの後に
現在処理中の部分論理式を接続する。このときスタック
Bの先頭は「X+」となっているはずで(「X」は、こ
のブロック内でそれまでに形成された部分論理式)、現
在の部分論理式を「Y」とすると、上記の処理の結果、
「X+Y」となる。さらにこの両端をカッコでくくる。
そして再度スタックBの先頭の部分論理式(このとき
は、これは「Z・」という形になっているはず。)をと
り出し、上記で得られた部分論理式の前につける。この
結果は、「Z・(X+Y)」という形になる。
これで一つのブロックの処理が終る。そこでスタックA
1,A2,A3の中身をとり出して捨て、再度スタックA3
の先頭を見る。これが再び「1」ならば、上記の第24
図(C) の場合に対するブロック終結処理(すなわち、第
25図の場合に対する処理)をくり返す。「1」でなけ
れば終り。以下の処理へ進む。
上記の処理を行なった場合、結果は第24図(a)の形に
集約するか(つまり、終結処理を行なったブロックをま
とめて一つの「枝」のセルと見たときに、第24図(a)
の形になっている。以下同様)、または、第24図(b)
の形になる。もちろん上記のブロック終結処理を行なわ
なかった場合、すなわち、相対する分岐節のセルにつな
がる「枝」のセルが中間の「枝」のセルの場合は、当然
第24図(a)の形である。
上記二種類の場合で、それぞれ処理が次のように分れ
る。第24図(a)の形の時は、スタックBの先頭に入っ
ている第24図(a)の一番上の「枝」のセルに相当する
部分論理式をとり出し、現在の部分論理式をその後につ
ける。この時、スタックBの先頭は「X+」の形になっ
ているはずで、現在の部分論理式「Y」と合わせると
「X+Y」の形になる。
なお、第24図(b)の場合、第23図(a)の場合と同様
な状況にあり、処理も同じである。すなわち、スタック
A2の先頭が「0」となっているので、これを現在の結
合節のセルのポインタに変える。
以上の処理がすべて終了した後、第22図(b)における
処理と同様に、まず現在の部分論理式の後に「+」を追
加して、これをスタックBに退避する。次に現在の
「枝」のセルを「左鎖」からはずし、「左鎖」を短縮す
る。そして、スタックA1の先頭に出ている値を、次に
処理する節のセルのポインタとする。
以上で第22図(c)の処理が終る。
最後は第22図(d)の処理の場合である。(処理回路6
13での処理) これは結合節における再下段の枝であるから、ブロック
の終結処理が必要である。
まずスタックBの先頭(これは「X+」の形)と、現在
の部分論理式(これは「Y」)とをつないで、両者をカ
ッコでくくる。(「(X+Y)」の形になる。) 第22図(d)の場合も第22図(c)の場合と同様に、例
えば第26図のようにブロックが多重化していて、その
終結処理が未決になっている場合があり、その場合は可
能な限りのブロックの終結処理を行なう必要がある。
これを調べるに際し、まずスタックA3の先頭を吟味す
る。これが「0」である時、このブロックは第27図
(a)のようになっており、分岐節のセル側では再下段の
「枝」のセルになっていない。そこでブロック終結処理
はこれで終りである。ただし、第27図(a)のように、
このブロックをまとめて一つの枝と見たてた時、分岐節
のセルに対する最上段の「枝」のセルとなっているなら
ば、すなわち第20図(b)の形に帰すならば、このまと
めたブロックの外側のブロックの開始の状態にある。そ
こで、現在スタックAに入っている終結処理をしたブロ
ックの情報を捨て、新らしいブロックの情報をスタック
Aに入れればよい。しかし、スタックA1に入っている
値は、古いブロックの分岐節のセルのポインタである
が、これは新らしいブロックの分岐節のセルのポインタ
と同じであるので、これは変えなくてよい。またスタッ
クA3は、初めの判定条件の結果により「0」であるの
で、これもこのままでよい。したがってスタックA2
先頭だけを「0」に変えるのみで終りである。
第27図(a)のような状況の検知は、次のようにすれば
できる。まずスタックAに入っているデータの数を調
べ、これが1組しかなければ、いい換えれば上記の終結
処理をしたブロックの情報しかなければ第27図(a)の
状態にある。スタックAのデータの数が2組以上あるな
らば、スタックA1の先頭の二つを比較し、それが等し
ければ第27図(c)のような状態にあり、等しくなけれ
ば第27図(b)のような状態にある。第27図(b)の状
態はやはり開始処理をすべき形である。
以上がスタックA3の先頭が「0」であった時の処理で
ある。このときは、これで第22図(d)の処理も終りで
ある。
スタックA3の先頭が「0」でない時は、上述した処理
は行なわず、次に、スタックAのデータの数を調べる。
これが1組のみ、すなわち最初で終結所したブロックの
情報しか入っていなければ、この時は第28図のような
形である。この時は、スタックAの中身をとり出して捨
て、またスタックBの先頭(「Z・」の形、これしか入
っていないはず。)と、現在の部分論理式(「X+Y」
の形)とをつなぎ(「Z・(X+Y)」となる)(4)の
処理を終える。
スタックAのデータの数が2組以上の時は、次にスタッ
クA1の先頭の二つの値を比較する。両者が等しい時、
これは終結処理をしたブロックとその外側のブロックの
分岐節のセルが同一であることを意味する。以前の吟味
ですでにスタックA3の先頭は「1」、すなわちこのブ
ロックの分岐節のセルの最下段の「枝」のセルの処理で
あることがわかっているから、第27図(c)の形ではな
く第29図の形である。
この終結処理をしたブロックをまとめて1本と見たてれ
ば、これはその外側のブロックの分岐節のセルの最下段
の「枝」のセルになっていることがわかる。そこで処理
としては、終結処理したブロックの情報をスタックAか
らとり出して捨てるとともに、スタックA3の先頭を
「0」から「1」に変えることである。これで第29図
の場合の処理を終わるとともに、第22図(d)の処理も
終わる。
以上どの判定条件にも合致しない時、結線構造は部分的
に見て第28図の形になっている場合にあたる。この
時、上述した第28図の形に対すると同様な処理、すな
わちスタックAの先頭をとり出して捨て、スタックBの
先頭(「Z・」の形)と、現在の部分論理式(「(X+
Y)」の形)とをつなぐ。(「Z・(X+Y)」とな
る。) この後スタックA2の先頭と、現在の結合節のセルのポ
インタの値を比べ、等しければ第22図(d)の処理の先
頭にもとづいて、新らしいブロックについて再度同じ処
理を行なう。これは第26図のように、結終すべきブロ
ックが二重またはそれ以上になっている場合である。
以上が、左鎖処理回路41の処理内容である。この後、
左鎖の終了通知を右鎖処理回路40に送り、再び右鎖の
処理に入る。
以上が、第9図の論理代数式への変換部22の詳細な構
成および処理内容の説明である。
次に論理代数式への変換部22による処理例を第30図
に示す。同図(a)は、変換前のリレーシーケンス図の結
線構造で、(b)はその変換過程、(c)は変換結果であ
る。第30図(b)の「$」は変換処理の最初も、中間の
処理と同様に行なえるように仮に設けた部分論理式の核
である。変換終了後棄却する。第30図(b)で、スタッ
クA,Bとも左端がスタックの先頭である。またP
はそれぞれスタックA,Bのスタックポインタであ
る。
なお第30図(b)の変換過程の例からも一部わかるが、
対象となるリレーシーケンス図が複雑であると、変換処
理を進めて行くうちに、だんだん長い部分論理式をスタ
ックBに入れたり出したりしなければならないようにな
ってくる。実際の処理ではこれは相当の手数となる。そ
こで、部分論理式を論理代数式メモリ15の上のある場
所に一旦作成したら、そこを動かさないようにし、実際
の部分論理式をスタックBに出し入れする代りに、部分
論理式の先頭と最後の要素のポインタを出し入れするよ
うにすれば、スタックBに関する処理の手数はいつでも
同じとなり、部分論理式が長くなっても変らないように
なる。さらに部分論理式自体をポインタを用いた構造、
すなわちポインタによる鎖で結ばれたリスト構造にすれ
ば、実際の部分論理式の移動処理は不要となり、ポイン
タ操作だけで処理を行なえるようになる。この例を、第
31図に示す。これは第30図の例をリスト構造で表現
した例である。
この例の場合、論理的にはこれで変換された完全な論理
式が得られたと言えるが、場合によってはこれを文字表
現に変換する必要もあろう。第31図のように、変換の
結果得られた論理式はリスト構造と言っても単一の鎖で
あるから、先頭からたどって行けば簡単に文字表現に変
換することができる。また、第31図の論理式から、S
Cの機械語を得ることも可能である。
なお、前にも述べたが、途中の論理代数式への変換を省
略して、直節SCの機械命令に変換するアルゴリズムを
考えることも可能である。これは上記の結線構造データ
からの変換過程で、部分論理式を生成して行く代りに、
SC機械命令の部分列を次々に作成していくようにすれ
ばよい。または、高級言語のコンパイラで行なわれてい
るように、上記の部分論理式の代りに、第32図のよう
な木構造を作成し、木構造が完成した後、これをSCの
機械命令列に変換するようにすることも可能である。
上記の二つの変換処理、リレーシーケンス図から結線構
造データへの変換および結線構造データから論理代数式
への変換の説明では、最初に与えられたリレーシーケン
ス図がすべて正当なものであるとして説明を進めてき
た。しかし、変換の入力となるリレーシーケンス図は、
人間がCRT画面上に描写するものであるから、多くの
場合エラーが伴なう。上記の変換処理の過程で、要所要
所でチェックポイントを設ければ、この入力エラーの検
出を行なうことができる。
例えば、入力されたリレーシーケンス図に尻切れの枝が
ある場合がある。このエラー前述したように、結線構造
抽出部において検出することができる。これは既に説明
したように、第14図(ヘ)の場合に相当する。
また、例えば第33図(a)に示すようにリレーシーケン
ス図がある。このリレーシーケンス図は、リレー回路と
して見た場合、正当なもので、正常に機能を果し得る。
しかし、このリレーシーケンス図と同等な機能を果す論
理代数式(第33図(c))は作り得るが、このリレーシ
ーケンス図に直接対応するような論理代数式は存在しな
い。したがって、そのようなSCの機械命令列も存在し
ない。このようなリレーシーケンス図は、その殆んどが
操作者の入力誤りによるものなので、勝手な形の機能的
にのみ等価な論理代数式に変換してしまうよりは、エラ
ーとして検出するほうがよい。
第33図(a)のリレーシーケンス図は、一対の分岐節の
セルと結合節のセルからなるブロックの重なりが、入れ
子構造になっていない。通常、論理代数式に変換可能な
リレーシーケンス図では、論理代数式の一対のカッコで
囲まれた部分に対応する部分、すなわち一対の分岐節の
セルと結合節のセルで囲まれたブロックが多重に重なる
時、論理代数式の場合と同様に、大きいものから順繰り
に、つまり外側のものから内側のものへと順番に、内側
へ内側へと含む入れ子構造になっている必要がある。
第33図(a)のエラーは、論理代数式への変換部におけ
る処理過程で、要所要所でスタックAの内容と、そのと
きの「節」と「枝」のセルのつながりとの間に矛盾がな
いかをチェックするようにすれば検出可能である。第3
3図(a)のリレーシーケンス図の結線構造は第33図
(b)のようであるが、例えばN2の分岐節のセルの処理
をした後、N3の結合節のセルの処理に移る場合を考え
る。「枝」のセルX4は分岐節のセルN2の一番上の枝で
あるから、分岐節のセルN2ではブロックの開始処理を
行ない、スタックA1には、分岐節のセルN2のポインタ
を入れ、スタックA2,A3には「0」を入れる。次に結
合節のセルN3に移ると、「枝」のセルX4は結合節のセ
ルN3の一番下の「枝」のセルであるから、ブロックの
最結処理姿する必要がある。終結処理をするようなブロ
ックは、すでに確定しているはずで、その場合スタック
2には、以前の処理によりこの結合節のセルがポイン
タが入っていなければならない。ところが、前述したよ
うにスタックA2の先頭には「0」が入っている。そこ
で、このような状況の検出は、結合節のセルの一番下の
枝の所を行なう時、スタックA2の先頭と結合節のセル
のポインタの値を比較することにより検出できることが
わかる。
これは、一例で、他にも結合節のセルの各処理で、スタ
ックAの先頭とその時の「節」のセルと「枝」のセルの
つながり具合チェックすることにより、構造的なエラー
を検出することができる。
以上で、リレーシーケンス図変換装置14の説明を終わ
る。この後機械語変換装置16により、SCの機械語に
変換され、機械語によるシーケンスプログラムとしてS
Cの記憶部2に書込まれる。
次に、第8図のリレーシーケンス図再生装置18につい
て説明する。
第34図はその構成である。70は、論理代数式走査判
定回路で、論理代数式メモリ15上既に形成されている
論理代数式を頭から順に走査し、現われてくる論理代数
式の記号要素(「(」,「+」,「)」など)に応じ
て、必要な処理の実行を、各処理回路711〜716の
一つに対し命令する。72,73はスタック形式の一時
記憶メモリである。これを以下それぞれスタックS,ス
タックTと呼ぶことにする。
スタックSは、論理代数式における一対
の「(」,「)」で囲まれた部分に対応するリレーシー
ケンス図の部分(前述したようにこれをブロックと呼
ぶ。)の情報を、一時退避するためのものである。具体
的には、1ブロックのリケーシーケンス図の上下左右の
縁に相当する部分の座標を保持する。これをそれぞれ部
分に分けて、第35図に示すように、ブロックの上縁の
Y座標を保持するスタックをSTY,下縁のY座標を保
持するスタックSBY,左端のX座標を保持するスタッ
クをSLX、右端のX座標を保持するスタックをSRX
と名づける。スタックTは、スタックSにに準じて、1
ブロックのリレーシーケンス図のすべての横枝の右端の
点の座標を保持するのに用いる。
再生出力を表示するCRT画面にわりあてる座標系は、
次のようなものであるとする。
CRT画面の左上隅を原点とし、格子点(縦枝、横枝が
交わる位置にある点)ごとに座標を割り当てる。水平方
向をX軸、垂直方向をY軸とし、その向きは、X軸が左
から右へ増加し、Y軸は上から下へ増加するようにな
る。
第34図の74は、現在処理中の格子点の座標を保持す
るレジスタで、これをCNPと名づける。また741お
よび742はその構成部分で、CNPのX座標、および
Y座標の値を保持する。またこれらをそれぞれCNP
X,CNPYと名づける。なお、その格子点から右側へ
伸びる枝も同一のCNPで指示されるものとする。
論理代数式走査判定回路70は、論理代数式メモリ15
を順に走査し、現われてくる記号要素に応じて、処理回
路711〜716の一つに対し、その記号に応じた処理
の実行指令を発する。これらの処理を以下、箇条書きに
して説明する。
論理代数式を左から右へ順に調べていき、 (1) 接点名なら、 (i) その接点名と接点パターン をCNPの位置に出力する。(処理回路711) (ii) ただし、接点名の前に、 (イ) 「/」(論理否定の記号)がついていたら を出力する。(処理回路712) (ロ) 「=」(代入記号)がついていたら、現在のCN
Pの位置から枝を延長して、 を右端によって出力する。
「=」のときは、これで一つの論理代数式の処理を終わ
る。そして、統轄制御11に対して、終了通知を行な
う。(処理回路713) (iii) その後、CNPXの値を1増す。(処理回路7
11は先の処理(i)に加えてここの処理(ii)も行な
う。) (2) 「・」(論理積の記号)の場合、何もしないで次
へ進む。
(3) 「(」なら、新らしいブロックの開始を意味する
から、 (i) スタックSLX,SRXにCNPXの値を、スタ
ックSTY,SBYにCNPYの値をそれぞれ入れる。
(ii) スタックTに適当な区切り記号(例えば、この処
理で扱える最大の値)を入れる。
(処理回路714) (4) 「+」(論理和の記号)の場合、 (i) スタックSRXの先頭とCNPXの値を比べ、大
きい方をSRXにもどす。
(ブロックの右端の更新) (ii) CNP(CNPX,CNPY)の値を、スタック
Tに入れる。
(iii) スタックSLXの先頭をCNPXに入れる。
(スタックSLXの先頭はそのまま) (iv) スタックSBYの先頭をとり出して、これに1を
加え、CNPYに入れるとともに、スタックSBYにも
どす。
(処理回路715) (5) 「)」ならば、これは1ブロックの終了を意味
し、まず、 (i) スタックSRXの先頭とCNPXを比べ、その最
大値をもとめる。
(ii) (i)でもとめた最大値は、そのブロックに含まれ
る各横枝のうち、最大の長さを持つ枝の右端の点のX座
標である。一方、各横枝の右端の座標の値はすべてスタ
ックTに入っているので、これらをもとにして、短かい
枝についてはその右端の点から横棒 を延長して、各横枝の長さをそろえる。
(iii) スタックSLX,SRX,STY,SBYか
ら、その先頭の値をすべて取り出し、それらをもとにし
て、そのブロックの左端および右端を縦線で結ぶ。ただ
し最下端のY座標は、SBYの先頭の値ではなくCNP
Yを用いる。
(iv) スタックS(SLX,SRX,STY,SBY)
が空でない時、スタックSBYの先頭とCNPYの値
(このブロックの最下端のY座標)を比べ、大きい方を
スタックSBYにもどす。
(v) 最後に、CNPXの値を(i)でもとめた最大値
に,CNPYの値は(iii)までSTYの先頭にあった値
を入れる。(処理回路716) なお、リレーシーケンス図は、原点から作り始める。す
なわち、最初CNPを原点に置く。また画面両端の電源
母線、接地線はこの処理の前か後に描けばよい。
この変換による処理例を、第36図に示す。第36図
(a)が、変換のもととなる論理代数式(b)はその変換過
程、(c)は変換結果である。また、変換の過程で作成さ
れてゆくリレーシーケンス図の様子を第37図に示す。
同図の部分図の番号は、第36図(b)の変換過程におけ
る番号と対応させている。なお、第36図で、P,P
はそれぞれスタックS,Tのスタックポインタを示
す。またスタックT内に書いてある「#」記号は、区切
り記号を示す。スタックS,Tはともに、最左側をスタ
ックの先頭とする。
この実施例におけるリレーシーケンス図再生装置では、
リレーシーケンス図を各接点パターンが上方および左方
によるように出力している。
「(」,「)」等における処理を変えれば他の形、例え
ば右下りのリレーシーケンス図などを出力することも可
能である。
エラーチェックについては、リレーシーケンス図を展開
するためのディスプレイ画面が通常有限であることか
ら、その範囲を越えないようにチェックすることがまず
必要である。これは、CNPX,CNPYを増加させる
部分で、規定範囲を越えていないかチェックするように
すればよい。
論理代数値の正当性のチェックも必要である。論理演算
記号の順序、左右のカッコの個数等のチェックなどを行
なうとよい。
なお、SCのメモリに書込まれたプログラムが常に本発
明によりプログラム入力装置から入力されたものであれ
ば、SCのメモリに書込まれた時点で、リレーシーケン
ス図からの変換処理によりエラーチェックは終ってい
る。したがって、SCのメモリから取出して、リレーシ
ーケンス図にもどすときには、上記のエラーチェックは
不必要である。
論理代数式において、一番最後に実行される演算が論理
和のとき、通常それに対して式の両側を「(」,「)」
で囲むことはしない(第38(a)参照)が、本アルゴリ
ズムでは、論理和の演算記号「+」は必ずその両側を一
対の「(」,「)」で囲まれている必要がある。(第3
8図(b))ただし、第38図(a)のようなものが与えら
れたとき、第38図(b)の形に変換するのは容易である
し、また変換せずに、「+」記号が出てきた時点で同様
な対策を講じてもよい。
同様な問題は、前記のリレーシーケンス図から論理代数
式への変換処理の場合もありえる。つまり第38図(c)
のようなリレーシーケンス図が与えられた時、同図(b)
のような論理代数式が得られる。このような場合も、最
外側のカッコを取り払うようにするのは容易である。
なお、本発明の入力装置を用いれば単にCRTディスプ
レイの表示のためだけでなくSCのメモリ内容をリレー
シーケンス図形式で印字する場合とか、逆に、図面認識
装置で読取ったリレーシーケンス図のデータをSCの機
械命令列に変換することもできる。
[発明の効果] 以上説明したように、本発明によるシーケンスプログラ
ム入力装置を用いれば、作成済のSCの機械命令列の順
序に制約されることなしに、ディスプレイ画面上でリレ
ーシーケンス図形式で、自由にシーケンスプログラムの
修正、編集を行なうことができる。
【図面の簡単な説明】
第1図はSCの一般的構成を示すブロック図、第2図は
リレーシーケンス図、第3図は従来のシーケンスプログ
ラム入力装置の構成ブロック図、第4図は命令セットの
一例を示す図、第5図は所定の順序で入力されるシーケ
ンスプログラムのリレーシーケンス図、第6図〜第38
図はいずれも本発明によるシーケンスプログラム入力装
置の実施例に関するもので、第6図は操作キーの一例の
構成図、第7図は作成されたリレーシーケンス図、第8
図はシーケンスプログラム入力装置の一実施例の構成ブ
ロック図、第9図は第8図のリレーシーケンス図変換装
置の一例の構成ブロック図、第10図,第11図は第9
図の動作を説明するための説明図、第12図は第9図の
結線構造抽出部の一例の構成のブロック図、第13図〜
第16図は第12図の動作を説明するための説明図、第
17図は第9図の論理代数式変換部の一例の構成ブロッ
ク図、第18図は第17図のメモリの一例の構成図、第
19図は第17図の右鎖処理回路の一例の構成ブロック
図、第20図は第19図の動作を説明する説明図、第2
1図は第17図の左鎖処理回路の一例の構成ブロック
図、第22図〜第28図は第21図の動作を説明する説
明図、第29図〜第33図は第17図の動作を説明する
説明図、第34図は第8図のリレーシーケンス図再生装
置の一例の構成ブロック図、第35図は第34図のメモ
リの一例の構成図、第36図〜第38図は第34図の動
作を説明する説明図である。 4……シーケンスプログラム入力装置、7……リフレッ
シュメモリ、10……表示部、14……リレーシーケン
ス図変換装置、15……論理代数式メモリ、16……機
械語変換装置、17……論理代数式再生装置、18……
リレーシーケンス図再生装置。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 大関 正義 千葉県習志野市東習志野7丁目1番地1号 株式会社日立製作所習志野工場内 (56)参考文献 特開 昭53−32033(JP,A) 特開 昭48−26446(JP,A) 特開 昭50−5782(JP,A) 特開 昭52−119787(JP,A) 特公 昭63−65965(JP,B2)

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】複数の装置記号とそれらを接続する複数の
    線記号とそれらの装置記号に付された参照記号よりなる
    シーケンス図により規定される制御を実行するための機
    械語命令列をシーケンスコントローラに与えるためのシ
    ーケンスプログラム入力装置であって、 表示手段と、 修正すべき機械語命令列を解読して該機械語命令列に対
    応するシーケンス図を表示するためのデータを生成して
    該表示手段に送出する第1の手段と、 該表示手段に表示されたシーケンス図について修正すべ
    き記号の種別およびその位置を入力し、該表示手段によ
    り表示されたシーケンス図を修正する第2の手段と、 該表示された修正後のシーケンス図中の装置記号間の接
    続関係を判別し、その接続関係に基づいて、その修正後
    のシーケンス図にて表される制御を実行するための機械
    語命令列を修正後の機械語命令列として生成する第3の
    手段とを有するシーケンスプログラム入力装置。
  2. 【請求項2】該第3の手段は、該修正後のシーケンス図
    中の装置記号又は線記号の各々について、その種別に依
    存してあらかじめ定められた一つ又は複数の特定の隣接
    位置にある装置記号又は線記号を、それに接続されるべ
    き記号として検出することにより装置記号間の接続関係
    を判別する手段を有する第1項記載のシーケンスプログ
    ラム入力装置。
  3. 【請求項3】該第2の手段は該表示されたシーケンス図
    上で修正すべき記号の位置を指示することにより修正す
    べき記号の位置を入力する手段を有する第1項又は第2
    項記載のシーケンスプログラム入力装置。
  4. 【請求項4】該第1の手段は、 入力された機械語命令列から、それに対応する論理代数
    式を表わすデータを生成する手段と、 該論理代数式を表わすデータからそれに対応するシーケ
    ンス図を構成するための記号の種別およびその位置を表
    わすデータを生成する手段とを有する第1項から第3項
    のいずれか一つに記載のシーケンスプログラム入力装
    置。
  5. 【請求項5】該表示手段は、表示画面に表示すべきシー
    ケンス図内の各記号の種別をそれを表示すべき表示位置
    に対応して記憶する手段を有し、 該第3の手段は、この記憶手段に記憶された情報から該
    接続関係を判別する手段を有する第1項記載のシーケン
    スプログラム入力装置。
JP62237141A 1987-09-24 1987-09-24 シーケンスプログラム入力装置 Expired - Lifetime JPH0652481B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62237141A JPH0652481B2 (ja) 1987-09-24 1987-09-24 シーケンスプログラム入力装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62237141A JPH0652481B2 (ja) 1987-09-24 1987-09-24 シーケンスプログラム入力装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP4306579A Division JPS55135908A (en) 1979-04-11 1979-04-11 Sequence program input device

Publications (2)

Publication Number Publication Date
JPS63100504A JPS63100504A (ja) 1988-05-02
JPH0652481B2 true JPH0652481B2 (ja) 1994-07-06

Family

ID=17011013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62237141A Expired - Lifetime JPH0652481B2 (ja) 1987-09-24 1987-09-24 シーケンスプログラム入力装置

Country Status (1)

Country Link
JP (1) JPH0652481B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2654707B2 (ja) * 1990-03-24 1997-09-17 トヨタ自動車株式会社 複数pcの並列制御装置
JP2661316B2 (ja) * 1990-03-24 1997-10-08 トヨタ自動車株式会社 複数のプログラマブルコントローラ間の並列運転による制御装置
US7484203B2 (en) 2005-03-21 2009-01-27 International Business Machines Corporation Automated interaction diagram generation using source code breakpoints

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4826446A (ja) * 1971-08-11 1973-04-07
JPS554286B2 (ja) * 1973-05-22 1980-01-29
JPS52119787A (en) * 1976-04-02 1977-10-07 Hitachi Ltd Electronic type sequence control system
JPS5332033A (en) * 1976-09-06 1978-03-25 Sanyo Electric Co Ltd Talkie slide device

Also Published As

Publication number Publication date
JPS63100504A (ja) 1988-05-02

Similar Documents

Publication Publication Date Title
JPS6365965B2 (ja)
JPH02109127A (ja) 仕様処理方法
JP4940973B2 (ja) 論理構造認識処理プログラム、論理構造認識処理方法および論理構造認識処理装置
JP2749020B2 (ja) ダイアグラム認識システム
JPH0452856A (ja) 文書処理装置
CN111462272B (zh) 一种计算机联锁站场数据组态方法、控制系统
US20060059444A1 (en) High level validation of designs and products
JPH0652481B2 (ja) シーケンスプログラム入力装置
US8117573B2 (en) Verification-scenario generating apparatus, verification-scenario generating method, and computer product
JPS6320529A (ja) 知識獲得方式
CN111708572B (zh) 一种基于Clang程序结构的控制流程图自动生成方法
JP3102222B2 (ja) 知識獲得方法及びその実施装置
Costagliola et al. Using linear positional grammars for the LR parsing of 2-D symbolic languages
JP4140013B2 (ja) 半導体集積回路のゲートリサイズ装置及び方法とそのプログラム
CN113609821A (zh) 一种正则表达式转换方法、装置、设备及存储介质
JPS59189471A (ja) 配線経路探索システム
JPS62106542A (ja) 制御フロ−作成方式
JP3602416B2 (ja) プログラムテキスト自動作成装置及び自動作成方法
JP2006344097A (ja) if文を編集するプログラムおよびif文を編集する方法
CN113761861A (zh) 模板文件的生成方法、装置和计算机可读存储介质
JPH04205566A (ja) 半導体集積回路のマスクパターン設計用データの検証装置
JP3641063B2 (ja) マクロライブラリ生成装置
JP3199036B2 (ja) I/o部分回路自動生成システム及びその方法ならびにi/o部分回路自動生成プログラムを格納した記憶媒体
JPH1063675A (ja) データ探索方法及びそれを適用したデータ探索装置
CN111428429A (zh) 转移Cadence系统中电路及版图设计信息的方法