(57)【特許請求の範囲】
【請求項１】
ユーザからの操作を受け付ける操作受付部と、
前記操作受付部が受け付けた操作に従いラダープログラムを作成するプログラム作成部と、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立すると、前回成立した回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出部と、
前記回路ブロック抽出部が抽出した回路ブロックの構成を表す構成情報を記憶する回路ブロック記憶部と、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知部と、
を備えることを特徴とする設計支援装置。
【請求項２】
ユーザからの操作を受け付ける操作受付部と、
前記操作受付部が受け付けた操作に従いラダープログラムを作成するプログラム作成部と、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立した後、成立した前記回路ブロックを変更する操作を前記操作受付部が受け付けることなく一定時間が経過すると、成立した前記回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出部と、
前記回路ブロック抽出部が抽出した回路ブロックの構成を表す構成情報を記憶する回路ブロック記憶部と、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知部と、
を備えることを特徴とする設計支援装置。
【請求項３】
ユーザからの操作を受け付ける操作受付部と、
前記操作受付部が受け付けた操作に従いラダープログラムを作成するプログラム作成部と、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立した後、成立した前記回路ブロックを前記ラダープログラムから抽出する前に、前記ラダープログラムを保存する操作を前記操作受付部が受け付けると、成立した前記回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出部と、
前記回路ブロック抽出部が抽出した回路ブロックの構成を表す構成情報を記憶する回路ブロック記憶部と、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知部と、
を備えることを特徴とする設計支援装置。
【請求項４】
前記回路ブロック記憶部は、前記回路ブロック抽出部が抽出した回路ブロックと構成が同じ回路ブロックの前記ラダープログラム内での使用回数の情報を前記構成情報と対応付けて記憶し、
前記報知部は、前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックのうち、使用回数が上位の一定数の回路ブロックを、前記候補としてユーザに報知する、
ことを特徴とする請求項１から３のいずれか一つに記載の設計支援装置。
【請求項５】
前記ラダープログラムに過去に挿入された回路ブロックと前記ラダープログラムに新たに挿入された回路ブロックとに基づいて、前記ラダープログラムへの回路ブロックの入力傾向を学習する機械学習部、
を備え、
前記報知部は、前記機械学習部による学習結果に基づいて前記候補をユーザに報知する、
ことを特徴とする請求項１から３のいずれか一つに記載の設計支援装置。
【請求項６】
前記報知部は、前記ラダープログラムに過去に挿入された回路ブロックと前記ラダープログラムに新たに挿入された回路ブロックとに基づいて学習された前記ラダープログラムへの回路ブロックの入力傾向に基づいて前記候補をユーザに報知する、
ことを特徴とする請求項１から３のいずれか一つに記載の設計支援装置。
【請求項７】
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックのうち、ユーザが指定する条件を満たす回路ブロックを検索する検索部、
を備え、
前記報知部は、前記検索部が検索を行った場合、当該検索で見つかった回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する、
ことを特徴とする請求項１から６のいずれか一つに記載の設計支援装置。
【請求項８】
前記回路ブロック抽出部が抽出した回路ブロックに含まれる各プログラム要素に割付けられた内部メモリの情報を記憶する使用メモリ情報記憶部、
を備え、
前記報知部は、ユーザに報知する回路ブロックに含まれる各プログラム要素に未使用の内部メモリを自動で割付け、割付けた内部メモリをプログラム要素と対応付けてユーザに報知する、
ことを特徴とする請求項１から７のいずれか一つに記載の設計支援装置。
【請求項９】
前記操作受付部は、前記報知部が報知する回路ブロックの１つをユーザが選択する場合、フリック操作による選択を受け付ける、
ことを特徴とする請求項１から８のいずれか一つに記載の設計支援装置。
【請求項１０】
プログラムの設計作業を支援する設計支援装置が実行する設計支援方法であって、
ユーザからの操作を受け付ける操作受付ステップと、
前記操作受付ステップで受け付けた操作に従いラダープログラムを作成するプログラム作成ステップと、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立すると、前回成立した回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出ステップと、
前記回路ブロック抽出ステップで抽出した回路ブロックの構成を表す構成情報を回路ブロック記憶部に記憶させる記憶ステップと、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知ステップと、
を含むことを特徴とする設計支援方法。
【請求項１１】
プログラムの設計作業を支援する設計支援装置が実行する設計支援方法であって、
ユーザからの操作を受け付ける操作受付ステップと、
前記操作受付ステップで受け付けた操作に従いラダープログラムを作成するプログラム作成ステップと、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立した後、成立した前記回路ブロックを変更する操作を前記操作受付ステップで受け付けることなく一定時間が経過すると、成立した前記回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出ステップと、
前記回路ブロック抽出ステップで抽出した回路ブロックの構成を表す構成情報を回路ブロック記憶部に記憶させる記憶ステップと、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知ステップと、
を含むことを特徴とする設計支援方法。
【請求項１２】
プログラムの設計作業を支援する設計支援装置が実行する設計支援方法であって、
ユーザからの操作を受け付ける操作受付ステップと、
前記操作受付ステップで受け付けた操作に従いラダープログラムを作成するプログラム作成ステップと、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立した後、成立した前記回路ブロックを前記ラダープログラムから抽出する前に、前記ラダープログラムを保存する操作を前記操作受付ステップで受け付けると、成立した前記回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出ステップと、
前記回路ブロック抽出ステップで抽出した回路ブロックの構成を表す構成情報を回路ブロック記憶部に記憶させる記憶ステップと、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知ステップと、
を含むことを特徴とする設計支援方法。
【請求項１３】
ユーザからの操作を受け付ける操作受付ステップと、
前記操作受付ステップで受け付けた操作に従いラダープログラムを作成するプログラム作成ステップと、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立すると、前回成立した回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出ステップと、
前記回路ブロック抽出ステップで抽出した回路ブロックの構成を表す構成情報を回路ブロック記憶部に記憶させる記憶ステップと、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知ステップと、
をコンピュータに実行させることを特徴とする設計支援プログラム。
【請求項１４】
ユーザからの操作を受け付ける操作受付ステップと、
前記操作受付ステップで受け付けた操作に従いラダープログラムを作成するプログラム作成ステップと、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立した後、成立した前記回路ブロックを変更する操作を前記操作受付ステップで受け付けることなく一定時間が経過すると、成立した前記回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出ステップと、
前記回路ブロック抽出ステップで抽出した回路ブロックの構成を表す構成情報を回路ブロック記憶部に記憶させる記憶ステップと、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知ステップと、
をコンピュータに実行させることを特徴とする設計支援プログラム。
【請求項１５】
ユーザからの操作を受け付ける操作受付ステップと、
前記操作受付ステップで受け付けた操作に従いラダープログラムを作成するプログラム作成ステップと、
複数のプログラム要素を含む回路の一端が前記ラダープログラムを構成する２本の母線の一方に接続され、前記回路の他端が前記２本の母線の他方に接続されたことを検出することにより回路ブロックが成立した後、成立した前記回路ブロックを前記ラダープログラムから抽出する前に、前記ラダープログラムを保存する操作を前記操作受付ステップで受け付けると、成立した前記回路ブロックを前記ラダープログラムから抽出する回路ブロック抽出ステップと、
前記回路ブロック抽出ステップで抽出した回路ブロックの構成を表す構成情報を回路ブロック記憶部に記憶させる記憶ステップと、
前記回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、前記ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知ステップと、
をコンピュータに実行させることを特徴とする設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シーケンス制御を行うプログラマブルロジックコントローラ（ＰＬＣ：Programmable  Logic  Controller）で実行されるラダープログラムの設計作業を支援する設計支援装置、設計支援方法および設計支援プログラムに関する。
【背景技術】
【０００２】
ラダープログラムはラダー言語で記述されたプログラムである。ラダー言語を用いたプログラミングでは、２本の母線の間に接点およびコイルといった制御信号を伝搬するプログラム要素を配置し、各プログラム要素の接続関係を指定することによりプログラムを作成する。なお、制御信号はＰＬＣの内部メモリに割り付けられるが、この内部メモリは「デバイス」と呼ばれる。【０００３】
ここで、ラダープログラムは、複数のプログラム要素で構成される小さな回路を複数組み合わせたものといえる。また、通常、ラダープログラムを構成する小さな回路の中には、回路構成が同じもの、すなわち、回路を構成するプログラム要素同士の接続関係が同一のものが複数存在する。換言すれば、ラダープログラムの設計作業では、同じ構成の小さな回路を複数回にわたって入力する作業が発生する。そのため、同じ構成の小さな回路の入力を効率的に行えるようにする技術が特許文献１で提案されている。【０００４】
特許文献１に記載の発明では、入力済みの複数のプログラム要素をコピーして貼り付ける作業が発生した場合、貼り付ける対象とされた複数のプログラム要素を履歴情報として保管しておく。そして、特許文献１に記載の発明では、保管しておいた複数のプログラム要素を呼び出し、必要に応じて編集を行った後にプログラム部品として登録する。登録されたプログラム部品は、その後のラダープログラムの編集作業において使用することが可能となる。すなわち、ラダープログラムの編集を行うユーザは、登録済みのプログラム部品をラダープログラムに貼り付けることで、プログラム部品を構成している複数のプログラム要素を一度に入力することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１１３２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の発明では、接続関係が同じプログラム要素群（履歴情報として保管している複数のプログラム要素）の入力を繰り返し行うためには、事前に、保管している複数のプログラム要素をプログラム部品化して登録する作業を行う必要があり、手間がかかるという問題があった。【０００７】
本発明は、上記に鑑みてなされたものであって、ラダープログラムを設計する作業者の負担を軽減することが可能な設計支援装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明にかかる設計支援装置は、ユーザからの操作を受け付ける操作受付部と、操作受付部が受け付けた操作に従いラダープログラムを作成するプログラム作成部とを備える。また、設計支援装置は、複数のプログラム要素を含む回路の一端がラダープログラムを構成する２本の母線の一方に接続され、回路の他端が２本の母線の他方に接続されたことを検出することにより回路ブロックが成立すると、前回成立した回路ブロックをラダープログラムから抽出する回路ブロック抽出部と、回路ブロック抽出部が抽出した回路ブロックの構成を表す構成情報を記憶する回路ブロック記憶部とを備える。また、設計支援装置は、回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知部を備える。
【発明の効果】
【０００９】
本発明にかかる設計支援装置は、ラダープログラムを設計する作業者の負担を軽減することができる、という効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかる設計支援装置の構成例を示す図
【図２】実施の形態１にかかる設計支援装置が作成するラダープログラムの一例を示す図
【図３】実施の形態１にかかる設計支援装置を実現するハードウェアの構成例を示す図
【図４】実施の形態１にかかる設計支援装置の回路ブロック抽出部の動作の一例を示すフローチャート
【図５】回路ブロック抽出部の動作を説明するための第１の図
【図６】回路ブロック抽出部の動作を説明するための第２の図
【図７】回路ブロック抽出部が抽出する回路ブロックの一例を示す図
【図８】実施の形態１にかかる設計支援装置が保持する回路ブロック情報の一例を示す図
【図９】実施の形態１にかかる設計支援装置が保持する使用デバイステーブルの一例を示す図
【図１０】実施の形態１にかかる設計支援装置が回路ブロックの入力を受け付ける動作の一例を示すフローチャート
【図１１】ラダープログラムの作成画面の第１の例を示す図
【図１２】ラダープログラムの作成画面の第２の例を示す図
【図１３】ラダープログラムの作成画面の第３の例を示す図
【図１４】ラダープログラムの作成画面の第４の例を示す図
【図１５】実施の形態１にかかる設計支援装置が条件を満たす回路ブロックを検索する動作の一例を示すフローチャート
【図１６】回路ブロックの検索動作を説明するための第１の図
【図１７】回路ブロックの検索動作を説明するための第２の図
【図１８】実施の形態２にかかる設計支援装置に回路ブロックを入力する操作の一例を示す図
【図１９】実施の形態３にかかる設計支援装置の構成例を示す図
【図２０】実施の形態３にかかる設計支援装置が備える機械学習部の構成例を示す図
【図２１】実施の形態３にかかる設計支援装置が回路ブロックを抽出して回路ブロックの入力傾向を学習する動作の一例を示すフローチャート
【図２２】実施の形態３にかかる設計支援装置が回路ブロックの入力を受け付ける動作の一例を示すフローチャート
【発明を実施するための形態】
【００１１】
以下に、本発明の実施の形態にかかる設計支援装置、設計支援方法および設計支援プログラムを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１は、実施の形態１にかかる設計支援装置の構成例を示す図である。図１に示したように、実施の形態１にかかる設計支援装置１は、操作受付部１０、制御部２０、記憶部３０および表示部４０を備える。
【００１３】
操作受付部１０は、設計支援装置１を使用してラダープログラムを設計する作業者であるユーザからの操作を受け付ける。
【００１４】
制御部２０は、プログラム作成部２１、回路ブロック抽出部２２、報知部２３および検索部２４を備える。
【００１５】
プログラム作成部２１は、操作受付部１０がユーザから受け付けた操作の内容に従いラダープログラムを作成する。プログラム作成部２１は、例えば、図２に示したようなラダープログラムを作成する。図２は、実施の形態１にかかる設計支援装置１が作成するラダープログラムの一例を示す図である。図２に示したラダープログラムは、左母線６１および右母線６２に挟まれた接点６３、接点６４およびコイル６５で構成される。プログラム要素である接点６３、接点６４およびコイル６５には、ＰＬＣの内部メモリであるデバイス（Ｘ０，Ｘ１，Ｙ０）が割付けられている。プログラム作成部２１は、各プログラム要素へのデバイスの割付けを自動で行うものとする。
【００１６】
以下、接点６３、接点６４およびコイル６５で構成される回路を回路ブロック６０とする。本明細書においては、複数のプログラム要素を含んで構成され、ラダープログラムを構成する２本の母線（左母線６１および右母線６２）の双方に接続された回路、より詳細には、複数のプログラム要素を含んで構成された回路であり、左母線６１と右母線６２との間に形成される複数の電流経路の中の１つを形成する回路、を回路ブロックと称する。
【００１７】
回路ブロック抽出部２２は、プログラム作成部２１が作成するラダープログラムから回路ブロックを抽出し、抽出した回路ブロックを表す情報である回路ブロック情報を生成する。回路ブロック情報は、後述する記憶部３０の回路ブロック記憶部３２で保持される。また、回路ブロック抽出部２２は、抽出した回路ブロックに含まれる複数のプログラム要素のそれぞれで使用されているデバイスの情報を生成する。デバイスの情報は、後述する記憶部３０の使用デバイス記憶部３３で保持される。
【００１８】
報知部２３は、操作受付部１０が回路ブロックの入力開始操作を受け付けた場合に、入力可能な回路ブロック、すなわち、記憶部３０の回路ブロック記憶部３２が保持している回路ブロックをユーザに報知する。報知部２３は、回路ブロック記憶部３２が保持している回路ブロックを表示部４０に表示させることによりユーザへの報知を行う。報知部２３は、回路ブロックをユーザに報知する際、回路ブロックを構成する各プログラム要素に割付けるデバイスも表示部４０に表示させる。
【００１９】
検索部２４は、操作受付部１０が回路ブロックの検索操作を受け付けた場合に、検索操作により指定された条件を満たす回路ブロックを回路ブロック記憶部３２が保持している情報が表す回路ブロックの中から検索する。
【００２０】
記憶部３０は、プログラム記憶部３１、回路ブロック記憶部３２および使用デバイス記憶部３３を備える。
【００２１】
プログラム記憶部３１は、プログラム作成部２１が作成するラダープログラムを記憶する。
【００２２】
回路ブロック記憶部３２は、回路ブロック抽出部２２がラダープログラムから抽出した回路ブロックを表す情報を記憶する。
【００２３】
使用デバイス記憶部３３は、回路ブロック抽出部２２が抽出した回路ブロックに含まれる複数のプログラム要素のそれぞれで使用されているデバイス、すなわち、複数のプログラム要素のそれぞれに割付けられている内部メモリであるデバイスの情報を記憶する。使用デバイス記憶部３３は使用メモリ情報記憶部である。
【００２４】
表示部４０は、設計支援装置１を使用するユーザに向けて、各種画面を表示する。
【００２５】
ここで、実施の形態１にかかる設計支援装置１を実現するハードウェアについて説明する。図３は、実施の形態１にかかる設計支援装置１を実現するハードウェアの構成例を示す図である。設計支援装置１は、プロセッサ１０１、記憶装置１０２、入力装置１０３および表示装置１０４により実現される。図３に示したハードウェアは、例えばパーソナルコンピュータである。図３に示したハードウェアがパーソナルコンピュータである場合、設計支援装置１は、設計支援装置１の制御部２０として動作するためのプログラムをパーソナルコンピュータの記憶装置すなわち図３に示した記憶装置１０２にインストールし、インストールされたプログラムをプロセッサ１０１が実行することにより実現される。すなわち、図１に示したプログラム作成部２１、回路ブロック抽出部２２、報知部２３および検索部２４は、記憶装置１０２にインストールされた、設計支援装置１の制御部２０として動作するためのプログラムをプロセッサ１０１が実行することにより実現される。
【００２６】
プロセッサ１０１は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Digital  Signal  Processor）ともいう）等である。記憶装置１０２は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリー、等の、不揮発性または揮発性の半導体メモリ、磁気ディスク等である。記憶装置１０２は、プロセッサ１０１が設計支援装置１として動作するためのプログラムおよびその他の各種データを保持する。記憶装置１０２は、プロセッサ１０１が各種処理を実行する際のワーク用メモリとしても使用される。また、記憶装置１０２は、図１に示す記憶部３０、すなわち、プログラム記憶部３１、回路ブロック記憶部３２および使用デバイス記憶部３３を構成する。
【００２７】
入力装置１０３は、マウス、キーボード、タッチパネルなどであり、図１に示す操作受付部１０を構成する。表示装置１０４は、液晶モニタ、ディスプレイなどであり、図１に示した表示部４０を構成する。
【００２８】
なお、設計支援装置１の制御部２０として動作するための上記のプログラムは、例えば、ＣＤ（Compact  Disc）−ＲＯＭ、ＤＶＤ（Digital  Versatile  Disc）−ＲＯＭなどの記録媒体に書き込まれた状態でユーザに供給され、ユーザが記憶装置１０２にインストールする。この場合、設計支援装置１を実現するハードウェアは、記録媒体からプログラムを読み出すための読み取り装置、または、読み取り装置を接続するためのインタフェース回路を含む構成となる。また、上記のプログラムは、インターネットなどの通信回線を介してユーザに提供され、記憶装置１０２にインストールされる形態であってもよい。
【００２９】
つづいて、設計支援装置１の動作、具体的には、ユーザがラダープログラムを設計する作業を支援する動作について説明する。
【００３０】
まず、ユーザがラダープログラムを設計する際の作業を設計支援装置１が支援する動作の概要について説明する。設計支援装置１のプログラム作成部２１は、操作受付部１０がラダープログラムの作成操作をユーザより受け付けると、受け付けた操作内容に従いラダープログラムを作成する。ここでの作成とは、設計途中のラダープログラムの内容を、操作受付部１０が受け付けた操作内容に従いプログラム作成部２１が更新することを意味する。回路ブロック抽出部２２は、プログラム作成部２１によって作成されるラダーブログラムの状態を監視する。そして、回路ブロック抽出部２２は、プログラム作成部２１によって作成（更新）されるラダープログラムにおいて、抽出済みではない回路ブロックを発見すると、発見した回路ブロックを抽出し、抽出した回路ブロックを表す情報を記憶部３０の回路ブロック記憶部３２に格納する。報知部２３は、操作受付部１０がユーザより受け付けた操作が、プログラム作成部２１が作成しているラダープログラムへの回路ブロックの挿入操作である場合、回路ブロック記憶部３２が保持している情報で表される回路ブロックのうち、使用頻度が高いものをラダープログラムへ挿入する回路ブロックの候補として表示部４０へ表示させる。表示部４０に表示されている候補の中の１つを選択する操作を操作受付部１０がユーザより受け付けた場合、プログラム作成部２１は、ユーザにより選択された回路ブロックをラダープログラムに挿入する。
【００３１】
次に、回路ブロック抽出部２２の動作を説明する。図４は、実施の形態１にかかる設計支援装置１の回路ブロック抽出部２２の動作の一例を示すフローチャートである。
【００３２】
回路ブロック抽出部２２は、プログラム作成部２１によって作成されるラダープログラムの状態を予め定められたタイミングで確認し、回路ブロックの構成が確定したか否かを判定する（ステップＳ１１）。回路ブロック抽出部２２は、例えば、操作受付部１０がユーザからの操作を受け付けた場合にラダープログラムの状態を確認する。回路ブロック抽出部２２は、予め定められた周期でラダープログラムの状態を繰り返し確認してもよい。
【００３３】
回路ブロック抽出部２２が、回路ブロックの構成が確定したか否かを判定する方法の一例を図５および図６を用いて説明する。ユーザからの操作に従いプログラム作成部２１がラダープログラムを作成し、図５に示した回路ブロック７３が入力された状態とする。その後、さらにユーザからの操作に従いプログラム作成部２１がラダープログラムの作成を進め、接点７４およびコイル７５が入力され、これらが２本の母線７１および７２の双方に接続された状態となり回路ブロック７６が成立したとする。この場合、回路ブロック抽出部２２は、回路ブロック７６が成立するよりも１つ前に入力された回路ブロック７３の構成が確定したと判断する。すなわち、回路ブロック抽出部２２は、図４に示したステップＳ１１において、回路ブロックが新たに成立したか否かを判定する。なお、回路ブロックが新たに成立した場合に、その１つ前に入力された回路ブロックの構成が確定したと回路ブロック抽出部２２が判定する例を示したが、判定方法はこれに限定されない。回路ブロック抽出部２２は、回路ブロックが新たに成立した後、この回路ブロックの構成を変更する操作、例えば、プログラム要素を追加する操作およびプログラム要素を削除する操作といった操作が行われることなく一定時間が経過した時点で、新たに成立した回路ブロックの構成が確定したと判断してもよい。この場合、回路ブロック抽出部２２は、図４に示したステップＳ１１において、新たに成立した回路ブロックの構成を変更する操作が最後に行われてから一定時間が経過したか否かを判定する。また、回路ブロック抽出部２２は、作成中のラダープログラムを保存する操作が行われた場合、最後に成立した回路ブロックの構成が確定したと判断する。
【００３４】
回路ブロック抽出部２２は、回路ブロックの構成が確定していない場合、すなわち、新たな回路ブロックが成立していない場合（ステップＳ１１：Ｎｏ）、ステップＳ１１を継続する。
【００３５】
回路ブロック抽出部２２は、回路ブロックの構成が確定した場合（ステップＳ１１：Ｙｅｓ）、構成が確定した回路ブロックを抽出する（ステップＳ１２）。回路ブロック抽出部２２は、次に、抽出した回路ブロックと同じ構成の回路ブロックを抽出済みか否か、すなわち、抽出した回路ブロックと同じ構成の回路ブロックを過去に抽出したことがあるか否かを判定する（ステップＳ１３）。回路ブロック抽出部２２は、回路ブロック記憶部３２が記憶している構成情報を確認することにより、構成が確定した回路ブロックと同じ構成の回路ブロックを抽出済みか否かの判定を行う。回路ブロック記憶部３２が記憶している構成情報とは、回路ブロックの構成を示す情報である。
【００３６】
回路ブロック抽出部２２は、抽出した回路ブロックと同じ構成の回路ブロックを抽出済みではない場合（ステップＳ１３：Ｎｏ）、抽出した回路ブロックの構成を示す構成情報を生成する（ステップＳ１４）。回路ブロック抽出部２２は、さらに、抽出した回路ブロックの抽出回数を１に設定し、ステップＳ１４で生成した構成情報と対応付けて回路ブロック記憶部３２に格納する（ステップＳ１５）。抽出回数は、回路ブロック抽出部２２が抽出した回路ブロックと構成が同じ回路ブロックのラダープログラム内での使用回数を示す。
【００３７】
回路ブロック抽出部２２は、例えば、ステップＳ１２において図７に示した構成の回路ブロック８１を抽出した場合、ステップＳ１４およびＳ１５において、図８に示した回路ブロック情報８３を回路ブロック記憶部３２に格納する。回路ブロック情報８３は、構成情報８３Ａと、抽出回数８３Ｂとを含んで構成される。ここで、構成情報８３Ａは、図７に示したように、回路ブロック８１の左上を原点とし、横方向をＸ軸、縦方向をＹ軸とした座標を定義し、ＸＹ座標平面上のどの位置にどのプログラム要素が存在するかを示す。図８では、説明の便宜上、各座標に配置されたプログラム要素の種類および接続関係をシンボルで表す例を示したが、プログラム要素の種類を数値などで表すようにしてもよい。
【００３８】
回路ブロック抽出部２２は、抽出した回路ブロックと同じ構成の回路ブロックを抽出済みの場合（ステップＳ１３：Ｙｅｓ）、同じ構成の回路ブロックの抽出回数をインクリメントする（ステップＳ１６）。ステップＳ１６で回路ブロック抽出部２２が実行する動作の具体例を示す。回路ブロック抽出部２２が、図７に示した回路ブロック８１をステップＳ１２で抽出し、図８に示した回路ブロック情報８３が回路ブロック記憶部３２に格納されているとする。この場合、回路ブロック抽出部２２は、ステップＳ１６において、回路ブロック情報８３の抽出回数８３Ｂをインクリメントする。
【００３９】
回路ブロック抽出部２２は、ステップＳ１５またはＳ１６を実行後、抽出した回路ブロックで使用されているデバイスの情報、すなわち、抽出した回路ブロックに含まれるプログラム要素のそれぞれに割り当てられているデバイスの情報を、使用デバイス記憶部３３に格納する（ステップＳ１７）。回路ブロック抽出部２２は、ステップＳ１７において、例えば、図９に示した使用デバイステーブル８５を生成して使用デバイス記憶部３３に格納する。図９において、Ｘ１，Ｘ２，Ｘ３，…，Ｙ１，Ｙ２，Ｙ３，…がデバイスを表す。デバイスの右側の‘１’または‘０’が各デバイスに対応付けられているフラグであり、デバイスの使用状態を示す。図９に示した例では、フラグ‘１’の場合はデバイスが既に使用されていることを示し、フラグ‘０’の場合はデバイスが未使用であることを示す。図９に示した使用デバイステーブル８５の内容は、回路ブロック抽出部２２が図２に示した回路ブロック６０を抽出した場合に対応している。そのため、使用デバイステーブル８５では、接点６３に割付けられているデバイスＸ０、接点６４に割付けられているデバイスＸ１、および、コイル６５に割付けられているデバイスＹ０のそれぞれに対応付けられているフラグが、使用中を示す‘１’に設定されている。なお、回路ブロック抽出部２２は、図９に示した使用デバイステーブル８５を生成した後、構成が確定した回路ブロックをさらに抽出すると、ステップＳ１７において、作成済みの使用デバイステーブル８５を更新する。すなわち、回路ブロック抽出部２２は、抽出した回路ブロックで使用されている各デバイスに対応付けられている各フラグを‘１’に設定する。
【００４０】
以上のように、回路ブロック抽出部２２は、２本の母線の双方に新たな回路ブロックが接続されたことを検出すると、１つ前に２本の母線の双方に接続された回路ブロックの構成が確定したと判断し、構成が確定した回路ブロックの構成および抽出回数を示す回路ブロック情報を生成して回路ブロック記憶部３２に格納する。また、回路ブロック抽出部２２は、構成が確定した回路ブロックで使用されているデバイスの情報として、使用デバイステーブルを生成して使用デバイス記憶部３３に格納する。
【００４１】
次に、設計支援装置１が回路ブロックの入力をユーザから受け付ける場合の動作を説明する。図１０は、実施の形態１にかかる設計支援装置１が回路ブロックの入力を受け付ける動作の一例を示すフローチャートである。
【００４２】
設計支援装置１は、ラダープログラムを作成しているユーザから、プログラム要素の複数入力の開始操作（回路ブロックの入力開始操作）を受け付けると（ステップＳ２１）、使用回数が多い回路ブロックを入力候補として表示部４０に表示する（ステップＳ２２）。
【００４３】
ステップＳ２１において、設計支援装置１は、例えば、図１１および図１２に示したように、ラダープログラムの作成画面９１を表示部４０に表示している状態で、プログラム要素を入力する位置の指定操作を操作受付部１０が受け付ける。すると、設計支援装置１は、単一のプログラム要素の入力なのか複数のプログラム要素の入力なのかを選択させるメニュー９２を表示部４０に表示する。メニュー９２において、「単一要素入力」は単一のプログラム要素の入力に対応し、「複数要素入力」は複数のプログラム要素（回路ブロック）の入力に対応する。設計支援装置１は、「複数要素入力」を選択する操作を受け付けると、ステップＳ２２を実行し、図１３に示したように、回路ブロックの選択操作を受け付けるための画面９３を表示部４０に表示する。このステップＳ２２では、報知部２３が、回路ブロック記憶部３２で記憶されている各回路ブロック情報が示す回路ブロックのうち、使用回数が上位の回路ブロックを画面９３に表示する。図１３に示した例では使用回数が上位の４つの回路ブロックを画面９３に表示するようにしている。なお、使用回数が同じ回路ブロックが複数存在する場合、例えば、最後に使用されてからの経過時間が短い回路ブロックを上位とする。また、報知部２３は、画面９３を表示部４０に表示させる際、入力候補の各回路ブロックを構成する各プログラム要素に未使用のデバイスを割り当て、割り当てたデバイスをプログラム要素と一緒に表示させる。このとき、報知部２３は、使用デバイス記憶部３３で記憶されている使用デバイステーブルを確認し、未使用のデバイスを昇順でプログラム要素に割り当てる。なお、図１３は、デバイスＸ０、Ｘ１およびＹ０が使用されている場合の表示例である。図１３に示した例では使用回数が上位４つの回路ブロックを表示することとしたが、設計支援装置１は５つ以上の回路ブロックを表示するようにしてもよい。また、設計支援装置１は、画面９３の表示をスクロールさせる操作をユーザから受け付けるようにして、この操作を受け付けた場合、使用回数が上位４つの回路ブロック以外の回路ブロックを画面９３に表示するようにしてもよい。
【００４４】
図１０の説明に戻り、設計支援装置１は、ステップＳ２２を実行後、入力候補の回路ブロックの中から１つの回路ブロックを選択する操作をユーザより受け付け（ステップＳ２３）、選択された回路ブロックをラダープログラムに挿入する（ステップＳ２４）。例えば、図１３の画面９３の右上に表示されている回路ブロックが選択された場合、設計支援装置１のプログラム作成部２１は、選択された回路ブロックを、上記のステップＳ２１で指定された位置に挿入する。この結果、ラダープログラムの作成画面９１は、図１４に示した内容に更新される。
【００４５】
設計支援装置１は、図１０に示すフローチャートに従った動作と並行して、図４に示すフローチャートに従った動作も行っている。設計支援装置１では、上記のステップＳ２４で回路ブロックの挿入が行われると、これに伴い、回路ブロック抽出部２２が回路ブロックの構成が確定したと判定し、図４に示すステップＳ１２およびこれに続く各ステップを実行して、構成が確定した回路ブロックの使用回数を更新する。なお、上記のステップＳ２４で回路ブロックの挿入が行われた場合、回路ブロック抽出部２２は、挿入された回路ブロックの１つ前に成立した回路ブロックの構成が確定したと判断し、使用回数を更新する。
【００４６】
また、設計支援装置１は、ステップＳ２２を実行して図１３に示した画面９３を表示部４０に表示している状態において、回路ブロック記憶部３２で記憶されている各回路ブロック情報が示す回路ブロックの中からユーザにより指定された条件を満たす回路ブロックを検索することが可能である。
【００４７】
次に、回路ブロック記憶部３２で記憶されている各回路ブロック情報が示す回路ブロックである、過去に使用された回路ブロックの中からユーザに指定された条件を満たす回路ブロックを設計支援装置１が検索する動作を説明する。ユーザに指定された条件を満たす回路ブロックの検索は検索部２４が行う。
【００４８】
図１５は、実施の形態１にかかる設計支援装置１が条件を満たす回路ブロックを検索する動作の一例を示すフローチャートである。
【００４９】
設計支援装置１は、上述した図１０のステップＳ２２を実行し、図１６に示した内容の画面９３を表示部４０に表示しているものとする。このとき、設計支援装置１は、画面９３の左下に検索条件入力領域９４を表示させ、接点のＡＮＤおよびＯＲの個数の入力をユーザから受け付ける（ステップＳ３１）。その後、検索ボタン９５が押下されたことを検出すると（ステップＳ３２）、検索部２４が、接点のＡＮＤおよびＯＲの個数が条件を満たす回路ブロック、すなわち、接点のＡＮＤおよびＯＲの個数がステップＳ３１で入力を受け付けた個数と一致する回路ブロックを検索する（ステップＳ３３）。具体的には、検索部２４は、回路ブロック記憶部３２が記憶している回路ブロック情報で示される回路ブロックの中から、接点のＡＮＤおよびＯＲの個数が条件を満たす回路ブロックを検索する。検索部２４は、検索が終了すると、検索結果を報知部２３に通知する。報知部２３は、検索部２４による検索結果に従い、回路ブロックの入力候補の表示を更新する（ステップＳ３４）。具体的には、報知部２３は、検索部２４による検索で見つかった回路ブロック、すなわち、上記のステップＳ３１で入力された条件を満たす回路ブロックのうち、使用回数が上位の回路ブロックを画面９３に表示する。例えば、上記のステップＳ３１で「接点のＡＮＤの個数が１、かつ接点のＯＲの数が１」という条件の入力を受け付けた場合、報知部２３は、画面９３を図１７に示した内容に更新する。
【００５０】
その後、設計支援装置１は、画面９３に表示した入力候補の回路ブロックが選択されるか、回路ブロックの検索条件（接点のＡＮＤおよびＯＲの個数）が入力されるのを待つ。設計支援装置１は、入力候補の回路ブロックの中の１つを選択する操作をユーザから受け付けた場合、上述したように、選択された回路ブロックをラダープログラムに挿入する（図１０のステップＳ２３およびＳ２４の処理を行う）。また、設計支援装置１は、回路ブロックの検索条件が入力され、検索ボタンが押下された場合、過去に使用された回路ブロックの中から検索条件を満たす回路ブロックを検索して画面９３の表示を更新する（図１５に示したステップＳ３１〜Ｓ３４の処理を行う）。
【００５１】
以上のように、本実施の形態にかかる設計支援装置１は、ラダープログラムの２本の母線に接続される回路ブロックの構成が確定すると、構成が確定した回路ブロックをラダープログラムから抽出し、抽出した回路ブロックの構成および抽出した回路ブロックと構成が同じ回路ブロックの抽出回数を示す回路ブロック情報を生成して保持する。また、設計支援装置１は、プログラム要素の複数入力の開始操作を受け付けた場合、回路ブロック情報で示される回路ブロックのうち、使用回数が上位の回路ブロックを入力候補としてユーザに報知する。設計支援装置１は、報知した回路ブロックの中の１つが選択されると、選択された回路ブロックをラダープログラムに挿入する。本実施の形態にかかる設計支援装置１によれば、複数のプログラム要素を一度に入力する場合に、一度に入力したい複数のプログラム要素を予め部品化しておく必要が無いため、ラダープログラムを設計する作業者の負担を軽減することができる。
【００５２】
実施の形態２．
つづいて、実施の形態２にかかる設計支援装置について説明する。実施の形態２にかかる設計支援装置の機能ブロック構成は実施の形態１にかかる設計支援装置１と同様である（図１参照）。本実施の形態では、実施の形態１にかかる設計支援装置１と異なる部分を説明する。
【００５３】
実施の形態２にかかる設計支援装置は、ラダープログラムの作成画面９１を表示部４０に表示している状態で、ラダープログラムの作成画面９１が触れられたことを検出すると、図１８に示したような、回路ブロックをフリック入力するための表示を行う。このとき、実施の形態１と同様に、使用回数が上位の回路ブロックを入力候補として表示する。なお、操作受付部１０がフリック入力を受け付け、報知部２３が、回路ブロックをフリック入力するための表示を表示部４０に表示させる。
【００５４】
実施の形態２にかかる設計支援装置は、回路ブロックの入力候補の表示方法と、回路ブロックの選択方法とをフリック入力に対応させた点を除いて、実施の形態１にかかる設計支援装置１と同様である。実施の形態２にかかる設計支援装置は、回路ブロックの挿入位置を、例えば、ラダープログラムの作成画面９１をユーザが最初に触れた位置とする。または、実施の形態２にかかる設計支援装置は、入力する回路ブロックが選択された後に、回路ブロックの挿入位置の指定を受け付けるようにしてもよい。また、実施の形態２にかかる設計支援装置は、ラダープログラムの作成画面９１が触れられたことを検出した場合、単一のプログラム要素の入力を行うのか回路ブロックの入力を行うのかを選択させるようにして、回路ブロックの入力が選択された場合に図１８に示したような表示を行うようにしてもよい。
【００５５】
なお、本実施の形態にかかる設計支援装置は、フリック操作による回路ブロックの入力受付に加えて、実施の形態１と同様の入力操作の受け付けを可能とする。
【００５６】
このように、実施の形態２にかかる設計支援装置は、タッチパネルを利用した入力操作を受け付け可能に構成され、フリック操作により回路ブロックの入力を受け付けることとした。フリック操作による入力を行うことで、ユーザは直感的な操作を行うことができる。また、ユーザは、単一のプログラム要素を入力する場合のように細かな指の動作を何度も行うことなく回路ブロック（複数のプログラム要素）を入力することができる。
【００５７】
実施の形態３．
つづいて、実施の形態３にかかる設計支援装置について説明する。上述したように、実施の形態１にかかる設計支援装置１は、回路ブロックの入力開始操作を受け付けると、過去に入力した回数（使用回数）が上位の一定数の回路ブロックを、入力する回路ブロックの候補として表示部４０に表示していた。しかしながら、使用回数が上位の回路ブロックの中にユーザが入力しようとしている回路ブロックが含まれているとは限らない。また、ラダープログラムでは、ある回路ブロックに続いて記述される回路ブロックには一定の条件が存在し、使用回数が上位の回路ブロックが一定の条件を満たさない可能性がある。この場合は一定の条件を満たす回路ブロックを入力候補として表示することが望ましいが、使用回数で入力候補を決定する場合はそれが難しい。そのため、本実施の形態にかかる設計支援装置では、機械学習により回路ブロックの入力傾向を学習し、学習結果に基づいて回路ブロックの入力候補を決定する。
【００５８】
図１９は、実施の形態３にかかる設計支援装置の構成例を示す図である。実施の形態３にかかる設計支援装置１ａは、操作受付部１０、制御部２０ａ、記憶部３０および表示部４０を備える。設計支援装置１ａの操作受付部１０、記憶部３０および表示部４０は、実施の形態１にかかる設計支援装置１の操作受付部１０、記憶部３０および表示部４０と同一であるため、説明を省略する。設計支援装置１ａの制御部２０ａは、実施の形態１にかかる設計支援装置１の制御部２０に機械学習部２５を追加し、回路ブロック抽出部２２を回路ブロック抽出部２２ａに置き換えた構成である。
【００５９】
図１９では、設計支援装置１ａの構成要素のうち、実施の形態１にかかる設計支援装置１の構成要素と同一の構成要素に同じ符号を付している。実施の形態１にかかる設計支援装置１の構成要素と同一の構成要素については説明を省略する。
【００６０】
回路ブロック抽出部２２ａは、実施の形態１にかかる設計支援装置１の回路ブロック抽出部２２と同様に、プログラム作成部２１によって作成されるラダープログラムの状態を予め定められたタイミングで確認して回路ブロックの構成が確定したか否かを判定し、構成が確定した場合は回路ブロックを抽出する。また、回路ブロック抽出部２２ａは、抽出した回路ブロックの構成情報が回路ブロック記憶部３２で保持されていない場合は構成情報を生成して回路ブロック記憶部３２に格納する。ただし、回路ブロック抽出部２２ａは、回路ブロック抽出部２２とは異なり、回路ブロックの抽出回数を構成情報と対応付けて回路ブロック記憶部３２に格納することはしない。よって、実施の形態３にかかる設計支援装置１ａの回路ブロック記憶部３２は、回路ブロック抽出部２２ａが抽出した回路ブロックの構成情報のみを保持する。
【００６１】
図２０は、実施の形態３にかかる設計支援装置１ａが備える機械学習部２５の構成例を示す図である。機械学習部２５は、状態観測部５１、データ取得部５２および学習部５３を備える。
【００６２】
状態観測部５１は、ラダープログラムに回路ブロックが挿入されると、前回挿入された回路ブロックを状態変数として観測する。ここでの回路ブロックの挿入には、複数のプログラム要素を個別に入力して回路ブロックを成立させることで行う回路ブロックの挿入と、実施の形態１で図１０〜図１４を用いて説明した、回路ブロックの候補の中の１つを選択して行う回路ブロックの挿入との両方が該当する。なお、以下の説明では、「ラダープログラムへの回路ブロックの挿入」を「回路ブロックの入力」と表現する。
【００６３】
データ取得部５２は、ラダープログラムに回路ブロックが入力されると、入力された回路ブロックに関するデータを取得する。回路ブロックに関するデータは、入力された回路ブロックを一意に示す情報であればよく、例えば、回路ブロックの構成情報、回路ブロックの管理番号などが該当する。
【００６４】
学習部５３は、状態観測部５１が観測した状態変数と、データ取得部５２が取得した回路ブロックに関するデータとを組み合わせて作成されるデータセットに基づいて、回路ブロックの入力傾向を学習する。ここで、データセットは、状態変数と回路ブロックに関するデータとを互いに関連付けたデータである。
【００６５】
なお、本実施の形態では、設計支援装置１ａの制御部２０ａが機械学習部２５を備える場合の例について説明するが、この構成に限定されない。機械学習部２５は、制御部２０ａとは独立した機能部としてもよいし、設計支援装置１ａとは別個の装置で実現されてもよい。また、機械学習部２５は、クラウドサーバ上に存在する装置で実現されてもよい。機械学習部２５が設計支援装置１ａの外部の装置で実現される場合、設計支援装置１ａは、上記の状態観測部５１が観測するデータおよびデータ取得部５２が取得するデータを、機械学習部２５を実現する装置に対して送信する。また、設計支援装置１ａは、機械学習部２５を実現する装置での学習結果を取得する。
【００６６】
学習部５３は、例えば、ニューラルネットワークモデルに従って、いわゆる教師あり学習により、回路ブロックの入力傾向を学習する。ここで、教師あり学習とは、ある入力と結果（ラベル）のデータの組であるデータセットを大量に学習装置に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデルをいう。
【００６７】
ニューラルネットワークは、複数のニューロンからなる入力層と、複数のニューロンからなる中間層（隠れ層）と、複数のニューロンからなる出力層とで構成される。中間層は、１層または２層以上でもよい。
【００６８】
ニューラルネットワークでは、データが入力層の対応するニューロンに入力されると、各ニューロンは、入力データに予め定められた重みを掛けて中間層の各ニューロンに入力する。中間層の各ニューロンも同様に、入力データに予め定められた重みを掛けて出力層の各ニューロンに入力する。出力層の各ニューロンは、中間層から受け取ったデータを出力する。この出力結果は、入力層および中間層の各ニューロンが入力データに掛ける重みの値によって変わる。すなわち、ニューラルネットワークは、出力結果と教師データとの差が小さくなるよう、各ニューロンでデータに掛ける重みを調整することで学習を行う。
【００６９】
本実施の形態にかかる学習部５３を構成するニューラルネットワークは、状態観測部５１によって観測される前回入力された回路ブロックと、データ取得部５２によって取得される今回入力された回路ブロックとの組合せに基づいて、教師あり学習により、回路ブロックの入力傾向を学習する。今回入力された回路ブロックが教師データとなる。なお、状態観測部５１による観測対象を前回入力された回路ブロックとしたが、前回から一定回数前までに入力された回路ブロック、例えば、前回入力された回路ブロック〜３回前に入力された回路ブロック、つまり、過去３回の入力回路ブロックを観測対象としてもよい。複数の入力回路ブロックを観測することにより、回路ブロックの入力傾向をより正確に学習することが可能となる。
【００７０】
学習部５３を構成するニューラルネットワークの学習では、具体的には、状態変数が入力されると、ユーザが次に入力する回路ブロックの候補を出力する。回路ブロックの候補数は、例えば実施の形態１と同様に４とする。また、選択される可能性が高いと予想される回路ブロックから順番に並べて出力する。次に、出力した回路ブロックの候補と、データ取得部５２が取得した回路ブロック（今回入力された回路ブロック）とを比較し、比較結果に基づいて、ニューラルネットワークの入力層および中間層の各ニューロンで使用する重み（各ニューロンで入力データに掛ける重み）を調整する。重みの調整では、回路ブロックの候補の中の最上位の回路ブロック、すなわち、選択される可能性が最も高いと予想される回路ブロックと、今回入力された回路ブロック（教師データ）とが一致するよう、各ニューロンで使用する重みを調整する。
【００７１】
学習部５３は、複数の設計支援装置１ａに対して作成されるデータセットに従って、回路ブロックの入力傾向を学習するようにしてもよい。なお、学習部５３は、複数の設計支援装置１ａからデータセットを取得してもよい。さらに、データセットを収集する設計支援装置１ａを途中で対象に追加し、或いは、逆に対象から除去することも可能である。また、ある設計支援装置１ａに関して回路ブロックの入力傾向を学習した学習部５３である機械学習装置を、これとは別の設計支援装置１ａに取り付け、当該別の設計支援装置１ａに関して回路ブロックの入力傾向を再学習して更新するようにしてもよい。
【００７２】
また、学習部５３に用いられる学習アルゴリズムとしては、特徴量そのものの抽出を学習する、深層学習（Deep  Learning）を用いることもでき、他の公知の方法、例えば遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
【００７３】
つづいて、設計支援装置１ａの動作について説明する。図２１は、実施の形態３にかかる設計支援装置１ａが回路ブロックを抽出して回路ブロックの入力傾向を学習する動作の一例を示すフローチャートである。
【００７４】
図２１に示すフローチャートは、実施の形態１で説明した図４に示すフローチャートのステップＳ１４〜Ｓ１５をステップＳ１８およびＳ１９に置き換えたものである。ステップＳ１１〜Ｓ１３およびＳ１７については実施の形態１にかかる設計支援装置１が行う同じステップ番号の動作と同様であるため、説明を省略する。
【００７５】
設計支援装置１ａの回路ブロック抽出部２２ａは、ステップＳ１２で抽出した回路ブロックと同じ構成の回路ブロックを抽出済みではない場合（ステップＳ１３：Ｎｏ）、抽出した回路ブロックの構成を示す構成情報を生成して回路ブロック記憶部３２に格納する（ステップＳ１８）。
【００７６】
次に、設計支援装置１ａは、ステップＳ１２で抽出した回路ブロックと過去に入力された回路ブロックとに基づいて、回路ブロックの入力傾向を学習する（ステップＳ１９）。このステップＳ１９では、機械学習部２５が、過去に入力された回路ブロックである過去ｎ回（ｎは１以上の整数）の入力回路ブロックを状態変数とし、抽出した回路ブロックである今回入力された回路ブロックを教師データとして、回路ブロックの入力傾向を学習する。
【００７７】
回路ブロック抽出部２２ａは、ステップＳ１２で抽出した回路ブロックと同じ構成の回路ブロックを抽出済みの場合（ステップＳ１３：Ｙｅｓ）、ステップＳ１８を実行しない。この場合はステップＳ１３に続いてステップＳ１９が実行される。
【００７８】
次に、設計支援装置１ａが回路ブロックの入力をユーザから受け付ける場合の動作を説明する。図２２は、実施の形態３にかかる設計支援装置１ａが回路ブロックの入力を受け付ける動作の一例を示すフローチャートである。
【００７９】
図２２に示すフローチャートは、実施の形態１で説明した図１０に示すフローチャートのステップＳ２２をステップＳ２５に置き換えたものである。ステップＳ２５以外については実施の形態１にかかる設計支援装置１が行う同じステップ番号の動作と同様であるため、説明を省略する。
【００８０】
設計支援装置１ａは、プログラム要素の複数入力の開始操作（回路ブロックの入力開始操作）を受け付けると（ステップＳ２１）、機械学習部２５での学習結果に基づいて、回路ブロックの入力候補を表示部４０に表示する（ステップＳ２５）。このステップＳ２５では、例えば、機械学習部２５が、学習結果と、ラダープログラムに前回入力された回路ブロックとに基づいて、回路ブロックの入力候補を決定し、次に、報知部２３が、回路ブロックの入力候補を表示部４０に表示する。設計支援装置１ａは、実施の形態２にかかる設計支援装置１と同様に、フリック操作による回路ブロックの入力を受け付け可能としてもよい。
【００８１】
このように、実施の形態３にかかる設計支援装置１ａは、回路ブロックの過去の入力結果に基づいて回路ブロックの入力傾向を機械学習により学習し、学習結果に基づいて、回路ブロックの入力候補を決定する。これにより、実施の形態１および２と比較して、より選択される可能性が高い回路ブロックを入力候補としてユーザに報知することが可能となる。
【００８２】
なお、本実施の形態にかかる設計支援装置１ａでは、実施の形態１にかかる設計支援装置１が利用する回路ブロックの使用回数に代えて、機械学習を利用して回路ブロックの入力候補を決定することとしたが、使用回数および機械学習の双方を利用する構成としてもよい。設計支援装置１ａは、例えば、機械学習部２５による学習が不十分な状態のときは回路ブロックの使用回数に基づいて回路ブロックの入力候補の表示を行い、学習が十分な状態になると、学習結果に基づいて回路ブロックの入力候補の表示を行うようにしてもよい。また、回路ブロックの使用回数に基づいて回路ブロックの入力候補の表示を行うのか、学習結果に基づいて回路ブロックの入力候補の表示を行うのかを、ユーザが選択できるようにしてもよい。
【００８３】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００８４】
１，１ａ  設計支援装置、１０  操作受付部、２０，２０ａ  制御部、２１  プログラム作成部、２２，２２ａ  回路ブロック抽出部、２３  報知部、２４  検索部、２５  機械学習部、３０  記憶部、３１  プログラム記憶部、３２  回路ブロック記憶部、３３  使用デバイス記憶部、４０  表示部、５１  状態観測部、５２  データ取得部、５３  学習部。
【要約】
設計支援装置（１）は、ユーザからの操作を受け付ける操作受付部（１０）と、操作受付部が受け付けた操作に従いラダープログラムを作成するプログラム作成部（２１）と、複数のプログラム要素を含む回路の一端がラダープログラムを構成する２本の母線の一方に接続され、回路の他端が２本の母線の他方に接続されたことを検出することにより回路ブロックが成立し、予め定められた条件が満足された場合、成立した回路ブロックをラダープログラムから抽出する回路ブロック抽出部（２２）と、回路ブロック抽出部が抽出した回路ブロックの構成情報を記憶する回路ブロック記憶部（３２）と、回路ブロック記憶部が記憶している構成情報で表される回路ブロックを、ラダープログラムに挿入する回路ブロックの候補としてユーザに報知する報知部（２３）と、を備える。【図１】
0006758549.tif 000002
【図２】
0006758549.tif 000003
【図３】
0006758549.tif 000004
【図４】
0006758549.tif 000005
【図５】
0006758549.tif 000006
【図６】
0006758549.tif 000007
【図７】
0006758549.tif 000008
【図８】
0006758549.tif 000009
【図９】
0006758549.tif 000010
【図１０】
0006758549.tif 000011
【図１１】
0006758549.tif 000012
【図１２】
0006758549.tif 000013
【図１３】
0006758549.tif 000014
【図１４】
0006758549.tif 000015
【図１５】
0006758549.tif 000016
【図１６】
0006758549.tif 000017
【図１７】
0006758549.tif 000018
【図１８】
0006758549.tif 000019
【図１９】
0006758549.tif 000020
【図２０】
0006758549.tif 000021
【図２１】
0006758549.tif 000022
【図２２】
0006758549.tif 000023