(57)【要約】【課題】複数のシーケンスプログラムの時間配分を最適化することが可能なプログラマブルコントローラ及び機械学習装置を提供すること。【解決手段】本発明のプログラマブルコントローラ１は、実行時間配分を設定する時間配分設定部３４と、加工システムの動作ステージを解析するステージ解析部３６と、サイクルタイムを計測する計測部３８と、シーケンスプログラムの実行時間配分の変更を学習する機械学習装置１００と、を備え、機械学習装置１００は、実行時間配分データ、動作ステージデータ、及び機械動作パターンデータを状態変数として観測する状態観測部１０６と、動作ステージの実行に掛かるサイクルタイムの適否を判定するサイクルタイム判定データを判定データとして取得する判定データ取得部１０８と、加工システムの動作ステージ及び機械の動作パターンと実行時間配分の変更とを関連付けて学習する学習部１１０と、を備える。【選択図】図２
2019204369.tif 000002
【特許請求の範囲】
【請求項１】
加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラであって、前記加工システムの動作ステージ毎に動作周期毎の該シーケンスプログラムの実行時間配分を変更するプログラマブルコントローラにおいて、
前記実行時間配分を設定する時間配分設定部と、
前記機械の動作状態に係るデータに基づいて前記加工システムの動作ステージを解析するステージ解析部と、
前記加工システムの前記動作ステージの実行に掛かる時間であるサイクルタイムを計測する計測部と、
前記動作周期毎のシーケンスプログラムの実行時間配分の変更を学習する機械学習装置と、を備え、
前記機械学習装置は、
前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、
前記設定されている実行時間配分の下で実行された前記動作ステージの実行に掛かるサイクルタイムの適否を判定するサイクルタイム判定データを、動作周期毎のシーケンスプログラムの実行時間配分の変更の適否判定結果を示す判定データとして取得する判定データ取得部と、
前記状態変数と前記判定データとを用いて、前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習する学習部と、
を備えるプログラマブルコントローラ。
【請求項２】
前記学習部は、
前記適否判定結果に関連する報酬を求める報酬計算部と、
前記報酬を用いて、前記加工システムの動作ステージ及び前記機械の動作パターンに対する動作周期毎のシーケンスプログラムの実行時間配分の変更行動の価値を表す関数を更新する価値関数更新部と、
を備え、
前記報酬計算部は、前記サイクルタイムが短縮されるほど高い報酬を与える、
請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記学習部は、前記状態変数と前記判定データとを多層構造で演算する、
請求項１又は２に記載のプログラマブルコントローラ。
【請求項４】
加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラであって、前記加工システムの動作ステージ毎に動作周期毎の該シーケンスプログラムの実行時間配分を変更するプログラマブルコントローラにおいて、
前記実行時間配分を設定する時間配分設定部と、
前記機械の動作状態に係るデータに基づいて前記加工システムの動作ステージを解析するステージ解析部と、
前記動作周期毎のシーケンスプログラムの実行時間配分の変更を学習した機械学習装置と、を備え、
前記機械学習装置は、
前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、
前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習した学習部と、
前記状態観測部が観測した状態変数と、前記学習部による学習結果に基づいて、動作周期毎のシーケンスプログラムの実行時間配分の変更を決定する意思決定部と、
を備えるプログラマブルコントローラ。
【請求項５】
加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラにおける、前記加工システムの動作ステージ毎の動作周期毎の該シーケンスプログラムの実行時間配分の変更を学習する機械学習装置であって、
前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、
前記設定されている実行時間配分の下で実行された前記動作ステージの実行に掛かるサイクルタイムの適否を判定するサイクルタイム判定データを、動作周期毎のシーケンスプログラムの実行時間配分の変更の適否判定結果を示す判定データとして取得する判定データ取得部と、
前記状態変数と前記判定データとを用いて、前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習する学習部と、
を備える機械学習装置。
【請求項６】
加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラにおける、前記加工システムの動作ステージ毎に動作周期毎の該シーケンスプログラムの実行時間配分を変更を学習した機械学習装置であって、
前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、
前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習した学習部と、
前記状態観測部が観測した状態変数と、前記学習部による学習結果に基づいて、動作周期毎のシーケンスプログラムの実行時間配分の変更を決定する意思決定部と、
を備える機械学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ及び機械学習装置に関する。
【背景技術】
【０００２】
従来、数値制御工作機械（ＮＣ工作機械）と、該数値制御工作機械の周辺で稼働するロボットやローダ等の周辺装置を含む加工システムを、１台のプログラマブルコントローラ（ＰＬＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ、ＰＭＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｍａｃｈｉｎｅ  Ｃｏｎｔｒｏｌｌｅｒ等）により制御する場合、それぞれの用途に応じて作成されている複数の用途別シーケンスプログラムを時分割処理で実行することで加工システムを構成する各装置を制御している（例えば、特許文献１）。この様な制御方式を用いる場合、プログラマブルコントローラでは動作周期毎に、各用途別シーケンスプログラムに対して実行時間の配分した上で、配分した時間の分だけ各用途別シーケンスプログラムを実行することになる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１９８３５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、用途別に作られているシーケンスプログラム（例えば、工作機械用シーケンスプログラム、搬送ロボット用シーケンスプログラム、バリ取り用シーケンスプログラム等）は、加工プロセスの中でそれぞれの制御対象物が繁忙となるタイミングにずれがある。例えば、図８に例示されるように、数値制御工作機械、ワーク搬送ロボット、バリ取りシステムのそれぞれの制御に用いられるシーケンスプログラム＃１，＃２，＃３を、プログラマブルコントローラ上で動作周期毎に時間配分をしながら順に実行する場合を考える。なお、加工プロセスはステージ１〜６（２週目以降はステージ３〜６）が繰り返され、数値制御工作機械、ワーク搬送ロボット、バリ取りシステムは、それぞれのステージにおいて以下のように動作しているものとする。
【０００５】
（ステージ１）ワーク搬送ロボットが、数値制御工作機械の加工エリアに未加工ワークを供給する
（ステージ２）数値制御工作機械が、ワークの加工が行う
（ステージ３）ワーク搬送ロボットが、数値制御工作機械の加工エリアから加工済みワークを取り出し、取り出したワークをバリ取りシステムの加工エリアに供給する
（ステージ４）バリ取りシステムが、加工済みワークのバリ取り加工を行い、同時にワーク搬送ロボットが、数値制御工作機械の加工エリアに未加工ワークを供給する
（ステージ５）数値制御工作機械が、ワークの加工が行い、同時にバリ取りシステムが、加工済みワークのバリ取り加工を継続する
（ステージ６）数値制御工作機械が、ワークの加工が行い、同時にワーク搬送ロボットが、バリ取りシステムの加工エリアからバリ取り済みワークを取り出す
【０００６】
それぞれのステージにおいて、シーケンスプログラム＃１〜＃３は、プログラマブルコントローラ上で配分された実行時間だけ実行することが繰り返されるが、各ステージにおいて各々の制御対象であるＮＣ工作機械、ワーク搬送ロボット、バリ取りシステムの動作状態が異なるため、その動作状態に併せて各シーケンスプログラムに配分する時間を適切に配分する必要がある。例えば、ステージ１では、ワーク搬送ロボットのみが動作し、他の機械は待ち状態であるため、シーケンスプログラム#１，＃３には時間配分を落としてそれぞれ５％とし、シーケンスプログラム＃２の実行に９０％の時間を配分する。また、ステージ４では、ワーク搬送ロボットとバリ取りシステムとが動作しており、また、バリ取りシステムの動作の監視のほうがワーク搬送ロボットよりも重要視されるので、シーケンスプログラム＃２に２５％、シーケンスプログラム＃３に７０％の時間を配分し、シーケンスプログラム＃１には残りの５％の時間が配分される。
【０００７】
この様な、各々のステージにおける各制御対象の動作状況や、各制御対象の動作の重要度等に応じて、ステージが切り換わるタイミングを見極めて、プログラムの時間配分を適切に切り替えたいという課題がある。
【０００８】
そこで本発明の目的は、複数のシーケンスプログラムの時間配分を最適化することが可能なプログラマブルコントローラ及び機械学習装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明のプログラマブルコントローラは、制御対象となる加工システムを構成する機械の動作状態を撮像して得られた画像データ、該機械との間でやり取りされるＤＩ／ＤＯデータ、各機械の軸の座標データ等を状態変数とし、加工プロセスのステージの処理時間に対する判定した結果を判定データとした機械学習を行い、その学習結果に基づいて各機械を制御するためのシーケンスプログラムの実行時間配分を変更することにより、上記課題を解決する。
【００１０】
そして、本発明の一態様は、加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラであって、前記加工システムの動作ステージ毎に動作周期毎の該シーケンスプログラムの実行時間配分を変更するプログラマブルコントローラにおいて、前記実行時間配分を設定する時間配分設定部と、前記機械の動作状態に係るデータに基づいて前記加工システムの動作ステージを解析するステージ解析部と、前記加工システムの前記動作ステージの実行に掛かる時間であるサイクルタイムを計測する計測部と、前記動作周期毎のシーケンスプログラムの実行時間配分の変更を学習する機械学習装置と、を備え、前記機械学習装置は、前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、前記設定されている実行時間配分の下で実行された前記動作ステージの実行に掛かるサイクルタイムの適否を判定するサイクルタイム判定データを、動作周期毎のシーケンスプログラムの実行時間配分の変更の適否判定結果を示す判定データとして取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習する学習部と、を備えるプログラマブルコントローラである。
【００１１】
本発明の他の態様は、加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラであって、前記加工システムの動作ステージ毎に動作周期毎の該シーケンスプログラムの実行時間配分を変更するプログラマブルコントローラにおいて、前記実行時間配分を設定する時間配分設定部と、前記機械の動作状態に係るデータに基づいて前記加工システムの動作ステージを解析するステージ解析部と、前記動作周期毎のシーケンスプログラムの実行時間配分の変更を学習した機械学習装置と、を備え、前記機械学習装置は、前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習した学習部と、前記状態観測部が観測した状態変数と、前記学習部による学習結果に基づいて、動作周期毎のシーケンスプログラムの実行時間配分の変更を決定する意思決定部と、を備えるプログラマブルコントローラである。
【００１２】
本発明の他の態様は、加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラにおける、前記加工システムの動作ステージ毎の動作周期毎の該シーケンスプログラムの実行時間配分の変更を学習する機械学習装置であって、前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、前記設定されている実行時間配分の下で実行された前記動作ステージの実行に掛かるサイクルタイムの適否を判定するサイクルタイム判定データを、動作周期毎のシーケンスプログラムの実行時間配分の変更の適否判定結果を示す判定データとして取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習する学習部と、を備える機械学習装置である。
【００１３】
本発明の他の態様は、加工システムを構成する少なくとも１つの機械を制御する複数のシーケンスプログラムを実行するプログラマブルコントローラにおける、前記加工システムの動作ステージ毎に動作周期毎の該シーケンスプログラムの実行時間配分を変更を学習した機械学習装置であって、前記加工システムの動作ステージの実行時に設定されている実行時間配分を示す実行時間配分データ、前記動作ステージを示す動作ステージデータ、及び前記動作ステージにおける前記機械の動作状態に係るデータである機械動作パターンデータを、環境の現在状態を表す状態変数として観測する状態観測部と、前記加工システムの動作ステージ及び前記機械の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習した学習部と、前記状態観測部が観測した状態変数と、前記学習部による学習結果に基づいて、動作周期毎のシーケンスプログラムの実行時間配分の変更を決定する意思決定部と、を備える機械学習装置である。
【発明の効果】
【００１４】
本発明により、複数シーケンスプログラムの実行時間の配分が最適化され、システム全体の処理能力が上がり、また、利用するシーケンスプログラムが変更されても、機械学習による再学習が為されて最適化される。
【図面の簡単な説明】
【００１５】
【図１】一実施形態によるプログラマブルコントローラの概略的なハードウェア構成図である。
【図２】一実施形態によるプログラマブルコントローラの概略的な機能ブロック図である。
【図３】動作状態解析結果テーブルを例示する図である。
【図４】加工システムの動作状態の履歴と、該動作状態の履歴から特定される加工システムの動作ステージを例示する図である。
【図５】プログラマブルコントローラの一形態を示す概略的な機能ブロック図である。
【図６】機械学習方法の一形態を示す概略的なフローチャートである。
【図７Ａ】ニューロンを説明する図である。
【図７Ｂ】ニューラルネットワークを説明する図である。
【図８】プログラマブルコントローラにおけるシーケンスプログラムに対する動作周期毎の実行時間配分について説明する図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態を図面と共に説明する。
図１は第１の実施形態によるプログラマブルコントローラの要部を示す概略的なハードウェア構成図である。
【００１７】
本実施形態によるプログラマブルコントローラ１が備えるプロセッサ１１は、プログラマブルコントローラ１を全体的に制御するプロセッサである。プロセッサ１１は、ＲＯＭ１２に格納されたシステム・プログラムをバス２０を介して読み出し、該システム・プログラムに従ってプログラマブルコントローラ１の全体を制御する。ＲＡＭ１３には一時的な計算データや表示データ、マウスやキーボード等の入力装置７１を介してしてオペレータが入力した各種データ等が一時的に格納される。
【００１８】
不揮発性メモリ１４は、例えば図示しないバッテリでバックアップされるなどして、プログラマブルコントローラ１の電源がオフされても記憶状態が保持されるメモリとして構成される。不揮発性メモリ１４には、プログラマブルコントローラ１の動作に係る設定情報が格納される設定領域や、入力装置７１から入力されたプログラムや図示しない外部記憶装置から読み込まれたプログラム、インタフェース１９を介して撮像装置４から取得される画像データ、インタフェース１６に接続されたＩ／Ｏユニット２を介して制御対象となる加工システムを構成する機械３とやり取りされる各種データ（例えば、各々の機械３に対して入出力されるＤＩ／ＤＯデータ、各々の機械３が備える軸の座標値等）が記憶されている。不揮発性メモリ１４に記憶されたプログラムや各種データは、実行時／利用時にはＲＡＭ１３に展開されても良い。また、ＲＯＭ１２には、公知の解析プログラムなどの各種のシステム・プログラム（後述する機械学習装置１００とのやりとりを制御するためのシステム・プログラムを含む）があらかじめ書き込まれている。
【００１９】
プログラマブルコントローラ１は、インタフェース１６に接続されたＩ／Ｏユニット２を介して各機械３とＤＩデータ（機械３への出力信号等）、ＤＯデータ（機械３からの入力信号等）をやり取りすることにより、各機械の制御を行う。
【００２０】
表示装置７０には、メモリ上に読み込まれた各データ、プログラム等が実行された結果として得られたデータ、後述する機械学習装置１００から出力されたデータ等がインタフェース１７を介して出力されて表示される。また、キーボードやポインティングデバイス等から構成される入力装置７１は、オペレータによる操作に基づく指令，データ等を受けて、インタフェース１８を介してプロセッサ１１に渡す。
【００２１】
撮像装置４は、プログラマブルコントローラ１が制御対象とする加工システムを構成する各機械３の動作状態を撮像し、得られた画像データをインタフェース１９を介してプロセッサ１１へ渡す。撮像装置４が撮像する画像データは、動画像でも良いし、所定の周期で連続して撮像される複数の静止画であっても良い。撮像装置４は、１台で複数の機械３の動作状態を撮像するようにしても良いし、それぞれの機械３に対して１台の撮像装置４を配置し、配置された複数の撮像装置４により加工システム全体の動作状態を撮像するようにしても良い。なお、撮像装置４は、機械３の動作状態の特定に画像データを用いない場合には、必ずしも必要な構成とはしない。
【００２２】
インタフェース２１は、プログラマブルコントローラ１と機械学習装置１００とを接続するためのインタフェースである。機械学習装置１００は、機械学習装置１００全体を統御するプロセッサ１０１と、システム・プログラム等を記憶したＲＯＭ１０２、機械学習に係る各処理における一時的な記憶を行うためのＲＡＭ１０３、及び学習モデル等の記憶に用いられる不揮発性メモリ１０４を備える。機械学習装置１００は、インタフェース２１を介してプログラマブルコントローラ１で取得可能な各情報（例えば、撮像装置４から取得される画像データ、各々の機械３に対して入出力されるＤＩ／ＤＯデータ、各々の機械３が備える軸の座標値等）を観測することができる。また、プログラマブルコントローラ１は、機械学習装置１００から出力される指令を受けて、動作周期毎のシーケンスプログラムの時間配分を変更する。
【００２３】
図２は、一実施形態によるプログラマブルコントローラ１と機械学習装置１００の概略的な機能ブロック図である。図２に示した各機能ブロックは、図１に示したプログラマブルコントローラ１が備えるプロセッサ１１、及び機械学習装置１００のプロセッサ１０１が、それぞれのシステム・プログラムを実行し、プログラマブルコントローラ１及び機械学習装置１００の各部の動作を制御することにより実現される。
【００２４】
本実施形態のプログラマブルコントローラ１は、機械学習装置１００から出力された動作周期毎のシーケンスプログラムの実行時間配分の変更指令を受けて、不揮発性メモリ１４内の実行時間配分設定領域に設定されている動作周期毎のシーケンスプログラムの実行時間配分を設定する時間配分設定部３４と、各機械３の動作状態に基づいて現在の加工システムの動作ステージを解析するステージ解析部３６と、各ステージにおけるサイクルタイムを計測する計測部３８とを備える。
【００２５】
時間配分設定部３４は、機械学習装置１００から出力された動作周期毎のシーケンスプログラムの実行時間配分の変更指令に従って、プログラマブルコントローラ１が実行する複数の用途別シーケンスプログラムについて、動作周期毎の実行時間配分を、例えば割合（％）や優先度（高、通常、低等）等で設定する。
【００２６】
ステージ解析部３６は、不揮発性メモリ１４に記録された、Ｉ／Ｏユニット２を介して機械３との間でやり取りされるＤＩ／ＤＯデータ、各機械３が備える軸の座標値、撮像装置４が各機械３を撮像して得られた画像データ等を解析し、各機械３の動作状態を特定し、その動作状態の組み合わせに基づいて機械３から構成される加工システム全体の動作状態を特定する。ステージ解析部３６は、例えばＤＩ／ＤＯデータの入出力状況（例えば、機械３が加工中であることを示す信号の出力状態や、機械３に対して動作開始／停止を指令する信号が出力されたか否か等）に基づいて、現在の各機械３の動作状態を特定するようにしても良い。また、ステージ解析部３６は、各機械３が備える軸の座標値や座標値の変化に基づいて、現在の各機械３の動作状況を特定するようにしても良い。また、ステージ解析部３６は、例えば画像データに含まれる各機械３の動作状態を示す特徴的な部分（加工中、安全等を通知するランプや、特定の駆動部の位置や動き、例えば、扉の開閉状態、主軸、アームの動き等）について画像解析を行い、その解析結果に基づいて各機械３の動作状態を特定するようにしても良い。更に、これらを組みあわせてより精度高く各機械３の動作状態を特定するようにしても良い。各機械３の動作状態は、少なくとも動作中、待機中の２つの状態を含み、更に加工中、搬送中、停止中等といったような動作状態の意味に応じた状態を含んでいることが望ましい。各機械３の動作状態は、一般に、動作状態が切り換わるきっかけとなるような、ＤＩ／ＤＯデータ乃至ＤＩ／ＤＯデータの系列、各機械３が備える軸の座標値、画像データの変化等を時間的な境界として次の動作状態に切り換わるので、各機械３の動作状態が切り換わるＤＩ／ＤＯデータ乃至ＤＩ／ＤＯデータの系列、各機械３が備える軸の座標値、画像データの変化等の条件を予め設定しておき、設定された条件が満足された時に動作状態が切り換わると判定し、当該判定に基づいてそれぞれの時点における動作状態を特定するようにすればよい。そして、ステージ解析部３６は、これらの各機械３の動作状態の組み合わせにより、加工システムの動作状態を特定する。そして、ステージ解析部３６は、特定した加工システムの動作状態について、例えば図３に例示されるように、加工システムの動作状態を識別する情報と、各機械３の動作状態とを関連付けた動作状態解析結果テーブルと、加工システムが動作を開始してからの動作状態の履歴を作成して不揮発性メモリに記憶する。
【００２７】
次に、ステージ解析部３６は、加工システムが動作を開始してからの加工システムの動作状態の履歴と、それぞれの動作状態におけるＤＩ／ＤＯデータの入出力状況の系列、各機械３が備える軸の座標値の系列、画像データに含まれる各機械３の動作状態を示す特徴的な部分の変化の系列等から特定される動作パターンに基づいて、加工システムの動作ステージを特定する。図４は、加工システムの動作状態の履歴と、該動作状態の履歴から特定される加工システムの動作ステージの例を示す図である。ステージ解析部３６は、加工システムの動作状態が同一で、動作パターンが類似するものを、同一の動作ステージとしてまとめる。例えば、図４において、加工システムの動作が開始してから３番目の動作状態と７番目の動作状態とは、加工システムの動作状態こそ同一ではあり、それぞれの動作状態における動作パターンが同一（類似）するため、これらの動作状態を同じ動作ステージであると判定し、加工システムの動作が開始してから最初の動作状態と３番目の動作状態とは、加工システムの動作状態こそ同一では有るが、それぞれの動作状態における動作パターンが異なるため、これらの動作状態は異なる動作ステージであると判定する。この様にして特定した加工システムの各動作ステージについて、ステージ解析部３６は、ＤＩ／ＤＯデータの入出力状況、各機械３が備える軸の座標値、画像データ等を整理した上で不揮発性メモリ１４に記憶する。
【００２８】
計測部３８は、加工システムのそれぞれの動作ステージ毎に、該動作ステージに掛かる時間を計測する。計測部３８は、計測したそれぞれの動作ステージに掛かる時間を不揮発性メモリ１４に履歴として記憶する。
【００２９】
一方、プログラマブルコントローラ１が備える機械学習装置１００は、加工システムの動作ステージに対する動作周期毎のシーケンスプログラムの実行時間配分の変更を、いわゆる機械学習により自ら学習するためのソフトウェア（学習アルゴリズム等）及びハードウェア（プロセッサ１０１等）を含む。プログラマブルコントローラ１が備える機械学習装置１００が学習するものは、加工システムの動作ステージと、動作周期毎のシーケンスプログラムの実行時間配分の変更との、相関性を表すモデル構造に相当する。
【００３０】
図２に機能ブロックで示すように、プログラマブルコントローラ１が備える機械学習装置１００は、実行時間配分を示す実行時間配分データＳ１、加工システムの動作ステージを示す動作ステージデータＳ２、及び該動作ステージにおける加工システムを構成する機械３の動作パターンを示す機械動作パターンデータＳ３を含む環境の現在状態を表す状態変数Ｓとして観測する状態観測部１０６と、設定された実行時間配分に基づいて行われた加工システムを構成する機械３の制御における加工システムの動作ステージに掛かるサイクルタイムを判定するためのサイクルタイム判定データＤ１を含む判定データＤを取得する判定データ取得部１０８と、状態変数Ｓと判定データＤとを用いて、加工システムの動作ステージ及び機械３の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更を関連付けて学習する学習部１１０とを備える。
【００３１】
状態観測部１０６が観測する状態変数Ｓのうち、実行時間配分データＳ１は、機械学習装置１００が出力した動作周期毎のシーケンスプログラムの実行時間配分の変更指令に基づいて変更された実行時間配分として取得することができる。実行時間配分は、上記したように、例えば動作周期毎の実効時間の割合（％）や優先度（高、通常、低）等で設定できるので、実行時間配分の変更指令は、直接的に動作周期毎の実行時間配分を指令するものであっても良いし、動作周期毎の実行時間配分を調整（５％増加／減少させる、１段階優先度を上げる／下げる等）するものであっても良い。
【００３２】
実行時間配分データＳ１は、機械学習装置１００が学習部１１０の学習結果に基づいて１つ前の学習周期において設定された実行時間配分をそのまま用いることができる。このような手法を取る場合には、機械学習装置１００は設定されている実行時間配分を学習周期毎にＲＡＭ１０３に一時的に記憶しておき、状態観測部１０６は、ＲＡＭ１０３から１つ前の学習周期で変更された実行時間配分を今回の学習周期の実行時間配分データＳ１として取得するようにしても良い。
【００３３】
状態観測部１０６が観測する状態変数Ｓのうち、動作ステージデータＳ２は、１つ前の学習周期における加工システムの動作ステージとして取得することができる。
また、状態観測部１０６が観測する状態変数の内、機械動作パターンデータＳ３は、１つ前の学習周期における加工システム動作ステージにおける、各機械３のＤＩ／ＤＯデータの入出力状況の系列、各機械３が備える軸の座標値の系列、画像データに含まれる各機械３の動作状態を示す特徴的な部分の変化の系列等として取得することができる。
これらのデータは、学習時においては、ステージ解析部３６により整理されて不揮発性メモリ１４に記録されたデータを用いることができ、また、推定時においては加工システムを構成する各機械３から取得されるＤＩ／ＤＯデータの入出力状況、軸の座標値、画像データ等の系列と、不揮発性メモリ１４に記録された加工ステージに係るデータとの間で類似性を判定し、類似すると判定されたデータを不揮発性メモリ１４から取得するようにすれば良い。
【００３４】
判定データ取得部１０８は、サイクルタイム判定データＤ１として、設定された実行時間配分に基づいて加工システムを動作させた時の動作ステージに掛かる時間（即ちサイクルタイム）を計測部３８が計測した計測値に対する判定結果を用いることができる。判定データ取得部１０８が用いるサイクルタイム判定データＤ１としては、例えば、加工システムの同じ動作ステージについて、実行時間配分を変える前と後とで、該動作ステージに掛かる時間が短縮されたか（適）、又は延びたか（否）といったものを使用すれば良い。
【００３５】
なお、判定データ取得部１０８は、学習部１１０による学習の段階では必須の構成となるが、学習部１１０による機械の動作状態と動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けた学習が完了した後には必ずしも必須の構成ではない。
【００３６】
学習部１１０に対して同時に入力される状態変数Ｓは、学習部１１０による学習周期で考えた場合、１つ前の学習周期において取得されたデータに基づくものとなる。このように、プログラマブルコントローラ１が備える機械学習装置１００が学習を進める間、環境においては、所定の加工システムの動作ステージにおけるシーケンスプログラムの実行時間配分の設定（変更）、該動作ステージの実行中における計測部３８によるサイクルタイムの計測、該動作ステージにおける計測部３８が計測したサイクルタイムの適否判定、各データに基づく学習が繰り返し実施される。
【００３７】
学習部１１０は、機械学習と総称される任意の学習アルゴリズムに従い、加工システムの動作ステージ及び機械３の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更を学習する。学習部１１０は、前述した状態変数Ｓと判定データＤとを含むデータ集合に基づく学習を反復実行することができる。
【００３８】
このような学習サイクルを繰り返すことにより、学習部１１０は、加工システムの動作ステージ及び機械３の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更との相関性を暗示する特徴を識別することができるようになる。学習アルゴリズムの開始時には加工システムの動作ステージ及び機械３の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更の相関性は実質的に未知であるが、学習部１１０は、学習を進めるに従い徐々に特徴を識別して相関性を解釈する。加工システムの動作ステージ及び機械３の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更との相関性が、ある程度信頼できる水準まで解釈されると、学習部１１０が反復出力する学習結果は、現在状態（つまり加工システムの動作ステージ及び機械３の動作パターン）に対して、動作周期毎のシーケンスプログラムの実行時間配分をどう変更するべきかという行動の選択（つまり意思決定）を行うために使用できるものとなる。つまり学習部１１０は、学習アルゴリズムの進行に伴い、加工システムの動作ステージ及び機械３の動作パターンに対して動作周期毎のシーケンスプログラムの実行時間配分をどのように変更するべきかという行動との、相関性を最適解に徐々に近づけることができる。
【００３９】
意思決定部１２２は、状態変数Ｓと学習部１１０が学習した結果に基づいて、動作周期毎のシーケンスプログラムの実行時間配分の変更を決定し、決定した動作周期毎のシーケンスプログラムの実行時間配分の変更を行うための動作周期毎のシーケンスプログラムの実行時間配分の変更指令を時間配分設定部３４へと出力する。
【００４０】
上記したように、プログラマブルコントローラ１が備える機械学習装置１００は、状態観測部１０６が観測した状態変数Ｓと判定データ取得部１０８が取得した判定データＤとを用いて、学習部１１０が機械学習アルゴリズムに従い、加工システムの動作ステージ及び機械３の動作パターンに対する動作周期毎のシーケンスプログラムの実行時間配分の変更を学習するものである。状態変数Ｓは、実行時間配分データＳ１、動作ステージデータＳ２、及び機械動作パターンデータＳ３といったデータで構成され、また判定データＤは、実際に加工システムを動作させた動作ステージにおいて計測されたサイクルタイムから一義的に求められる。したがって、プログラマブルコントローラ１が備える機械学習装置１００によれば、学習部１１０の学習結果を用いることで、加工システムの動作ステージ及び機械３の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更を、自動的かつ正確に行うことが可能となる。
【００４１】
そして、最適な動作周期毎のシーケンスプログラムの実行時間配分の変更を、自動的に行うことができれば、加工システムを構成する機械３から観測されるデータを把握するだけで、動作周期毎のシーケンスプログラムの実行時間配分を適切な状態へと迅速に変更することができる。
【００４２】
図５に示すプログラマブルコントローラ１が備える機械学習装置１００において、学習部１１０は、動作周期毎のシーケンスプログラムの実行時間配分が設定され、設定された実行時間配分に基づく加工システムの動作の結果の適否判定結果（学習周期で用いられる判定データＤに相当）に関連する報酬Ｒを求める報酬計算部１１２と、報酬Ｒを用いて、実行時間配分の価値を表す関数Ｑを更新する価値関数更新部１１４とを備える。学習部１１０は、価値関数更新部１１４が関数Ｑの更新を繰り返すことによって加工システムの動作ステージ及び機械３の動作パターンに対する動作周期毎のシーケンスプログラムの実行時間配分の変更を学習する。
【００４３】
学習部１１０が実行する強化学習のアルゴリズムの一例を説明する。この例によるアルゴリズムは、Ｑ学習（Ｑ−ｌｅａｒｎｉｎｇ）として知られるものであって、行動主体の状態ｓと、その状態ｓで行動主体が選択し得る行動ａとを独立変数として、状態ｓで行動ａを選択した場合の行動の価値を表す関数Ｑ（ｓ，ａ）を学習する手法である。状態ｓで価値関数Ｑが最も高くなる行動ａを選択することが最適解となる。状態ｓと行動ａとの相関性が未知の状態でＱ学習を開始し、任意の状態ｓで種々の行動ａを選択する試行錯誤を繰り返すことで、価値関数Ｑを反復して更新し、最適解に近付ける。ここで、状態ｓで行動ａを選択した結果として環境（つまり状態ｓ）が変化したときに、その変化に応じた報酬（つまり行動ａの重み付け）ｒが得られるように構成し、より高い報酬ｒが得られる行動ａを選択するように学習を誘導することで、価値関数Ｑを比較的短時間で最適解に近付けることができる。
【００４４】
価値関数Ｑの更新式は、一般に下記の数１式のように表すことができる。数１式において、ｓt及びａtはそれぞれ時刻ｔにおける状態及び行動であり、行動ａtにより状態はｓt+1に変化する。ｒt+1は、状態がｓtからｓt+1に変化したことで得られる報酬である。ｍａｘＱの項は、時刻ｔ＋１で最大の価値Ｑになる（と時刻ｔで考えられている）行動ａを行ったときのＱを意味する。α及びγはそれぞれ学習係数及び割引率であり、０＜α≦１、０＜γ≦１で任意設定される。
【００４５】
【数１】
2019204369.tif 000003
【００４６】
学習部１１０がＱ学習を実行する場合、状態観測部１０６が観測した状態変数Ｓ及び判定データ取得部１０８が取得した判定データＤは、更新式の状態ｓに該当し、現在状態（つまり、加工システムの動作ステージ及び機械３の動作パターン）に対して動作周期毎のシーケンスプログラムの実行時間配分をどのように変更するべきかという行動は、更新式の行動ａに該当し、報酬計算部１１２が求める報酬Ｒは、更新式の報酬ｒに該当する。よって価値関数更新部１１４は、現在状態に対する実行時間配分の価値を表す関数Ｑを、報酬Ｒを用いたＱ学習により繰り返し更新する。
【００４７】
報酬計算部１１２が求める報酬Ｒは、例えば、動作周期毎のシーケンスプログラムの実行時間配分を変更した後に行われる、変更された実行時間配分に基づく加工システムの動作の結果の適否判定結果が「適」と判定される場合（例えば、同じ動作ステージにおける実行時間配分の変更前よりもサイクルタイムが短くなった場合等）に正（プラス）の報酬Ｒとし、動作周期毎のシーケンスプログラムの実行時間配分を変更した後に行われる、変更された実行時間配分に基づく加工システムの動作の結果の適否判定結果が「否」と判定される場合（例えば、同じ動作ステージにおける実行時間配分の変更前よりもサイクルタイムが長くなった場合等）に負（マイナス）の報酬Ｒとすることができる。正負の報酬Ｒの絶対値は、互いに同一であってもよいし異なっていてもよい。また、判定の条件として、判定データＤに含まれる複数の値を組み合わせて判定するようにしても良い。
【００４８】
また、変更された実行時間配分に基づくワークの加工の適否判定結果を、「適」及び「否」の二通りだけでなく複数段階に設定することができる。例として、変更された実行時間配分に基づく加工システムの動作のサイクルタイムＴが変更前のサイクルタイムＴp特比較して５％以上短縮された場合には報酬Ｒ＝５を与え、３％以上５％未満短縮された場合には報酬Ｒ＝３を与え、０％以上３％未満短縮された時は報酬Ｒ＝１を、サイクルタイムが延びた場合には報酬Ｒ＝−３（マイナスの報酬）を与えるような構成とすることができる。
【００４９】
また、学習の初期段階は判定に用いる閾値を比較的大きく設定し、学習が進行するにつれて判定に用いる閾値を縮小する構成とすることもできる。
【００５０】
価値関数更新部１１４は、状態変数Ｓと判定データＤと報酬Ｒとを、関数Ｑで表される行動価値（例えば数値）と関連付けて整理した行動価値テーブルを持つことができる。この場合、価値関数更新部１１４が関数Ｑを更新するという行為は、価値関数更新部１１４が行動価値テーブルを更新するという行為と同義である。Ｑ学習の開始時には環境の現在状態と動作周期毎のシーケンスプログラムの実行時間配分の変更との相関性は未知であるから、行動価値テーブルにおいては、種々の状態変数Ｓと判定データＤと報酬Ｒとが、無作為に定めた行動価値の値（関数Ｑ）と関連付けた形態で用意されている。なお報酬計算部１１２は、判定データＤが分かれば、これに対応する報酬Ｒを直ちに算出でき、算出した値Ｒが行動価値テーブルに書き込まれる。
【００５１】
シミュレーションの結果の適否判定結果に応じた報酬Ｒを用いてＱ学習を進めると、より高い報酬Ｒが得られる行動を選択する方向へ学習が誘導され、選択した行動を現在状態で実行した結果として変化する環境の状態（つまり状態変数Ｓ及び判定データＤ）に応じて、現在状態で行う行動についての行動価値の値（関数Ｑ）が書き換えられて行動価値テーブルが更新される。この更新を繰り返すことにより、行動価値テーブルに表示される行動価値の値（関数Ｑ）は、適正な行動（本発明の場合、加工システムの各動作ステージにおけるサイクルタイムが短くなるように動作周期毎のシーケンスプログラムの実行時間配分を変更する行動）であるほど大きな値となるように書き換えられる。このようにして、未知であった環境の現在状態（加工システムの動作ステージ及び機械３の動作パターン）とそれに対する行動（動作周期毎のシーケンスプログラムの実行時間配分の変更）との相関性が徐々に明らかになる。つまり行動価値テーブルの更新により、加工システムの動作ステージ及び機械３の動作パターンと、動作周期毎のシーケンスプログラムの実行時間配分の変更との関係が最適解に徐々に近づけられる。
【００５２】
図６を参照して、学習部１１０が実行する上記したＱ学習のフロー（つまり機械学習方法の一形態）をさらに説明する。まずステップＳＡ０１で、価値関数更新部１１４は、その時点での行動価値テーブルを参照しながら、状態観測部１０６が観測した状態変数Ｓが示す現在状態で行う行動として動作周期毎のシーケンスプログラムの実行時間配分の変更行動を無作為に選択する。次に価値関数更新部１１４は、ステップＳＡ０２で、状態観測部１０６が観測している現在状態の状態変数Ｓを取り込み、ステップＳＡ０３で、判定データ取得部１０８が取得している現在状態の判定データＤを取り込む。次に価値関数更新部１１４は、ステップＳＡ０４で、判定データＤに基づき、変更された実行時間配分による加工システムの動作ステージにおけるサイクルタイムが適当であったか否かを判断し、適当であった場合、ステップＳＡ０５で、報酬計算部１１２が求めた正の報酬Ｒを関数Ｑの更新式に適用し、次いでステップＳＡ０６で、現在状態における状態変数Ｓ及び判定データＤと報酬Ｒと行動価値の値（更新後の関数Ｑ）とを用いて行動価値テーブルを更新する。ステップＳＡ０４で、変更された実行時間配分による加工システムの動作ステージにおけるサイクルタイムが適当でなかったと判断した場合、ステップＳＡ０７で、報酬計算部１１２が求めた負の報酬Ｒを関数Ｑの更新式に適用し、次いでステップＳＡ０６で、現在状態における状態変数Ｓ及び判定データＤと報酬Ｒと行動価値の値（更新後の関数Ｑ）とを用いて行動価値テーブルを更新する。学習部１１０は、ステップＳＡ０１〜ＳＡ０７を繰り返すことで行動価値テーブルを反復して更新し、動作周期毎のシーケンスプログラムの実行時間配分の変更の学習を進行させる。なお、ステップＳＡ０４からステップＳＡ０７までの報酬Ｒを求める処理及び価値関数の更新処理は、判定データＤに含まれるそれぞれのデータについて実行される。
【００５３】
前述した強化学習を進める際に、例えばニューラルネットワークを応用することができる。図７Ａは、ニューロンのモデルを模式的に示す。図７Ｂは、図７Ａに示すニューロンを組み合わせて構成した三層のニューラルネットワークのモデルを模式的に示す。ニューラルネットワークは、例えば、ニューロンのモデルを模した演算装置や記憶装置等によって構成できる。
【００５４】
図７Ａに示すニューロンは、複数の入力ｘ（ここでは一例として、入力ｘ1〜入力ｘ3）に対する結果ｙを出力するものである。各入力ｘ1〜ｘ3には、この入力ｘに対応する重みｗ（ｗ1〜ｗ3）が掛けられる。これにより、ニューロンは、次の数２式により表現される出力ｙを出力する。なお、数２式において、入力ｘ、出力ｙ及び重みｗは、すべてベクトルである。また、θはバイアスであり、ｆkは活性化関数である。
【００５５】
【数２】
2019204369.tif 000004
【００５６】
図７Ｂに示す三層のニューラルネットワークは、左側から複数の入力ｘ（ここでは一例として、入力ｘ１〜入力ｘ３）が入力され、右側から結果ｙ（ここでは一例として、結果ｙ１〜結果ｙ３）が出力される。図示の例では、入力ｘ１、ｘ２、ｘ３のそれぞれに対応の重み（総称してｗ１で表す）が乗算されて、個々の入力ｘ１、ｘ２、ｘ３がいずれも３つのニューロンＮ１１、Ｎ１２、Ｎ１３に入力されている。
【００５７】
図７Ｂでは、ニューロンＮ１１〜Ｎ１３の各々の出力を、総称してｚ１で表す。ｚ１は、入カベクトルの特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルｚ１のそれぞれに対応の重み（総称してｗ２で表す）が乗算されて、個々の特徴ベクトルｚ１がいずれも２つのニューロンＮ２１、Ｎ２２に入力されている。特徴ベクトルｚ１は、重みＷ１と重みＷ２との間の特徴を表す。
【００５８】
図７Ｂでは、ニューロンＮ２１〜Ｎ２２の各々の出力を、総称してｚ２で表す。ｚ２は、特徴ベクトルｚ１の特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルｚ２のそれぞれに対応の重み（総称してｗ３で表す）が乗算されて、個々の特徴ベクトルｚ２がいずれも３つのニューロンＮ３１、Ｎ３２、Ｎ３３に入力されている。特徴ベクトルｚ２は、重みＷ２と重みＷ３との間の特徴を表す。最後にニューロンＮ３１〜Ｎ３３は、それぞれ結果ｙ１〜ｙ３を出力する。
なお、三層以上の層を為すニューラルネットワークを用いた、いわゆるディープラーニングの手法を用いることも可能である。
【００５９】
プログラマブルコントローラ１が備える機械学習装置１００においては、ニューラルネットワークをＱ学習における価値関数として用い、状態変数Ｓと行動ａとを入力ｘとして、学習部１１０が上記したニューラルネットワークに従う多層構造の演算を行うことで、当該状態における当該行動の価値（結果ｙ）を出力することもできる。なお、ニューラルネットワークの動作モードには、学習モードと価値予測モードとがあり、例えば学習モードで学習データセットを用いて重みｗを学習し、学習した重みｗを用いて価値予測モードで行動の価値判断を行うことができる。なお価値予測モードでは、検出、分類、推論等を行うこともできる。
【００６０】
上記したプログラマブルコントローラ１の構成は、プロセッサ１０１が実行する機械学習方法（或いはソフトウェア）として記述できる。この機械学習方法は、動作周期毎のシーケンスプログラムの実行時間配分の変更を学習する機械学習方法であって、コンピュータのＣＰＵが、実行時間配分データＳ１、動作ステージデータＳ２、及び機械動作パターンデータＳ３を、加工システムが動作する環境の現在状態を表す状態変数Ｓとして観測するステップと、変更された実行時間配分に基づく加工システムの動作ステージにおけるサイクルタイムの適否判定結果を示す判定データＤを取得するステップと、状態変数Ｓと判定データＤとを用いて、動作ステージデータＳ２及び機械動作パターンデータＳ３と、動作周期毎のシーケンスプログラムの実行時間配分の変更とを関連付けて学習するステップとを有する。
【００６１】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【００６２】
例えば、機械学習装置１００が実行する学習アルゴリズムや演算アルゴリズム、プログラマブルコントローラ１が実行する制御アルゴリズム等は、上述したものに限定されず、様々なアルゴリズムを採用できる。
【００６３】
また、上記した実施形態ではプログラマブルコントローラ１と機械学習装置１００が異なるＣＰＵを有する装置として説明しているが、機械学習装置１００はプログラマブルコントローラ１が備えるプロセッサ１１と、ＲＯＭ１２に記憶されるシステム・プログラムにより実現するようにしても良い。
【符号の説明】
【００６４】
１  プログラマブルコントローラ
２  Ｉ／Ｏユニット
３  機械
４  撮像装置
１１  プロセッサ
１２  ＲＯＭ
１３  ＲＡＭ
１４  不揮発性メモリ
１６，１７，１８，１９  インタフェース
２０  バス
２１  インタフェース
３４  時間配分設定部
３６  ステージ解析部
３８  計測部
７０  表示装置
７１  入力装置
１００  機械学習装置
１０１  プロセッサ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  不揮発性メモリ
１０６  状態観測部
１０８  判定データ取得部
１１０  学習部
１１２  報酬計算部
１１４  価値関数更新部
１２２  意思決定部
【図１】
2019204369.tif 000005
【図２】
2019204369.tif 000006
【図３】
2019204369.tif 000007
【図４】
2019204369.tif 000008
【図５】
2019204369.tif 000009
【図６】
2019204369.tif 000010
【図７Ａ】
2019204369.tif 000011
【図７Ｂ】
2019204369.tif 000012
【図８】
2019204369.tif 000013