(57)【要約】【課題】ラダー回路が実質的に一致しているか否かを判定することができるプログラム比較装置およびプログラム比較方法を提供する。【解決手段】ラダー図により記載されたプログラムを比較するプログラム比較装置１０であって、プログラムを構成するラダー回路単位で、ラダー回路を論理式に変換する論理式変換部１４と、比較対象の２つのラダー回路のうち、少なくとも一方のラダー回路の論理式の変数の順序を、論理式の結果が変わらないように並べ替える順序変換部２６と、変数の順序を並べ替えた後の一方のラダー回路の論理式と、他方のラダー回路の論理式とを比較し、一致するか否かを判定する比較部１８と、を備える。【選択図】図３
2019095896.tif 000002
【特許請求の範囲】
【請求項１】
ラダー図により記載されたプログラムを比較するプログラム比較装置であって、
前記プログラムを構成するラダー回路単位で、前記ラダー回路を論理式に変換する論理式変換部と、
比較対象の２つの前記ラダー回路のうち、少なくとも一方の前記ラダー回路の前記論理式の信号の順序を、前記論理式の結果が変わらないように並べ替える順序変換部と、
前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の論理式とを比較し、一致するか否かを判定する比較部と、
を備える、プログラム比較装置。
【請求項２】
請求項１に記載のプログラム比較装置であって、
前記順序変換部は、比較対象の２つの前記ラダー回路の前記論理式の前記信号の順序を、前記論理式の結果が変わらないように、所定の法則にしたがって並べ替え、
前記比較部は、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、前記信号の順序を並べ替えた後の他方の前記ラダー回路の前記論理式とを比較する、プログラム比較装置。
【請求項３】
請求項１に記載のプログラム比較装置であって、
前記順序変換部は、比較対象の２つの前記ラダー回路のうち、一方の前記ラダー回路について、前記論理式の前記信号の順序を、前記論理式の結果が変わらないように並べ替えた論理式をすべて生成し、
前記比較部は、一方の前記ラダー回路の前記論理式の前記信号の順序を並べ替えた一方の前記ラダー回路の前記論理式が生成されるたびに、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とを比較する、プログラム比較装置。
【請求項４】
請求項１〜３のいずれか１項に記載のプログラム比較装置であって、
前記比較部により、一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とが一致しないと判定された場合に、前記ラダー回路において、一致しない箇所の情報を表示部に表示させる表示制御部を備える、プログラム比較装置。
【請求項５】
請求項１〜４のいずれか１項に記載のプログラム比較装置であって、
一方の前記ラダー回路は、２つの前記プログラムのうち、一方の前記プログラムを構成するラダー回路であって、
他方の前記ラダー回路は、２つの前記プログラムのうち、他方の前記プログラムを構成するラダー回路である、プログラム比較装置。
【請求項６】
請求項５に記載のプログラム比較装置であって、
前記比較部は、一方の前記プログラムの前記ラダー回路の前記論理式と、一方の前記プログラムの前記ラダー回路に対応する他方の前記プログラムの前記ラダー回路の前記論理式とを比較する、プログラム比較装置。
【請求項７】
ラダー図により記載されたプログラムを比較するプログラム比較方法であって、
前記プログラムを構成するラダー回路単位で、前記ラダー回路を論理式に変換する論理式変換ステップと、
比較対象の２つの前記ラダー回路のうち、少なくとも一方の前記ラダー回路の前記論理式の信号の順序を、前記論理式の結果が変わらないように並べ替える順序変換ステップと、
前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の論理式とを比較し、一致するか否かを判定する比較ステップと、
を備える、プログラム比較方法。
【請求項８】
請求項７に記載のプログラム比較方法であって、
前記順序変換ステップは、比較対象の２つの前記ラダー回路の前記論理式の前記信号の順序を、前記論理式の結果が変わらないように、所定の法則にしたがって並べ替え、
前記比較ステップは、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、前記信号の順序を並べ替えた後の他方の前記ラダー回路の前記論理式とを比較する、プログラム比較方法。
【請求項９】
請求項７に記載のプログラム比較方法であって、
前記順序変換ステップは、比較対象の２つの前記ラダー回路のうち、一方の前記ラダー回路について、前記論理式の前記信号の順序を、前記論理式の結果が変わらないように並べ替えたラダー回路をすべて生成し、
前記比較ステップは、一方の前記ラダー回路の前記論理式の前記信号の順序を並べ替えた一方の前記ラダー回路の前記ラダー回路が生成されるたびに、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とを比較する、プログラム比較方法。
【請求項１０】
請求項７〜９のいずれか１項に記載のプログラム比較方法であって、
前記比較ステップにより、一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とが一致しないと判定された場合に、前記ラダー回路において、一致しない箇所の情報を表示部に表示させる表示制御ステップを備える、プログラム比較方法。
【請求項１１】
請求項７〜１０のいずれか１項に記載のプログラム比較方法であって、
一方の前記ラダー回路は、２つの前記プログラムのうち、一方の前記プログラムを構成するラダー回路であって、
他方の前記ラダー回路は、２つの前記プログラムのうち、他方の前記プログラムを構成するラダー回路である、プログラム比較方法。
【請求項１２】
請求項１１に記載のプログラム比較方法であって、
前記比較ステップは、一方の前記プログラムの前記ラダー回路の前記論理式と、一方の前記プログラムの前記ラダー回路に対応する他方の前記プログラムの前記ラダー回路の前記論理式とを比較する、プログラム比較方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ラダー図により記載された２つのプログラムを比較するプログラム比較装置およびプログラム比較方法に関する。
【背景技術】
【０００２】
下記特許文献１には、プログラム内に、２つの信号と、この２つの信号の間の論理演算関係とが含まれているか否かを判定するプログラム検索装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１１８８８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献１に記載のプログラム検索装置では、プログラム内の特定の信号および論理演算関係を検索することはできるが、ラダー回路の比較を行うことができない。ラダー回路の比較を行う場合、従来、ラダー回路の構造が一致するか否かを判定していた。しかし、この判定方法では、ラダー回路の構造は異なるが、ラダー回路に入力される信号に対する出力が一致するもので、実質的に同一のラダー回路についても不一致と判定される。不一致と判定されたラダー回路については、検証等を行う必要があるため、不必要な作業が増大するおそれがあった。
【０００５】
本発明は、上記の問題を解決するためになされたものであり、ラダー回路が実質的に一致しているか否かを判定することができるプログラム比較装置およびプログラム比較方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の態様は、ラダー図により記載されたプログラムを比較するプログラム比較装置であって、前記プログラムを構成するラダー回路単位で、前記ラダー回路を論理式に変換する論理式変換部と、比較対象の２つの前記ラダー回路のうち、少なくとも一方の前記ラダー回路の前記論理式の信号の順序を、前記論理式の結果が変わらないように並べ替える順序変換部と、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の論理式とを比較し、一致するか否かを判定する比較部と、を備える。
【０００７】
本発明の第２の態様は、ラダー図により記載されたプログラムを比較するプログラム比較方法であって、前記プログラムを構成するラダー回路単位で、前記ラダー回路を論理式に変換する論理式変換ステップと、比較対象の２つの前記ラダー回路のうち、少なくとも一方の前記ラダー回路の前記論理式の信号の順序を、前記論理式の結果が変わらないように並べ替える順序変換ステップと、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の論理式とを比較し、一致するか否かを判定する比較ステップと、を備える。
【発明の効果】
【０００８】
本発明によれば、２つのラダー回路が一致するか否かの比較を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】プログラム比較装置の構成を示すブロック図である。
【図２】図２Ａは、ラダー回路を示す図である。図２Ｂは、論理式を示す図である。
【図３】プログラム比較装置において行われる処理について、概要を説明するための図である。
【図４】プログラム比較装置において行われるプログラム比較処理の流れを示すフローチャートである。
【図５】プログラム比較装置において行われるプログラム比較処理の流れを示すフローチャートである。
【図６】比較用論理式変換処理の流れを示すフローチャートである。
【図７】図７Ａ〜図７Ｃは、比較用論理式変換処理について説明する図である。
【図８】図８Ａ〜図８Ｃは、比較用論理式変換処理について説明する図である。
【図９】図９Ａ〜図９Ｃは、比較用論理式変換処理について説明する図である。
【図１０】論理式比較処理の流れを示すフローチャートである。
【図１１】論理式比較処理の流れを示すフローチャートである。
【図１２】図１２Ａ、図１２Ｂは論理式比較処理について説明する図である。
【図１３】図１３Ａ、図１３Ｂは論理式比較処理について説明する図である。
【図１４】図１４Ａ、図１４Ｂは論理式比較処理について説明する図である。
【図１５】図１５Ａ、図１５Ｂは論理式比較処理について説明する図である。
【図１６】図１６Ａ、図１６Ｂは論理式比較処理について説明する図である。
【発明を実施するための形態】
【００１０】
〔第１の実施の形態〕
［プログラム比較装置の構成］
図１は、プログラム比較装置１０の構成を示すブロック図である。本実施の形態のプログラム比較装置１０は、パーソナルコンピュータ等である。プログラム比較装置１０は、ラダー図により記載されたプログラム（以下、ラダープログラムと記載する。）を比較し、２つのラダープログラムが一致するか否かを判定する。ラダープログラムは、複数のラダー回路から構成されている。プログラム比較装置１０は、ラダープログラムをラダー回路単位で比較する。２つのラダー回路の構造が異なっていても、２つのラダー回路に入力される信号に対する出力が一致することがある。本実施の形態のプログラム比較装置１０は、入力される信号に対する出力が一致するラダー回路に対しては、２つのラダー回路が一致すると判定する。
【００１１】
ここで、本実施の形態で用いる用語について説明する。図２Ａは、ラダー回路を示す図である。図２Ｂは、論理式を示す図である。なお、図２Ｂは、図２Ａのラダー回路を論理式に変換したものである。
【００１２】
図２Ａに示すように、本実施の形態では、コイル（図２Ａでは「Ｄ」）を作動させるためのスイッチやリレー（図２Ａでは「Ａ１」、「Ｂ１」等）で構成される回路を「ラダー回路」と記載する。図２Ｂに示す論理式の「ａｎｄ」や「ｏｒ」を「演算子」と記載する。論理式において、ラダー回路のリレーやスイッチに相当する「Ａ１」、「Ｂ１」等を「信号」と記載する。演算子に入力される値を「変数」と記載する。例えば、図２Ｂの最後の「ｏｒ」に入力される「ａｎｄ（Ｃ２、Ｃ３）」と「Ｃ１」はともに「変数」であり、個々の「Ｃ１」、「Ｃ２」、「Ｃ３」は信号でもある。また、単体の「演算子」と「信号」を「ノード」と記載する。
【００１３】
プログラム比較装置１０は、プログラム記憶部１２、論理式変換部１４、比較用論理式変換部１６、比較部１８、表示制御部２０および判定部２２を有している（図１）。以下、プログラム比較装置１０の各構成について説明する。
【００１４】
図３は、プログラム比較装置１０において行われる処理について、概要を説明するための図である。図３のラダー回路ＬｃＡは、比較されるラダープログラム（以下、比較元ラダープログラムまたは比較元と記載する。）のラダー回路である。ラダー回路ＬｃＢおよびラダー回路ＬｃＣは、比較するラダープログラム（以下、比較先ラダープログラムまたは比較先と記載する。）のラダー回路である。図３では、ラダー回路ＬｃＡに対する処理を比較元Ａの列に、ラダー回路ＬｃＢに対する処理を比較先Ｂの列に、ラダー回路ＬｃＣに対する処理を比較先Ｃの列に示している。ラダー回路ＬｃＡとラダー回路ＬｃＢとは、ラダー回路の構造は異なるが、両者のラダー回路に入力される信号に対する出力が一致するもので、実質的に同一のラダー回路である。一方、ラダー回路ＬｃＡとラダー回路ＬｃＣとは、両者のラダー回路に入力される信号に対する出力が一致せず、実質的にも異なるラダー回路である。
【００１５】
プログラム比較装置１０のプログラム記憶部１２は、ラダープログラムを記憶している。論理式変換部１４は、プログラム記憶部１２から、比較されるラダープログラム（以下、比較元ラダープログラムと記載する。）と、比較するラダープログラム（以下、比較先ラダープログラムと記載する。）を読み込み、読み込んだ比較元ラダープログラムおよび比較先ラダープログラムのラダー回路単位で論理式に変換する。図３の例では、論理式変換部１４は、ラダー回路ＬｃＡ、ＬｃＢ、ＬｃＣをそれぞれ論理式ＬｅＡ、ＬｅＢ、ＬｅＣに変換する。
【００１６】
比較用論理式変換部１６は、論理式変換部１４において変換された論理式を、論理式の所定の法則にしたがって並び替えて、比較用論理式に変換する。図３の例では、比較用論理式変換部１６は、論理式ＬｅＡ、ＬｅＢ、ＬｅＣを、比較用論理式ｃＬｅＡ、ｃＬｅＢ、ｃＬｅＣに変換する。なお、比較用論理式変換部１６は、順序変換部２６を構成している。比較部１８は、比較用論理式変換部１６において並び替えられた２つの論理式が一致するか否かを判定する。
【００１７】
表示制御部２０は、ラダー回路ＬｃＡ、ＬｃＢ、ＬｃＣを表示するように表示部２４を制御する。表示制御部２０は、比較元Ａのラダー回路ＬｃＡと比較先Ｃのラダー回路ＬｃＣにおいて、比較部１８で比較した２つの論理式のうち不一致であった式に相当する箇所を強調表示するように表示部２４を制御する。図３に示す例では、比較元Ａのラダー回路ＬｃＡと比較先Ｃのラダー回路ＬｃＣの式「Ｃ１」、「Ｃ２」および「Ｃ３」に相当する箇所を太線で強調表示する。なお、強調表示は太線および太字に限らず、色を変えるようにしてもよい。また、比較元Ａのラダー回路ＬｃＡには強調表示を行わず、比較先Ｃのラダー回路ＬｃＣのみ強調表示を行うようにしてもよい。
【００１８】
判定部２２は、比較部１８における判定結果に基づいて、比較元ラダープログラムと比較先ラダープログラムとが一致するか否かを判定する。
【００１９】
［プログラム比較処理］
図４および図５は、プログラム比較装置１０において行われるプログラム比較処理の流れを示すフローチャートである。ここではラダー回路の削除や新たなラダー回路の挿入を考えない簡単な比較処理を示したが、一般的に実施されている、位置が異なるラダー回路同士も比較することで削除や挿入を検出する比較処理を用いてもよい。
【００２０】
ステップＳ１では、論理式変換部１４において、プログラム記憶部１２から比較元ラダープログラムと比較先ラダープログラムとを読み込んで、ステップＳ２へ移行する。ステップＳ２では、論理式変換部１４において、読み込んだ比較元ラダープログラムと比較先ラダープログラムから１番目のラダー回路を取得して、ステップＳ３へ移行する。
【００２１】
ステップＳ３では、論理式変換部１４において、取得したラダー回路を論理式に変換して、ステップＳ４へ移行する。ステップＳ４では、比較用論理式変換部１６において、変換した論理式の先頭ノードを対象ノードに設定して、ステップＳ５へ移行する。
【００２２】
ステップＳ５では、比較用論理式変換部１６において、比較用論理式変換処理を行って、ステップＳ６へ移行する。比較用論理式変換処理は、読み込んだ論理式を比較用論理式に変換する。また比較用論理式変換処理は、戻り値として比較用論理式を返す。比較用論理式変換処理については、後に詳述する。
【００２３】
ステップＳ６では、比較部１８において、比較元の比較用論理式の先頭ノードを対象ノードＡに設定し、比較先のラダー回路の先頭ノードを対象ノードＢに設定して、ステップＳ７へ移行する。
【００２４】
ステップＳ７では、比較部１８において論理式比較処理を行って、ステップＳ８へ移行する。論理式比較処理は、比較元の比較用論理式と、比較先の比較用論理式とを比較し、戻り値として、不一致フラグを返す。比較元の比較用論理式と、比較先の比較用論理式とが一致しているときには、不一致フラグは下されており、一致しないときには不一致フラグは立てられている。論理式比較処理については、後に詳述する。
【００２５】
ステップＳ８では、表示制御部２０において、比較元のラダー回路と比較先のラダー回路を表示するように表示部２４を制御して、ステップＳ９へ移行する。ステップＳ９では、表示制御部２０において、表示部２４に表示されている比較元のラダー回路および比較先のラダー回路上に、不一致マークが付与されたノードに対応する箇所を太線で強調表示するよう表示部２４を制御して、ステップＳ１０へ移行する。不一致マークについては、後に詳述する。
【００２６】
ステップＳ１０では、比較元ラダープログラムと比較先ラダープログラムに、次のラダー回路があるか否かを判定する。ラダー回路がある場合にはステップＳ１１へ移行し、ラダー回路がない場合にはステップＳ１２へ移行する。
【００２７】
ステップＳ１１では、論理式変換部１４において、読み込んだ比較元ラダープログラムと比較先ラダープログラムから次のラダー回路を取得して、ステップＳ３へ戻る。ステップＳ１２では、判定部２２において、ステップＳ７の論理式比較処理において、立っている状態の不一致フラグが返されたか否かを判定する。論理式比較処理から立っている状態の不一致フラグが返されたことがある場合にはステップＳ１３へ移行し、立っている状態の不一致フラグが返されたことがない場合にはステップＳ１４へ移行する。
【００２８】
ステップＳ１３では、判定部２２において、比較元ラダープログラムと比較先ラダープログラムとを不一致と判定して、処理を終了する。ステップＳ１４では、判定部２２において、比較元ラダープログラムと比較先ラダープログラムとを一致と判定して、処理を終了する。
【００２９】
［比較用論理式変換処理］
図６は、図４のステップＳ５で比較用論理式変換部１６において行われる比較用論理式変換処理の流れを示すフローチャートである。ステップＳ２１では、対象ノードの種類が演算子であるか否かを判定する。対象ノードの種類が演算子であるときにはステップＳ２３へ移行し、対象ノードの種類が信号であるときにはステップＳ２２へ移行する。
【００３０】
ステップＳ２２では、信号の名称を対象ノードの名称に設定して、ステップＳ２７へ移行する。ステップＳ２３では、一階層下のすべての子ノードを対象ノードに設定して、ステップＳ２４へ移行する。ステップＳ２４では、それぞれの対象ノードに対して比較用論理式変換処理が再帰呼び出しされて、ステップＳ２５へ移行する。
【００３１】
ステップＳ２５では、一階層下の子ノードを戻り値の名称順に並べ替えて、ステップＳ２６へ移行する。名称順のルールは、例えば、信号の名称はアルファベット順および番号順、また、信号のみからなる名称は演算子を含む名称よりも前、また、名称の先頭が「ａｎｄ」である名称は、「ｏｒ」である名称よりも前、とする。
【００３２】
ステップＳ２６では、一階層下の子ノードの戻り値を繋げたものの先頭に、対象ノードの演算子の名称を加えたものを、対象ノードの名称に設定し、ステップＳ２７へ移行する。ステップＳ２７では、対象ノードの名称を戻り値として返して、処理を終了する。
【００３３】
図７Ａ〜図７Ｃ、図８Ａ〜図８Ｃ、図９Ａ〜図９Ｃは、比較用論理式変換処理について説明する図である。図７Ａ〜図７Ｃ、図８Ａ〜図８Ｃ、図９Ａ〜図９Ｃでは、説明のため、論理式をツリー構造で示している。図７Ａ〜図７Ｃ、図８Ａ〜図８Ｃ、図９Ａ〜図９Ｃでは、図３に示す論理式ＬｅＡを、図３に示す比較用論理式ｃＬｅＡに変換する例を示している。
【００３４】
１周目の比較用論理式変換処理では、対象ノードはノードＮ１−１に設定される。ノードＮ１−１は演算子であるため、ステップＳ２４で下位の階層のノードに対して比較用論理式変換処理が呼び出される。対象ノードとしてノードＮ４−１が設定されると、ステップＳ２２では、信号の名称Ｂ４がノードＮ４−１の名称として設定される。そして、ステップＳ２７において、戻り値としてノードＮ４−１の名称Ｂ４が返される（図７Ａ）。同様に、対象ノードしてノードＮ４−２が設定されると、ノードＮ４−２の名称が信号の名称Ｂ３に設定され、戻り値としてノードＮ４−２の名称Ｂ３が返される（図７Ａ）。
【００３５】
ノードＮ４−１およびノードＮ４−２を対象ノードする比較用論理式変換処理が終了すると、ノードＮ３−１を対象ノードする比較用論理式変換処理のステップＳ２５において、一階層下の子ノードが、子ノードの名称順に並べ替えられる（図７Ｂ）。そして、ステップＳ２６において、一階層下の子ノードの名称を繋げたものの先頭に、ノードＮ３−１の演算子の名称を加えたもの（ａｎｄ（Ｂ３、Ｂ４））がノードＮ３−１の名称として設定される。続く、ステップＳ２７において、ノードＮ３−１の名称（ａｎｄ（Ｂ３、Ｂ４））が返される（図７Ｃ）。対象ノードとしてノードＮ３−２が設定された比較用論理式変換処理においても、同様にして、（ａｎｄ（Ｂ１、Ｂ２））がノードＮ３−２の名称として設定され、ノードＮ３−２の名称（ａｎｄ（Ｂ１、Ｂ２））が返される（図８Ａ）。
【００３６】
ノードＮ２−１を対象ノードとする比較用論理式変換処理のステップＳ２５において、一階層下の子ノードが、子ノードの名称順に並べ替えられる（図８Ｂ）。そして、ステップＳ２６において、一階層下の子ノードの名称を繋げたものの先頭に、ノードＮ２−１の演算子の名称を加えたもの（ｏｒ（ａｎｄ（Ｂ１、Ｂ２）、ａｎｄ（Ｂ３、Ｂ４）））がノードＮ２−１の名称として設定される。続く、ステップＳ２７において、ノードＮ２−１の名称（ｏｒ（ａｎｄ（Ｂ１、Ｂ２）、ａｎｄ（Ｂ３、Ｂ４）））が返される（図８Ｃ）。
【００３７】
ノードＮ２−２の下位の各ノードに対しても、同様に比較用論理式変換処理が実行される。その結果、（ｏｒ（Ｃ１、ａｎｄ（Ｃ２、Ｃ３）））がノードＮ２−２の名称に設定され、ノードＮ２−２の名称（ｏｒ（Ｃ１、ａｎｄ（Ｃ２、Ｃ３）））が返される。また、ノードＮ２−３に、比較用論理式変換処理が実行され、（Ａ１）がノードＮ２−３の名称に設定され、ノードＮ２−３の名称（Ａ１）が返される（図９Ａ）。
【００３８】
ノードＮ１−１を対象ノードとする比較用論理式変換処理のステップＳ２５において、一階層下の子ノードが、子ノードの名称順に並べ替えられる（図９Ｂ）。そして、ステップＳ２６において、一階層下の子ノードの名称を繋げたものの先頭に、ノードＮ１−１の演算子の名称を加えたもの（ａｎｄ（Ａ１、ｏｒ（ａｎｄ（Ｂ１、Ｂ２）、ａｎｄ（Ｂ３、Ｂ４））、ｏｒ（Ｃ１、ａｎｄ（Ｃ２、Ｃ３）））がノードＮ１−１の名称として設定される。続く、ステップＳ２７において、ノードＮ１−１の名称（ａｎｄ（Ａ１、ｏｒ（ａｎｄ（Ｂ１、Ｂ２）、ａｎｄ（Ｂ３、Ｂ４））、ｏｒ（Ｃ１、ａｎｄ（Ｃ２、Ｃ３）））が返される（図９Ｃ）。
【００３９】
［論理式比較処理］
図１０および図１１は、図４のステップＳ７で比較部１８において行われる論理式比較処理の流れを示すフローチャートである。ステップＳ３１では、対象ノードＡの種類と対象ノードＢの種類が同一であるか否かを判定する。対象ノードＡの種類と対象ノードＢの種類が同一である場合には、ステップＳ３３へ移行し、対象ノードＡの種類と対象ノードＢの種類が同一でない場合には、ステップＳ３２へ移行する。ステップＳ３２では、不一致フラグを立てて、ステップＳ４７へ移行する。
【００４０】
ステップＳ３３では、対象ノードＡの種類および対象ノードＢの種類が信号であるか否かを判定する。対象ノードＡの種類および対象ノードＢの種類が信号である場合には、ステップＳ３４へ移行し、対象ノードＡの種類および対象ノードＢの種類が演算子である場合には、ステップＳ３６へ移行する。
【００４１】
ステップＳ３４では、対象ノードＡの信号と対象ノードＢの信号が同一であるか否かを判定する。対象ノードＡの信号と対象ノードＢの信号が同一である場合には、ステップＳ３５へ移行し、対象ノードＡの信号と対象ノードＢの信号が同一でない場合には、ステップＳ３２へ移行する。ステップＳ３５では、不一致フラグを下して、ステップＳ４７へ移行する。
【００４２】
ステップＳ３６では、対象ノードＡおよび対象ノードＢのすべての子ノードの比較済マークを削除した後、対象ノードＡの最初の子ノードを対象ノードＸに設定し、対象ノードＢの最初の子ノードを対象ノードＹに設定して、ステップＳ３７へ移行する。図９Ｃに示す論理式の例では、ノードＮ１−１の最初の子ノードはノードＮ２−３である。
【００４３】
ステップＳ３７では、対象ノードＸを対象ノードＡ、対象ノードＹを対象ノードＢとして、論理式比較処理が再帰呼び出しされ、ステップＳ３８へ移行する。ステップＳ３８では、不一致フラグが立っているか否かを判定する。不一致フラグが立っている場合には、ステップＳ３９へ移行し、不一致フラグが下りている場合には、ステップＳ４１へ移行する。
【００４４】
ステップＳ３９では、対象ノードＸの名称と対象ノードＹの名称とを比較し、名称順で前の対象ノードＸまたは対象ノードＹに、不一致マークおよび比較済マークを付与して、ステップＳ４０へ移行する。例えば、対象ノードＸの名称が「Ｃ１」であって、対象ノードＹの名称が「ａｎｄ（Ｃ１、Ｃ２）」であった場合、前述の名称順のルールのから、信号のみからなる名称は演算子を含む名称よりも前であるため、対象ノードＸに不一致マークおよび比較済マークが付与される。
【００４５】
ステップＳ４０では、ステップＳ３９において、対象ノードＸに不一致マークが付与された場合には、対象ノードＸの次のノードを新たな対象ノードＸに設定し、対象ノードＹに不一致マークが付与された場合には、対象ノードＹの次のノードを新たな対象ノードＹに設定して、ステップＳ４２へ移行する。ステップＳ４１では、対象ノードＸおよび対象ノードＹに比較済マークを付与した後、対象ノードＸの次のノードを新たな対象ノードＸに設定し、対象ノードＹの次のノードを新たな対象ノードＹに設定して、ステップＳ４２へ移行する。次のノードとは、同階層の隣のノードのことを示し、図９Ｃに示す論理式の例では、ノードＮ２−３の次のノードは、ノードＮ２−１となる。
【００４６】
ステップＳ４２では、対象ノードＸおよび対象ノードＹが設定できたか否かを判定する。対象ノードＸおよび対象ノードＹが設定できた場合には、ステップＳ３７へ戻り、対象ノードＸおよび対象ノードＹが設定できなかった場合には、ステップＳ４３へ移行する。対象ノードＸが設定できなかった、または、対象ノードＹが設定できなかったとは、次のノードが存在しないため、対象ノードＸまたは対象ノードＹに設定すべきノードがなかったことを示す。図９Ｃに示す論理式の例では、ノードＮ２−２には次のノードが存在しないため、ノードＮ２−２の次のノードを対象ノードに設定できないことになる。
【００４７】
ステップＳ４３では、対象ノードＡおよび対象ノードＢに未処理の子ノードがあるか否かを判定する。未処理の子ノードがある場合には、ステップＳ４４へ移行し、未処理の子ノードがない場合には、ステップＳ４６へ移行する。未処理の子ノードとは、対象ノードＡまたは対象ノードＢの子ノードのうち、比較済マークが付与されていない子ノードのことを示す。
【００４８】
ステップＳ４４では、未処理の子ノードのすべてに不一致マークを付与して、ステップＳ４５へ移行する。ステップＳ４５では、不一致フラグを立てて、ステップＳ４７へ移行する。ステップＳ４６では、いずれかの子ノードに不一致マークが付与されていれば不一致フラグを立てて、そうでなければ不一致フラグを下して、ステップＳ４７へ移行する。ステップＳ４７では、戻り値として不一致フラグを返して、処理を終了する。
【００４９】
図１２Ａ、図１２Ｂ、図１３Ａ、図１３Ｂ、図１４Ａ、図１４Ｂ、図１５Ａ、図１５Ｂ、図１６Ａおよび図１６Ｂは、論理式比較処理について説明する図である。図１２Ａ、図１２Ｂ、図１３Ａ、図１３Ｂ、図１４Ａ、図１４Ｂ、図１５Ａ、図１５Ｂ、図１６Ａおよび図１６Ｂでは、説明のため、論理式をツリー構造で示している。図１２Ａ、図１２Ｂ、図１３Ａ、図１３Ｂ、図１４Ａ、図１４Ｂ、図１５Ａ、図１５Ｂ、図１６Ａおよび図１６Ｂでは、図３に示す比較元Ａの比較用論理式ｃＬｅＡと比較先Ｃの比較用論理式ｃＬｅＣとを比較する例を示している。また、図１２Ａ、図１２Ｂ、図１３Ａ、図１３Ｂ、図１４Ａ、図１４Ｂ、図１５Ａ、図１５Ｂ、図１６Ａおよび図１６Ｂに示す「Ｆ」は比較済マークを表し、「Ｍ」は不一致マークを表している。
【００５０】
１周目の論理式比較処理では、ノードＡ１−１が対象ノードＡに設定され、ノードＢ１−１が対象ノードＢに設定される。ノードＡ１−１とノードＢ１−１は、ともに同一の演算子「ａｎｄ」であるため、ステップＳ３１→ステップＳ３３→ステップＳ３６と進む。ステップＳ３６において、ノードＡ１−１およびノードＢ１−１のすべての子ノードのＡ２−１、Ａ２−２、Ａ２−３、Ｂ２−１、Ｂ２−２、Ｂ２−３の比較済マークを削除した後、ノードＡ１−１の最初の子ノードであるノードＡ２−１が対象ノードＸに設定され、ノードＢ１−１の最初の子ノードであるノードＢ２−１が対象ノードＹに設定される（図１２Ａ）。続く、ステップＳ３７において、対象ノードＡをノードＡ２−１、対象ノードＢをノードＢ２−１として、論理式比較処理が再帰呼び出しされる（図１２Ａ）。
【００５１】
ノードＡ２−１とノードＢ２−１は、同一の信号「Ａ１」であるため、ステップＳ３１→ステップＳ３３→ステップＳ３４→ステップＳ３５と進む。ステップＳ３５において、不一致フラグが下され、続くステップＳ４７において、その不一致フラグが戻り値として返される。
【００５２】
対象ノードＡをノードＡ２−１、対象ノードＢをノードＢ２−１とする論理式比較処理が終了し、ステップＳ３７→ステップＳ３８と進む。このとき、不一致フラグは下りているため、ステップＳ４１へ進み、ノードＡ２−１およびノードＢ２−１に比較済マークを付与した後、ノードＡ２−１の次のノードであるノードＡ２−２を対象ノードＸに設定し、ノードＢ２−１の次のノードであるノードＢ２−２を対象ノードＹに設定する（図１２Ｂ）。対象ノードＸと対象ノードＹが設定できたため、ステップＳ４２→ステップＳ３７と進み、対象ノードＡをノードＡ２−２、対象ノードＢをノードＢ２−２として、論理式比較処理が再帰呼び出しされる（図１２Ｂ）。
【００５３】
ノードＡ２−２およびその下位ノード、ノードＢ２−２およびその下位ノードに対して論理式比較処理が終了すると、ステップＳ３８→ステップＳ４１と進み、ノードＡ２−２およびその下位ノード、ノードＢ２−２およびその下位ノードに比較済マークが付与された後、ノードＡ２−３が対象ノードＸに設定され、ノードＢ２−３が対象ノードＹに設定される（図１３Ａ）。対象ノードＸと対象ノードＹが設定できたため、ステップＳ４２→ステップＳ３７と進み、対象ノードＡをノードＡ２−３、対象ノードＢをノードＢ２−３とする論理式比較処理が再帰呼び出しされる（図１３Ａ）。
【００５４】
ノードＡ２−３とノードＢ２−３は、ともに演算子「ｏｒ」であるため、ステップＳ３１→ステップＳ３３→ステップＳ３６と進む。ステップＳ３６において、ノードＡ２−３およびノードＢ２−３のすべての子ノードの比較済マークが削除された後、ノードＡ３−３が対象ノードＸに設定され、ノードＢ３−３が対象ノードＹに設定される（図１３Ｂ）。続くステップＳ３７において、対象ノードＡをノードＡ３−３、対象ノードＢをノードＢ３−３として、論理式比較処理が再帰呼び出しされる（図１３Ｂ）。
【００５５】
ノードＡ３−３の種類は信号であるのに対して、ノードＢ３−３の種類は演算子であるため、ステップＳ３１→ステップＳ３２と進む。ステップＳ３２において、不一致フラグが立てられ、続くステップＳ４７において、その不一致フラグが戻り値として返される。
【００５６】
対象ノードＡをノードＡ３−３、対象ノードＢをノードＢ３−３とする論理式比較処理が終了すると、ステップＳ３８へ進む。このとき、不一致フラグは立っているため、ステップＳ３９へ進む。ステップＳ３９において、対象ノードＸであるノードＡ３−３の名称「Ｃ１」と対象ノードＹであるノードＢ３−３の名称「ａｎｄ（Ｃ１、Ｃ２）」の名称とを比較し、名称順で前であるノードＡ３−３に、不一致マークおよび比較済マークが付与される（図１４Ａ）。
【００５７】
続くステップＳ４０において、不一致マークが付けられたノードＡ３−３の次のノードであるノードＡ３−４が対象ノードＸに設定される（図１４Ｂ）。対象ノードＸと対象ノードＹが設定できたため、ステップＳ４２→ステップＳ３７と進み、対象ノードＡをノードＡ３−４、対象ノードＢをノードＢ３−３として、論理式比較処理が再帰呼び出しされる（図１４Ｂ）。
【００５８】
ノードＡ３−４とノードＢ３−３は、ともに演算子「ａｎｄ」であるため、ステップＳ３１→ステップＳ３３→ステップＳ３６と進み、Ａ３−４およびＢ３−３の子ノードの比較済マークを削除した後、ノードＡ４−５が対象ノードＸに設定され、ノードＢ４−５が対象ノードＹに設定される（図１５Ａ）。続くステップＳ３７において、対象ノードＡをノードＡ４−５、対象ノードＢをノードＢ４−５として、論理式比較処理が再帰呼び出しされる（図１５Ａ）。
【００５９】
対象ノードＡをノードＡ４−５、対象ノードＢをノードＢ４−５とする論理式比較処理が終了すると、ステップＳ３８へ進む。このとき、不一致フラグは立っているため、ステップＳ３９へ進む。対象ノードＸであるＡ４−５の名称「Ｃ２」と対象ノードＹであるＢ４−５の名称「Ｃ１」の名称を比較し、ノードＢ４−５に、不一致マークおよび比較済マークが付与される（図１５Ａ）。
【００６０】
続くステップＳ４０において、不一致マークが付けられたノードＢ４−５の次のノードであるノードＢ４−６が対象ノードＹに設定される（図１５Ｂ）。対象ノードＸと対象ノードＹが設定できたため、ステップＳ４２→ステップＳ３７と進み、対象ノードＡをノードＡ４−５、対象ノードＢをノードＢ４−６として、論理式比較処理が再帰呼び出しされる（図１５Ｂ）。
【００６１】
ノードＡ４−５とノードＢ４−６は一致するので、不一致フラグは立たず、ステップＳ３８→ステップＳ４１と進み、ノードＡ４−５およびノードＢ４−６に比較済マークが付与される（図１５Ｂ）。その後、対象ノードＸにＡ４−６が設定されるが、対象ノードＹはＢ４−６の次ノードがないため、ステップＳ４２→ステップＳ４３と進む。ステップＳ４３において、ノードＡ３−４およびノードＢ３−３の子ノードのうち、ノードＡ４−６は比較済マークがなく、未処理ノードになるため、ステップＳ４４において、ノードＡ４−６に不一致マークが付与され、ステップＳ４５→ステップＳ４７に進む（図１６Ａ）。
【００６２】
ノードＡ３−４およびその下位ノード、ノードＢ３−３とその下位ノードに対して、論理式比較処理が終了すると、新たに、ノードＢ４−５およびノードＡ４−６に不一致マークが付与される（図１６Ａ）。このとき、不一致フラグは立っているため、ステップＳ３８→ステップＳ３９と進み、ノードＢ３−３に不一致マークおよび比較済マークが付与される。そして、対象ノードＡをノードＡ３−４、対象ノードＢをノードＢ３−４として、論理式比較処理が再帰呼び出しされる（図１６Ｂ）。
【００６３】
ノードＡ３−４の種類は演算子であるのに対して、ノードＢ３−４の種類は信号であるため、ステップＳ３１→ステップＳ３２と進む。ステップＳ３２において、不一致フラグが立てられ、続くステップＳ４７において、その不一致フラグが戻り値として返される。
【００６４】
対象ノードＡをノードＡ３−４、対象ノードＢをノードＢ３−４とする論理式比較処理が終了し、ステップＳ３８へ進む。このとき、不一致フラグは立っているため、ステップＳ３９へ進む。ステップＳ３９において、対象ノードＸであるノードＡ３−４の名称「ａｎｄ（Ｃ２、Ｃ３）」と対象ノードＹであるノードＢ３−４の名称「Ｃ３」とを比較し、名称順で前であるノードＢ３−４に、不一致マークおよび比較済マークが付与される（図１６Ｂ）。続くステップＳ４０では、不一致マークが付けられたノードＢ３−４の次のノードが存在しないため、対象ノードＹを設定できない。そのため、ステップＳ４０→ステップＳ４２→ステップＳ４３と進む。
【００６５】
ノードＡ３−４は、比較済マークが付与されずに論理式比較処理が未完了のため未処理のノードになる。そのため、ステップＳ４４において、ノードＡ３−４に不一致マークが付与されて、ステップＳ４５において、不一致フラグが立てられ、続くステップＳ４７において、その不一致フラグが戻り値として返される（図１６Ｂ）。
【００６６】
再帰呼び出しされた論理式比較処理がすべて終了すると、ノードＡ２−３、ノードＡ３−３、ノードＡ３−４、ノードＡ４−６、ノードＢ３−３、ノードＢ３−４、ノードＢ４−５に不一致マークが付与されている状態となる（図１６Ｂ）。
【００６７】
［作用効果］
ラダー図により記載された２つのプログラムを比較するときに、従来、ラダー回路の構造が一致するか否かを判定していた。しかし、この判定方法では、ラダー回路の構造は異なるが、ラダー回路に入力される信号に対する出力が一致するもので、実質的に同一のラダー回路についても不一致と判定される。不一致と判定されたラダー回路については、検証等を行う必要があるため、不必要な作業が増大するおそれがあった。
【００６８】
そこで本実施の形態では、まず、比較対象の２つのラダープログラムのラダー回路を論理式に変換し、その論理式の変数の順序を結果が変わらないように並び替えて、比較用論理式を作成するようにした。そして、比較用論理式同士を比較して、一致するか否かを判定するようにした。これにより、ラダー回路の構造は異なるが、ラダー回路に入力される信号に対する出力が一致するものに対しては、一致と判定することができる。
【００６９】
また、本実施の形態では、表示部２４に表示されたラダー回路において、比較した２つの比較論理式のうち不一致であった式に相当する箇所を強調表示するようにした。これにより、比較対象の２つのラダープログラムのラダー回路のうち、異なる箇所をユーザが認識しやすいように表示部２４に表示させることができる。また、表示部２４に表示するラダー回路として、比較用論理式から作成したラダー回路を使用してもよい。これにより、ラダー回路の構造が整理され、不一致箇所の内容が明確になる。
【００７０】
〔変形例１〕
第１の実施の形態では、比較元ラダープログラムのラダー回路の論理式と、比較先ラダープログラムのラダー回路の論理式の両方を比較用論理式に変換し、比較用論理式同士を比較していた。これに対し、一方のラダープログラムのラダー回路の論理式を、論理式の結果が変わらないように、すべてのパターンで変数の順番を変えた比較用論理式に変換し、比較用論理式が変換されるたびに、他方のラダープログラムのラダー回路の論理式と比較するようにしてもよい。
【００７１】
〔変形例２〕
第１の実施の形態に加えて、比較元ラダープログラムのラダー回路と、比較先ラダープログラムのラダー回路のうち、一致するラダー回路については、ライブラリ化するようにしてもよい。
【００７２】
〔変形例３〕
第１の実施の形態に加えて、比較先ラダープログラムのラダー回路のうち、比較元ラダープログラムのラダー回路と一致するラダー回路については、一致する比較元ラダープログラムのラダー回路の構造に一致させるようにリファクタリングを行うようにしてもよい。
【００７３】
なお、比較元ラダープログラムのラダー回路のうち、比較先ラダープログラムのラダー回路と一致するラダー回路については、一致する比較先ラダープログラムのラダー回路の構造に一致させるようにリファクタリングを行うようにしてもよい。
【００７４】
〔変形例４〕
第１の実施の形態では、比較元ラダープログラムと比較先ラダープログラムとの比較を行う例を示したが、１つのラダープログラムにおいて、２つのラダー回路を比較するものにも本発明を適用することができる。
【００７５】
〔実施の形態から得られる技術的思想〕
上記実施の形態から把握しうる技術的思想について、以下に記載する。
【００７６】
ラダー図により記載されたプログラムを比較するプログラム比較装置（１０）であって、前記プログラムを構成するラダー回路単位で、前記ラダー回路を論理式に変換する論理式変換部（１４）と、比較対象の２つの前記ラダー回路のうち、少なくとも一方の前記ラダー回路の前記論理式の信号の順序を、前記論理式の結果が変わらないように並べ替える順序変換部（２６）と、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の論理式とを比較し、一致するか否かを判定する比較部（１８）と、を備える。これにより、構造が異なるものの、実質的に同一の２つのラダー回路については、同一と判定することができる。
【００７７】
上記のプログラム比較装置（１０）であって、前記順序変換部（２６）は、比較対象の２つの前記ラダー回路の前記論理式の前記信号の順序を、前記論理式の結果が変わらないように、所定の法則にしたがって並べ替え、前記比較部（１８）は、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、前記信号の順序を並べ替えた後の他方の前記ラダー回路の前記論理式とを比較してもよい。これにより、２つのラダー回路の論理式の順序を同一の所定の法則で並べ替えることで、２つのラダー回路が一致するか否かを判定することが容易となる。
【００７８】
上記のプログラム比較装置（１０）であって、前記順序変換部（２６）は、比較対象の２つの前記ラダー回路のうち、一方の前記ラダー回路について、前記論理式の前記信号の順序を、前記論理式の結果が変わらないように並べ替えた論理式をすべて生成し、前記比較部（１８）は、一方の前記ラダー回路の前記論理式の前記信号の順序を並べ替えた一方の前記ラダー回路の前記論理式が生成されるたびに、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とを比較してもよい。これにより、１つのラダー回路の論理式の順序をすべてのパターンで並べ替えることで、２つのラダー回路が一致するか否かを判定することが容易となる。
【００７９】
上記のプログラム比較装置（１０）であって、前記比較部（１８）により、一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とが一致しないと判定された場合に、前記ラダー回路において、一致しない箇所の情報を表示部（２４）に表示させる表示制御部（２０）を備えてもよい。これにより、ラダー回路の異なる箇所をユーザが認識しやすいように表示部（２４）に表示させることができる。
【００８０】
上記のプログラム比較装置（１０）であって、一方の前記ラダー回路は、２つの前記プログラムのうち、一方の前記プログラムを構成するラダー回路であって、他方の前記ラダー回路は、２つの前記プログラムのうち、他方の前記プログラムを構成するラダー回路であってもよい。これにより、２つのプログラムが一致するか否かを判定することができる。
【００８１】
上記のプログラム比較装置（１０）であって、前記比較部（１８）は、一方の前記プログラムの前記ラダー回路の前記論理式と、一方の前記プログラムの前記ラダー回路に対応する他方の前記プログラムの前記ラダー回路の前記論理式とを比較してもよい。これにより、２つのプログラムが一致するか否かを判定することができる。
【００８２】
ラダー図により記載されたプログラムを比較するプログラム比較方法であって、前記プログラムを構成するラダー回路単位で、前記ラダー回路を論理式に変換する論理式変換ステップと、比較対象の２つの前記ラダー回路のうち、少なくとも一方の前記ラダー回路の前記論理式の信号の順序を、前記論理式の結果が変わらないように並べ替える順序変換ステップと、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の論理式とを比較し、一致するか否かを判定する比較ステップと、を備えてもよい。これにより、構造が異なるものの、実質的に同一の２つのラダー回路については、同一と判定することができる。
【００８３】
上記のプログラム比較方法であって、前記順序変換ステップは、比較対象の２つの前記ラダー回路の前記論理式の前記信号の順序を、前記論理式の結果が変わらないように、所定の法則にしたがって並べ替え、前記比較ステップは、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、前記信号の順序を並べ替えた後の他方の前記ラダー回路の前記論理式とを比較してもよい。これにより、２つのラダー回路の論理式の順序を同一の所定の法則で並べ替えることで、２つのラダー回路が一致するか否かを判定することが容易となる。
【００８４】
上記のプログラム比較方法であって、前記順序変換ステップは、比較対象の２つの前記ラダー回路のうち、一方の前記ラダー回路について、前記論理式の前記信号の順序を、前記論理式の結果が変わらないように並べ替えたラダー回路をすべて生成し、前記比較ステップは、一方の前記ラダー回路の前記論理式の前記信号の順序を並べ替えた一方の前記ラダー回路の前記ラダー回路が生成されるたびに、前記信号の順序を並べ替えた後の一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とを比較してもよい。これにより、１つのラダー回路の論理式の順序をすべてのパターンで並べ替えることで、２つのラダー回路が一致するか否かを判定することが容易となる。
【００８５】
上記のプログラム比較方法であって、前記比較ステップにより、一方の前記ラダー回路の前記論理式と、他方の前記ラダー回路の前記論理式とが一致しないと判定された場合に、前記ラダー回路において、一致しない箇所の情報を表示部（２４）に表示させる表示制御ステップを備えてもよい。これにより、ラダー回路の異なる箇所をユーザが認識しやすいように表示部（２４）に表示させることができる。
【００８６】
上記のプログラム比較方法であって、一方の前記ラダー回路は、２つの前記プログラムのうち、一方の前記プログラムを構成するラダー回路であって、他方の前記ラダー回路は、２つの前記プログラムのうち、他方の前記プログラムを構成するラダー回路であってもよい。これにより、２つのプログラムが一致するか否かを判定することができる。
【００８７】
上記のプログラム比較方法であって、前記比較ステップは、一方の前記プログラムの前記ラダー回路の前記論理式と、一方の前記プログラムの前記ラダー回路に対応する他方の前記プログラムの前記ラダー回路の前記論理式とを比較してもよい。これにより、２つのプログラムが一致するか否かを判定することができる。
【符号の説明】
【００８８】
１０…プログラム比較装置                １４…論理式変換部
１８…比較部                            ２０…表示制御部
２４…表示部                            ２６…順序変換部
【図１】
2019095896.tif 000003
【図２】
2019095896.tif 000004
【図３】
2019095896.tif 000005
【図４】
2019095896.tif 000006
【図５】
2019095896.tif 000007
【図６】
2019095896.tif 000008
【図７】
2019095896.tif 000009
【図８】
2019095896.tif 000010
【図９】
2019095896.tif 000011
【図１０】
2019095896.tif 000012
【図１１】
2019095896.tif 000013
【図１２】
2019095896.tif 000014
【図１３】
2019095896.tif 000015
【図１４】
2019095896.tif 000016
【図１５】
2019095896.tif 000017
【図１６】
2019095896.tif 000018