(57)【特許請求の範囲】
【請求項１】
ラダー図編集プログラムが記憶されるとともに、編集されたラダー図プログラムが記憶される記憶部と、
前記ラダー図編集プログラムを実行して、前記ラダー図プログラムを編集し、前記ラダー図プログラムを前記記憶部に記憶させる演算部と、
を備えた、プログラム開発支援装置であって、
前記演算部は、
前記ラダー図プログラムによって表されるラダー図に二次元座標を割り当て、
前記ラダー図に含まれる縦接続線およびその二次元座標と、回路要素、その二次元座標および種類と、を検出し、
前記回路要素と前記縦接続線をそれぞれの二次元座標に関連付けして、前記回路要素の名称、前記回路要素の種類、および、前記二次元座標をまとめて、テキストデータで前記記憶部に記憶させる、
プログラム開発支援装置。
【請求項２】
前記演算部は、
前記回路要素がファンクションまたはファンクションブロックであることを検出すると、
前記ファンクションまたは前記ファンクションブロックに接続する回路要素を、前記ファンクションまたは前記ファンクションブロックに対する接続関係とともに記憶する、
請求項１に記載のプログラム開発支援装置。
【請求項３】
前記演算部は、
記憶されている前記回路要素、前記回路要素の二次元座標、前記縦接続線、および、前記縦接続線の二次元座標を、前記記憶部から読み出し、
前記ラダー図の左母線の上端を基準にして、前記二次元座標に基づいて、読み出した前記回路要素、および、読み出した前記縦接続線を配置し、
前記左母線、右母線、前記回路要素、および、前記縦接続線を、横接続線で接続する、
ことによって、前記ラダー図を復元する、
請求項１または請求項２に記載のプログラム開発支援装置。
【請求項４】
ラダー図プログラムを編集し、編集された前記ラダー図プログラムを記憶する、プログラム開発支援方法であって、
前記ラダー図プログラムによって表されるラダー図に二次元座標を割り当てる処理と、
前記ラダー図に含まれる縦接続線およびその二次元座標と、回路要素、その二次元座標および種類と、を検出する処理と、
前記回路要素と前記縦接続線をそれぞれの二次元座標に関連付けして、前記回路要素の名称、前記回路要素の種類、および、前記二次元座標をまとめて、キストデータで記憶する処理と、
を実行する、
プログラム開発支援方法。
【請求項５】
ラダー図プログラムを編集し、編集された前記ラダー図プログラムを記憶する処理をコンピュータに実行させるプログラム開発支援プログラムであって、
前記コンピュータに、
前記ラダー図プログラムによって表されるラダー図に二次元座標を割り当てる処理と、
前記ラダー図に含まれる縦接続線およびその二次元座標と、回路要素、その二次元座標および種類と、を検出する処理と、
前記回路要素と前記縦接続線をそれぞれの二次元座標に関連付けして、前記回路要素の名称、前記回路要素の種類、および、前記二次元座標をまとめて、テキストデータで記憶する処理と、
を実行させる、
プログラム開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ラダー図プログラムのデータ処理技術に関する。
【背景技術】
【０００２】
現在、産業用コントローラを用いて複数のデバイス（機器）を制御することで製造ライン等を自動運転するシステムが各種実用化されている。このようなシステムでは、産業用コントローラは、自動運転用のラダー図プログラムに基づいて複数のデバイスの制御を行う。【０００３】
この場合、プログラム開発者は、特許文献１に記載のようにラダー図プログラムをパソコン等で作成する。そして、プログラム開発者は、当該ラダー図プログラムをパソコン等から産業用コントローラに出力する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２６５７５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の構成では、ラダー図プログラムの回路要素、横接続線、縦接続点等の全ての要素が描画素材として取り扱われる。このため、ラダー図プログラムの全体のデータ容量が大きくなってしまう。特に、回路要素、接続線が多く、複雑なラダー図プログラムになるほど、データ容量が大幅に大きくなり易い。【０００６】
したがって、本発明の目的は、データ容量を抑制できるラダー図プログラムのデータ処理技術を提供することにある。
【課題を解決するための手段】
【０００７】
この発明のプログラム開発支援装置は、演算部と記憶部とを備える。記憶部には、ラダー図編集プログラムが記憶されるとともに、編集されたラダー図プログラムが記憶される。演算部は、ラダー図編集プログラムを実行して、ラダー図プログラムを編集し、ラダー図プログラムを記憶部に記憶させる。演算部は、ラダー図に二次元座標を割り当てる。演算部は、ラダー図に含まれる回路要素の二次元座標と種類を検出し、ラダー図に含まれる縦接続線の二次元座標を検出する。演算部は、回路要素と縦接続線をそれぞれの二次元座標に関連付けして、記憶部に記憶させる。【０００８】
この構成では、回路要素と縦接続線の二次元座標によって、ラダー図における回路要素の位置、縦接続線の位置および長さ、これらに接続される横接続線が表されている。したがって、回路要素の種類と、回路要素および縦接続線の二次元座標のみを記憶すれば、ラダー図プログラムが復元され、描画素材を用いるよりもデータ容量が抑制される。
【発明の効果】
【０００９】
この発明によれば、ラダー図プログラムのデータ容量を抑制して記憶できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るプログラム開発支援装置を含むパソコンの概略構成図である。
【図２】ラダー図プログラムの記憶時のデータ形式の概念を説明するための図である。
【図３】図２に示すラダー図プログラムの元図を示す図である。
【図４】ラダー図プログラムの記憶時のデータ例を示す図である。
【図５】本発明の実施形態に係るラダー図の記憶方法のメインフローを示すフローチャートである。
【図６】より具体的なラダー図プログラムの記憶のための各種検出処理を示すフローチャートである。
【図７】本発明の実施形態に係るラダー図の復元方法のフローチャートである。
【発明を実施するための形態】
【００１１】
本発明の実施形態に係るプログラム開発支援の技術について、図を参照して説明する。図１は、本発明の実施形態に係るプログラム開発支援装置を含むパソコンの概略構成図である。
【００１２】
図１に示すように、パソコン１０は、プログラム開発支援部１１、操作入力部１２、通信制御部１３、および、表示部１４を備える。操作入力部１２は、例えば、マウスやキーボードであり、表示部１４は、例えば、液晶ディプレイ等である。通信制御部１３は、産業用コントローラとの通信制御を行う。ラダー図プログラムは、通信制御部１３を介して産業用コントローラ（図示せず）に出力される。ラダー図プログラムは、プログラム開発支援部１１で編集され、所定データ形式で記憶され、このデータ形式で産業用コントローラに出力される。
【００１３】
プログラム開発支援部１１は、本発明のプログラム開発支援装置に対応し、演算部１１１と記憶部１１２とを備える。記憶部１１２には、ラダー図編集プログラム２１を含む各種のプログラム群が記憶されている。
【００１４】
演算部１１１は、例えば、ＣＰＵ等からなり、記憶部１１２に記憶されたラダー図編集プログラム２１を実行する。これにより、表示部１４には、ラダー図編集画面が表示され、プログラム開発者は、操作入力部１２を利用して、ラダー図プログラムの編集を行う。演算部１１１は、ラダー図編集プログラム２１の実行中に、記憶（保存）の操作入力を操作入力部１２を介して受け付けると、編集されたラダー図プログラムを、記憶部１１２のラダー図記憶部１２０に記憶する。この際、ラダー図プログラムは、次に示す記憶方法を用いて得られる所定のデータ形式で記憶される。
【００１５】
次に、ラダー図プログラムの記憶方法について、より具体的に説明する。図２は、ラダー図プログラムの記憶時のデータ形式の概念を説明するための図である。図３は、図２に示すラダー図プログラムの元図を示す図である。図４は、ラダー図プログラムの記憶時のデータ例を示す図である。
【００１６】
まず、ラダー図プログラムの構成は既知ではあるが、ラダー図プログラムの記憶概念を説明するため、ラダー図プログラムの一例として、図３に示す元図を説明する。なお、図３は、一例であり、ラダー図の構成はこれに限るものではない。
【００１７】
図３に示すように、ラダー図は、左母線、右母線を備える。また、ラダー図は、回路要素、横接続線、および、縦接続線を備える。回路要素、横接続線、および、縦接続線の個数は、ラダー図によって実現する制御の内容に応じて決定されている。
【００１８】
回路要素は、左母線と右母線との間に配置され、横接続線、縦接続線を用いて、他の回路要素、左母線、および右母線のいずれかに接続されている。この接続によって、ラダー図によって実現される制御の順が決定されている。また、回路要素の形状によって、当該回路要素の種類が決定されている。
【００１９】
例えば、図３の場合、回路要素（変数）ｖａｒ１、ｖａｒ２はそれぞれ接点であり、回路要素（変数）ｖａｒ５はコイルである。また、矩形に示される回路要素（変数）は、ファンクションまたはファンクションブロックであり、図３では、ＭＯＶＥファンクションである。
【００２０】
回路要素（変数）ｖａｒ１の左母線側は、横接続線を介して左母線に接続されており、回路要素（変数）ｖａｒ１の右母線側は、横接続線を介してＭＯＶＥファンクションのＥＮ端子に接続されている。ＭＯＶＥファンクションのＥＮＯ端子は、横接続線を介して回路要素（変数）ｖａｒ５に接続されており、回路要素（変数）ｖａｒ５の右母線側は、横接続線を介して右母線に接続されている。
【００２１】
回路要素（変数）ｖａｒ２は、回路要素（変数）ｖａｒ１の下側に配置されている。回路要素（変数）ｖａｒ２の左母線側は、横接続線を介して左母線に接続されており、回路要素（変数）ｖａｒ２の右母線側は、横接続線を介して、縦接続線に接続されている。
【００２２】
縦接続線は、それぞれに横接続線を介して、回路要素（変数）ｖａｒ１の右母線側と回路要素（変数）ｖａｒ２の右母線側とに接続されている。
【００２３】
ファンクションのＩｎ端子には回路要素（変数）ｖａｒ３が接続され、Ｏｕｔ端子には回路要素（変数）ｖａｒ４が接続されている。
【００２４】
次に、図２を用いて、ラダー図プログラムの記憶概念を説明する。図２に示すように、本実施形態のラダー図プログラムの記憶方法では、ラダー図の左母線、右母線、回路要素、横接続線、および縦接続線を二次元座標で表す。具体的には、ラダー図の横方向がＸ軸方向に設定されており、ラダー図における左母線の位置がＸ＝０に設定されている。そして、右母線に近づくにしたがってＸの値は大きくなる。この際、Ｘの値は、回路要素を検出する毎に順次加算されていく。
【００２５】
また、図２に示すように、ラダー図の縦方向がＹ軸方向に設定されており、最上段がＹ＝０に設定され、下の段に進むにしたがってＹの値が順次増加するように設定されている。
【００２６】
これにより、図２に示すように、回路要素（変数）ｖａｒ１の座標は（Ｘ，Ｙ）＝（０，０）となり、ＭＯＶＥファンクションの座標は（Ｘ，Ｙ）＝（１，０）となり、回路要素ｖａｒ５の座標は（Ｘ，Ｙ）＝（２，０）となる。また、回路要素ｖａｒ２の座標は（Ｘ，Ｙ）＝（０，１）となる。
【００２７】
また、縦接続線の座標は、二次元座標上の配置位置の座標が指定され、図２の場合、（Ｘ，Ｙ）＝（１，１）となる。
【００２８】
そして、本実施形態のラダー図プログラムの記憶方法では、左母線のＸ座標が「０」と定義されており、回路要素（変数）の名称（ｖａｒ１等）と該回路要素（変数）の座標とが関連付けして記憶される。また、回路要素（変数）の種類（接点等）も、回路要素（変数）の名称（ｖａｒ１等）と該回路要素（変数）の座標とに関連付けして記憶される。
【００２９】
具体的に、図３のラダー図である場合、図４のようなデータ形式となる。図４に示すように、本実施形態のラダー図プログラムの記憶方法では、例えば、テキストデータによってラダー図プログラムが記憶される。図４に示すように、テキストデータには、回路要素（変数）の名称、回路要素（変数）の種類、および座標が関連付けして記載されている。
【００３０】
具体的には、接点、コイル等の回路要素の場合、回路要素（変数）の名称、回路要素（変数）の種類、および座標が１行にまとめて記載されている。
【００３１】
例えば、
<Contact Variable=”var1”X=0,Y=0 />
では、回路要素（変数）はｖａｒ１であり、回路要素（変数）の種類は接点であり、座標が（Ｘ，Ｙ）＝（０，０）であることが記載されている。
【００３２】
<Contact Variable=”var2”X=0,Y=1 />
では、回路要素（変数）はｖａｒ２であり、回路要素（変数）の種類は接点であり、座標が（Ｘ，Ｙ）＝（０，１）であることが記載されている。
【００３３】
<Coil Variable=”var5”X=2,Y=0 />
では、回路要素（変数）はｖａｒ５であり、回路要素（変数）の種類は接点であり、座標が（Ｘ，Ｙ）＝（２，０）であることが記載されている。
【００３４】
ファンクションまたはファンクションブロックの場合、ファンクションまたはファンクションブロックの名称、座標が１行にまとめて記載され、続く行に、各端子の名前と接続対象とがそれぞれ順に、端子毎に記載されている。
【００３５】
例えば、
<Function Name=”MOVE”X=1,Y=0 />
では、「ＭＯＶＥ」ファンクションであり、座標が（Ｘ，Ｙ）＝（１，０）であることが記載されている。
【００３６】
また、
<PowerFlowParameterType=”IN”Name=”EN” />
では、ファンクションの左母線側の横接続線に接続される端子が入力端子であり、端子名称が「ＥＮ」であることが記載されている。
【００３７】
<VariableParameterType=”IN”Name=”IN”Variable=”var3” />
では、ファンクションが他の回路要素（変数）からの入力端子を備え、端子名が「ＩＮ」であり、回路要素（変数）ｖａｒ３に接続されることが記載されている。
【００３８】
<PowerFlowParameterType=”OUT”Name=”ENO” />
では、ファンクションの右母線側の横接続線に接続される端子が出力端子であり、端子名称が「ＥＮＯ」であることが記載されている。
【００３９】
<VariableParameterType=”OUT”Name=”OUT”Variable=”var4” />
では、ファンクションが他の回路要素（変数）への出力端子を備え、端子名が「ＯＵＴ」であり、回路要素（変数）ｖａｒ４に接続されることが記載されている。
【００４０】
縦接続線の場合、
<Line X=1 Y=0 />
では、座標（Ｘ，Ｙ）＝（１，０）を始点に縦接続線が配置されていることが記載されている。
【００４１】
このようにテキストデータで記憶することによって、従来のようにラダー図として描かれた各要素を、それぞれに描画素材として記憶するよりも、記憶容量を抑制できる。
【００４２】
そして、図２に示すように、ラダー図は、左母線の最上位置を基準にして、各回路要素が二次元配列されており、各回路要素がその座標に関連付けして記憶されているので、図４に示すテキストデータを用いれば、図３に示すラダー図プログラムを容易に復元できる。
【００４３】
また、上述の方法では、ファンクションまたはファンクションブロックに接続される回路要素（変数）を、ファンクションまたはファンクションブロックの付属要素として記載している。これにより、これら回路要素（変数）を別途検出し、二次元座標を取得して、これらの回路要素（変数）に個別の行を設けるよりも、データ容量を小さくできる。
【００４４】
上述の処理をフローチャートで示すと、図５に示すフローチャートとなる。図５は、本発明の実施形態に係るラダー図プログラムの記憶方法のメインフローを示すフローチャートである。
【００４５】
図５に示すように、ステップＳ１１として、プログラム開発支援部１１は、編集されたラダー図プログラムから、縦接続線を検出し、縦接続線の二次元座標を検出する。縦接続線の検出は、ラダー図プログラムの編集の際に、ラダー図のどの部分が縦接続線であるかが記憶されているので、これを用いればよい。そして、二次元座標は、上述のように、ラダー図の左母線の最上位置を原点として、Ｘ軸、Ｙ軸を設定することで容易に検出できる。この際、縦接続線とともに同様に、横接続線も検出される。
【００４６】
次に、ステップＳ１２として、プログラム開発支援部１１は、回路要素（変数）を検出し、その種類と二次元座標を検出する。回路要素（変数）および種類の検出は、縦接続線および横接続線と同様に、ラダー図プログラムの編集の際に、ラダー図のどの部分が回路要素（変数）であるかが記憶されており、その回路要素（変数）の種類が関連付けされているので、これを用いればよい。そして、二次元座標は、上述のように、ラダー図の左母線の最上位置を原点として、Ｘ軸、Ｙ軸を設定することで容易に検出できる。
【００４７】
なお、縦接続線および横接続線の検出と、回路要素（変数）の検出とは、この順に限らず、これらを同時に行うこともできる。
【００４８】
次に、ステップＳ１３として、プログラム開発支援部１１は、回路要素（変数）および縦接続線と、これらの二次元座標とを関連付けして記憶する。この際、上述のように、記憶データは、容量の小さいテキストデータ形式等によって実現される。これにより、ラダー図プログラムは、小さい容量で記憶される。
【００４９】
次に、回路要素（変数）、その種類、および二次元座標の検出方法について、より具体的に説明する。図６は、より具体的なラダー図プログラムの記憶のための各種検出処理を示すフローチャートである。
【００５０】
ステップＳ２０１として、プログラム開発支援部１１は、ラダー図から横接続線を検出し、リストアップする。この際、プログラム開発支援部１１は、左母線に接続されている横接続線を、ラダー図の上側から下側に向かって順にリストアップする。
【００５１】
ステップＳ２０２として、プログラム開発支援部１１は、横接続線のリストが空でないことを検出すると（Ｓ２０２：ＮＯ）、ステップＳ２０３に移行する。
【００５２】
ステップＳ２０３として、プログラム開発支援部１１は、リストの最初（先頭）の横接続線を現横線に設定する。
【００５３】
ステップＳ２０４として、プログラム開発支援部１１は、現横線の右母線側（＋ｘ側）に接続されている回路要素を検出し、現回路要素に設定する。
【００５４】
ステップＳ２０５として、プログラム開発支援部１１は、現横線の左母線側（−Ｘ側）が縦接続線に接続されていることを検出すれば（Ｓ２０５：ＹＥＳ）、ステップＳ２０６に移行する。一方、プログラム開発支援部１１は、現横線の左母線側（−Ｘ側）が縦接続線に接続されていないことを検出すれば（Ｓ２０５：ＮＯ）、ステップＳ２１０に移行する。
【００５５】
ステップＳ２０６として、プログラム開発支援部１１は、現横線が縦接続線の最初の要素であるか否かを検出する。プログラム開発支援部１１は、現横線が縦接続線の最初の要素であることを検出すると（Ｓ２０６：ＹＥＳ）、ステップＳ２０７に移行する。一方、プログラム開発支援部１１は、現横線が縦接続線の最初の要素でないことを検出すると（Ｓ２０６：ＮＯ）、ステップＳ２８０に移行する。
【００５６】
ステップＳ２０７として、プログラム開発支援部１１は、現回路要素（変数）のＹ座標であるＹ（現要素）を、縦接続線の−Ｘ側の回路要素（変数）群における最小のＹ座標に設定する。
【００５７】
一方、ステップＳ２８０として、プログラム開発支援部１１は、現横線が縦接続線の最後の要素であるか否かを検出する。プログラム開発支援部１１は、現横線が縦接続線の最後の要素であることを検出すると（Ｓ２８０：ＹＥＳ）、ステップＳ２０８に移行する。
【００５８】
ステップＳ２０８として、プログラム開発支援部１１は、Ｙ（現要素）を、縦接続線の＋Ｘ側の回路要素（変数）群における最大のＹ座標に設定する。
【００５９】
プログラム開発支援部１１は、現横線が縦接続線の最後の要素でないことを検出すると（Ｓ２８０：ＮＯ）、現横線の上からの順序を取得し、Ｙ座標に加算する。すなわち、プログラム開発支援部１１は、縦接続線の−Ｘ側の回路要素（変数）群における最小のＹ座標に、順序の数に応じた値（一番上を０番とすれば順序と同じ数、一番上を１番とすれば順序−１の数）を加算した値に、現回路要素（変数）のＹ座標であるＹ（現要素）を設定する（Ｓ２８１）。
【００６０】
これらステップＳ２０７、Ｓ２０８、Ｓ２８０、Ｓ２８１によって、左母線側（−Ｘ側）が縦接続線に接続された回路要素（変数）のＹ座標が決定される。
【００６１】
ステップＳ２０９として、プログラム開発支援部１１は、現回路要素（変数）のＸ座標であるＸ（現要素）を、縦接続線の左母線側（−Ｘ側）の回路要素（変数）のＸ座標に「１」を加算した値に設定する。このステップＳ２０９によって、左母線側（−Ｘ側）が縦接続線に接続された回路要素（変数）のＸ座標が決定される。
【００６２】
ステップＳ２１０として、プログラム開発支援部１１は、左母線側（−Ｘ側）が縦接続線に接続された現回路要素（変数）の二次元座標（Ｘ，Ｙ）を、ステップＳ２０７またはＳ２０８とステップＳ２０９で決定した（Ｘ（現要素）、Ｙ（現要素））に設定する。一方、プログラム開発支援部１１は、左母線側（−Ｘ側）が縦接続線に接続された現回路要素（変数）の二次元座標（Ｘ，Ｙ）を、現回路要素（変数）の左母線側（−Ｘ側）に隣り合う回路要素（変数）のＸ座標に「１」を加算した値、および、現回路要素（変数）の左母線側（−Ｘ側）に隣り合う回路要素（変数）のＹ座標に設定する。
【００６３】
ステップＳ２１１として、プログラム開発支援部１１は、現回路要素（変数）の右母線側（＋Ｘ側）が縦接続線に接続されているか否かを検出する。プログラム開発支援部１１は、現回路要素（変数）の右母線側（＋Ｘ側）が縦接続線に接続されていれば（Ｓ２１１：ＹＥＳ）、ステップＳ２１２に移行する。プログラム開発支援部１１は、現回路要素（変数）の右母線側（＋Ｘ側）が縦接続線に接続されていなければ（Ｓ２１１：ＮＯ）、ステップＳ２２１に移行する。
【００６４】
ステップＳ２１２として、プログラム開発支援部１１は、現回路要素（変数）が縦接続線の左母線側（−Ｘ側）であって、この縦接続線に左母線側（−Ｘ側）が接続された回路要素（変数）群においてＹ座標が最大であることを検出すれば（Ｓ２１２：ＹＥＳ）、ステップＳ２３１に移行する。一方、プログラム開発支援部１１は、現回路要素（変数）が縦接続線の左母線側（−Ｘ側）であって、この縦接続線に左母線側（−Ｘ側）が接続された回路要素（変数）群においてＹ座標が最大でないことを検出すれば（Ｓ２１２：ＮＯ）、ステップＳ２０２に移行する。
【００６５】
ステップＳ２２１として、プログラム開発支援部１１は、現横線の更新を行う。具体的には、プログラム開発支援部１１は、現回路要素（変数）の右母線側（＋Ｘ側）の横接続線を、新たな現横線に設定する。プログラム開発支援部１１は、新たな横線をリストの先頭に挿入して現横線の更新を行うと（Ｓ２３３）、ステップＳ２０４に戻る。
【００６６】
ステップＳ２３１として、プログラム開発支援部１１は、横接続線の延長処理を行ってステップＳ２３２に移行する。ステップＳ２３２として、プログラム開発支援部１１は縦接続線の右母線側（＋Ｘ側）の横接続線をリストアップし、ステップＳ２０２に移行する。
【００６７】
上述の処理が繰り返され、プログラム開発支援部１１は、リストが空になったことを検出すると（Ｓ２０２：ＹＥＳ）、本処理を終了する。
【００６８】
このような処理を行うことによって、回路要素（変数）の二次元座標を確実に検出できる。
【００６９】
記憶されたラダー図プログラムは、例えば、次の方法によって復元される。図７は、本発明の実施形態に係るラダー図の復元方法のフローチャートである。
【００７０】
プログラム開発支援部１１は、記憶されているラダー図プログラムから、回路要素を抽出する（Ｓ３０１）。プログラム開発支援部１１は、抽出した回路要素に関連付けされた座標を抽出する（Ｓ３０２）。
【００７１】
プログラム開発支援部１１は、記憶されているラダー図プログラムから、縦接続線を抽出する（Ｓ３０３）。プログラム開発支援部１１は、抽出した縦接続線に関連付けされた座標を抽出する。なお、回路要素の抽出と縦接続線の抽出とは、この順に限らない。
【００７２】
プログラム開発支援部１１は、抽出した各座標に基づいて、回路要素および縦接続線を配置する（Ｓ３０５）。より具体的には、プログラム開発支援部１１は、ラダー図の左母線の上端の座標を（Ｘ，Ｙ）＝（０，０）とする。右母線のＸ座標は、全ての回路要素における最大のＸ座標に対して、１加算したＸ座標によって決定される。プログラム開発支援部１１は、横軸をＸ軸として左母線から右母線方向にＸ座標を加算し、縦軸をＹ軸として下方向にＹ座標を加算しながら、対応する座標位置に回路要素および縦接続線を配置する。この際、プログラム開発支援部１１は、回路素子の種類に応じた図形を配置し、設定された変数を当該図形に付随させて配置する。さらに、プログラム開発支援部１１は、回路要素がファンクションまたはファンクションブロックであれば、各端子に対する接続先の変数等も配置する。
【００７３】
プログラム開発支援部１１は、回路要素および縦接続線の座標に基づいて、回路要素および縦接続線を、横接続線によって接続する（Ｓ３０６）。
【００７４】
このような処理を行うことによって、ラダー図プログラムを容易且つ正確に復元できる。
【符号の説明】
【００７５】
１０：パソコン
１１：プログラム開発支援部
１２：操作入力部
１３：通信制御部
１４：表示部
２１：ラダー図編集プログラム
１１１：演算部
１１２：記憶部
１２０：ラダー図記憶部
【図１】
0006791254.tif 000002
【図２】
0006791254.tif 000003
【図３】
0006791254.tif 000004
【図４】
0006791254.tif 000005
【図５】
0006791254.tif 000006
【図６】
0006791254.tif 000007
【図７】
0006791254.tif 000008