(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-10
(45)【発行日】2025-03-18
(54)【発明の名称】情報処理方法および情報処理装置
(51)【国際特許分類】
G06F 8/35 20180101AFI20250311BHJP
F24C 7/04 20210101ALI20250311BHJP
D06F 33/32 20200101ALI20250311BHJP
D06F 33/52 20200101ALI20250311BHJP
【FI】
G06F8/35
F24C7/04 301A
F24C7/04 301Z
D06F33/32
D06F33/52
(21)【出願番号】P 2022531862
(86)(22)【出願日】2021-06-16
(86)【国際出願番号】 JP2021022830
(87)【国際公開番号】W WO2021256496
(87)【国際公開日】2021-12-23
【審査請求日】2024-03-21
(31)【優先権主張番号】P 2020106606
(32)【優先日】2020-06-19
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】岸 竜弘
(72)【発明者】
【氏名】村上 健太
(72)【発明者】
【氏名】末益 智志
(72)【発明者】
【氏名】坂本 一樹
(72)【発明者】
【氏名】成瀬 隼人
【審査官】福西 章人
(56)【参考文献】
【文献】米国特許出願公開第2011/0153089(US,A1)
【文献】国際公開第2019/063118(WO,A1)
【文献】特開2019-91460(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/77
F24C 7/04
D06F 33/32
D06F 33/52
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムによって実行される情報処理方法であって、
(a)制御対象機器に備えられているアクチュエータ及び加熱器の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、
(b)少なくとも前記M個の選択ブロックのそれぞれが実行される順番を、前記操作者による入力操作に応じて設定することで、少なくとも前記M個の選択ブロックを含み、かつ、前記順番の情報を含むアプリケーションを生成し、
(c)所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、前記順番の情報が前記所定の順番に該当する場合には、前記M個の選択ブロックのそれぞれが実行される順番を変更することで前記アプリケーションを変更し、
(d)前記変更したアプリケーションを出力する、
情報処理方法。
【請求項2】
前記所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、
前記所定の順番は、前記第1のブロックの後に前記第2のブロックが位置する順番を示し、
前記(c)では、
前記順番の情報が前記所定の順番に該当する場合に、前記第1のブロックと前記第2のブロックとの間に、新たなブロックを追加することで、前記M個の選択ブロックのそれぞれが実行される順番を変更する、
請求項1に記載の情報処理方法。
【請求項3】
前記所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、
前記所定の順番は、前記第1のブロックの後に前記第2のブロックが位置する順番を示し、
前記(c)では、
前記順番の情報が前記所定の順番に該当する場合に、前記第1のブロック又は前記第2のブロックを削除することで、前記M個の選択ブロックのそれぞれが実行される順番を変更する、
請求項1に記載の情報処理方法。
【請求項4】
前記所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、
前記所定の順番は、前記第1のブロックの後に前記第2のブロックが位置する順番を示し、
前記(c)では、
前記順番の情報が前記所定の順番に該当する場合に、前記第1のブロック又は前記第2のブロックの順番を、前記第2のブロックの後に前記第1のブロックが位置する順番、又は、前記第1のブロック及び前記第2のブロックの間に他のブロックが位置する順番に変更することで、前記M個の選択ブロックのそれぞれが実行される順番を変更する、
請求項1に記載の情報処理方法。
【請求項5】
前記所定の順番は、前記第1のブロックの直後に、前記第2のブロックが位置する順番を示す、
請求項2~4のいずれか1項に記載の情報処理方法。
【請求項6】
前記ルールは、前記所定の2以上のブロックが前記所定の順番で実行されることで前記アクチュエータ及び前記加熱器の前記少なくとも1つが耐久温度に到達することを禁止する、
請求項1~5のいずれか1項に記載の情報処理方法。
【請求項7】
前記制御対象機器は、内部空間を有する筐体を備え、
前記ルールは、前記所定の2以上のブロックが前記所定の順番で実行されることで、前記内部空間が耐久温度に到達することを禁止する、
請求項1~5のいずれか1項に記載の情報処理方法。
【請求項8】
前記M個の選択ブロックのそれぞれは、前記アクチュエータ及び前記加熱器の前記少なくとも1つを駆動するためのパラメータを含む、
請求項1~7のいずれか1項に記載の情報処理方法。
【請求項9】
前記(c)では、
生成される前記アプリケーションが、前記制御対象機器専用のアプリケーションか、前記制御対象機器と、前記制御対象機器以外の機器とに適用される汎用のアプリケーションかを判定し、
所定の2以上のブロックが所定の順番で実行されることを禁止する複数のルール候補のうちの、前記アプリケーションの判定結果に応じたルール候補を、前記ルールとして参照する、
請求項1~8のいずれか1項に記載の情報処理方法。
【請求項10】
コンピュータシステムによって実行される情報処理方法であって、
(a)制御対象機器に備えられているアクチュエータ及び加熱器の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、
(b)少なくとも前記M個の選択ブロックのそれぞれが実行される順番を、前記操作者による入力操作に応じて設定することで、少なくとも前記M個の選択ブロックを含み、かつ、前記順番の情報を含むアプリケーションを生成し、
(c)所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、前記順番の情報が前記所定の順番に該当する場合には、前記操作者に対してエラーを提示し、
(d)前記エラーの提示を受けた前記操作者による入力操作に応じて、前記M個の選択ブロックのそれぞれが実行される順番を変更することで前記アプリケーションを変更し、
(e)前記変更したアプリケーションを出力する、
情報処理方法。
【請求項11】
前記(c)では、さらに、
前記エラーに対する複数の対処法を提示し、
前記(d)では、
前記エラーおよび前記複数の対処法の提示を受けた前記操作者による入力操作に応じて、前記M個の選択ブロックのそれぞれが実行される順番を変更することで前記アプリケーションを変更する、
請求項10に記載の情報処理方法。
【請求項12】
前記所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、
前記所定の順番は、前記第1のブロックの後に前記第2のブロックが位置する順番を示し、
前記複数の対処法は、
前記第1のブロックと前記第2のブロックとの間に、新たなブロックを追加する第1の対処法と、
前記第1のブロック又は前記第2のブロックを削除する第2の対処法と、
前記第2のブロックの後に前記第1のブロックが位置する順番、又は、前記第1のブロック及び前記第2のブロックの間に他のブロックが位置する順番に変更する第3の対処法とのうちの少なくとも2つを含む、
請求項11に記載の情報処理方法。
【請求項13】
前記(c)では、さらに、
前記複数の対処法のそれぞれが行われた場合における、前記アクチュエータ又は前記加熱器の駆動によって作用される物体への影響、または前記アプリケーションへの影響を提示する、
請求項11または12に記載の情報処理方法。
【請求項14】
前記情報処理方法では、
前記(d)の後に、前記(c)および前記(d)を繰り返し実行し、
(f)前記エラーの提示回数がK回(Kは2以上の整数)以上の場合には、前記エラーに対する複数の対処法を提示する、
請求項10に記載の情報処理方法。
【請求項15】
プロセッサと、
前記プロセッサに接続されたメモリとを備え、
前記プロセッサは、前記メモリを用いて、
(a)制御対象機器に備えられているアクチュエータ及び加熱器の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、
(b)少なくとも前記M個の選択ブロックのそれぞれが実行される順番を、前記操作者による入力操作に応じて設定することで、少なくとも前記M個の選択ブロックを含み、かつ、前記順番の情報を含むアプリケーションを生成し、
(c)所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、前記順番の情報が前記所定の順番に該当する場合には、前記M個の選択ブロックのそれぞれが実行される順番を変更することで前記アプリケーションを変更し、
(d)前記変更したアプリケーションを出力する、
情報処理装置。
【請求項16】
プロセッサと、
前記プロセッサに接続されたメモリとを備え、
前記プロセッサは、前記メモリを用いて、
(a)制御対象機器に備えられているアクチュエータ及び加熱器の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、
(b)少なくとも前記M個の選択ブロックのそれぞれが実行される順番を、前記操作者による入力操作に応じて設定することで、少なくとも前記M個の選択ブロックを含み、かつ、前記順番の情報を含むアプリケーションを生成し、
(c)所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、前記順番の情報が前記所定の順番に該当する場合には、前記操作者に対してエラーを提示し、
(d)前記エラーの提示を受けた前記操作者による入力操作に応じて、前記M個の選択ブロックのそれぞれが実行される順番を変更することで前記アプリケーションを変更し、
(e)前記変更したアプリケーションを出力する、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、アクチュエータ及び/又は加熱器を備える装置の制御プログラムを生成するための情報処理方法などに関する。
【背景技術】
【0002】
従来、家庭用電化製品及び住宅設備等は、その製造者等によって予め用意された運転条件(制御プログラム)に従って制御される。特許文献1には、ユーザが実施したい洗濯の運転条件を設定可能な洗濯機が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記従来技術では、製品の製造者等によって予め開発された制御プログラムが製品に予め格納されていなければならず、多様でかつ安全な制御プログラムを生成してカスタマイズ及びアップデートすることは難しい。
【0005】
そこで、本開示は、多種多彩でかつ安全な制御プログラムを簡単に生成することができる情報処理方法などを提供する。
【課題を解決するための手段】
【0006】
本開示の一態様に係る情報処理方法は、コンピュータシステムによって実行される情報処理方法であって、(a)制御対象機器に備えられているアクチュエータ及び加熱器の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、(b)少なくとも前記M個の選択ブロックのそれぞれが実行される順番を、前記操作者による入力操作に応じて設定することで、少なくとも前記M個の選択ブロックを含み、かつ、前記順番の情報を含むアプリケーションを生成し、(c)所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、前記順番の情報が前記所定の順番に該当する場合には、前記M個の選択ブロックのそれぞれが実行される順番を変更することで前記アプリケーションを変更し、(d)前記変更したアプリケーションを出力する。
【0007】
なお、これらの包括的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0008】
本開示の一態様に係る情報処理方法は、多種多彩でかつ安全な制御プログラムを簡単に生成することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態1におけるシステムのハードウェア構成図である。
【
図2A】
図2Aは、実施の形態1におけるクラウドサーバのハードウェア構成図である。
【
図2B】
図2Bは、実施の形態1における装置のハードウェア構成図である。
【
図2C】
図2Cは、実施の形態1における端末のハードウェア構成図である。
【
図3】
図3は、実施の形態1におけるシステムの機能構成図である。
【
図4】
図4は、実施の形態1におけるアプリケーションを規定するブロックの一例を示す。
【
図5】
図5は、実施の形態1における洗濯機のための複数のブロックを示す。
【
図6】
図6は、実施の形態1における電子レンジのための複数のブロックを示す。
【
図7】
図7は、実施の形態1における炊飯器のための複数のブロックを示す。
【
図8】
図8は、実施の形態1におけるシステムのシーケンス図である。
【
図9】
図9は、実施の形態1におけるデバイスデータベースの一例を示す。
【
図10】
図10は、実施の形態1における実行内容宣言の一例を示す。
【
図11】
図11は、実施の形態1における実行前確認処理のフローチャートを示す。
【
図12】
図12は、実施の形態1におけるルールデータベースの一例を示す。
【
図13】
図13は、実施の形態1におけるブロックの順番の変更の一例を示す。
【
図15A】
図15Aは、実施の形態1の変形例1におけるシステムのシーケンス図である。
【
図15B】
図15Bは、実施の形態1の変形例2におけるシステムのシーケンス図である。
【
図15C】
図15Cは、実施の形態1の変形例3におけるシステムのシーケンス図である。
【
図15D】
図15Dは、実施の形態1の変形例4におけるシステムのシーケンス図である。
【
図15E】
図15Eは、実施の形態1の変形例5におけるシステムのシーケンス図である。
【
図16】
図16は、実施の形態2における実行前確認処理のフローチャートを示す。
【
図17】
図17は、実施の形態3における実行前確認処理のフローチャートを示す。
【
図18】
図18は、実施の形態4における実行前確認処理のフローチャートを示す。
【
図19】
図19は、実施の形態5における情報処理システムの構成例を示す図である。
【
図20】
図20は、実施の形態5におけるブロックデータベースおよびルールデータベースのそれぞれに格納されている情報の一例を示す図である。
【
図21】
図21は、実施の形態5におけるルールデータベースに含まれる汎用ルールの一例を示す図である。
【
図22】
図22は、実施の形態5における情報処理システムのシーケンス図である。
【
図23】
図23は、実施の形態5における開発ツールの全体的な処理動作を示すフローチャートである。
【
図24】
図24は、実施の形態5における接続の自動修正処理の一例を示すフローチャートである。
【
図25】
図25は、実施の形態5における接続のエラー提示処理の一例を示すフローチャートである。
【
図26】
図26は、実施の形態5におけるシーケンス生成画面の一例を示す図である。
【
図27】
図27は、実施の形態5におけるブロック一覧の表示例を示す図である。
【
図28】
図28は、実施の形態5における機能ブロックの配置処理と、接続の自動修正処理の一例を示す図である。
【
図29A】
図29Aは、実施の形態5における機能ブロックの配置処理と、接続の自動修正処理の他の例を示す図である。
【
図29B】
図29Bは、実施の形態5における機能ブロックの配置処理と、接続の自動修正処理のさらに他の例を示す図である。
【
図30】
図30は、実施の形態5における接続のエラー提示処理の一例を示す図である。
【
図31】
図31は、実施の形態5における接続のエラー提示処理の他の例を示す図である。
【
図32】
図32は、実施の形態5における対処法の他の提示例を示す図である。
【
図33】
図33は、実施の形態5における対処法のさらに他の提示例を示す図である。
【発明を実施するための形態】
【0010】
(本開示の基礎となった知見)
本願発明者らが本開示に至るまでの経緯を説明する。アクチュエータ及び/又は加熱器を有する家庭用電化製品等において、多様なユーザの望みに合わせて制御プログラムを開発するためには、開発環境のオープン化が求められる。すなわち、制御プログラムの開発の難度を低下させて、サードパーティが制御プログラムの開発に容易に参加できる環境が求められる。このような環境では、例えば、アパレル企業が、自社の販売する衣服を洗濯するための洗濯機の制御プログラムを開発することも可能となる。
【0011】
そこで、本発明者らは、製品に含まれるアクチュエータ及び/又は加熱器の制御を抽象化した機能ブロックを用いて、安全面の担保を維持しながら、制御プログラムを開発可能な環境を構築し、複数の機能ブロックの組み合わせからなる制御プログラムをパッケージ化してアプリケーションとして配信可能な仕組みを検討した。これにより、多種多彩なアプリケーションの配信が可能となり、より多様なユーザの望みに応えて製品をカスタマイズ及びアップデートすることが可能となる。しかしながら、このような環境では、危険なアプリケーション(つまり、製品を安全に制御することができないアプリケーション)が配信される可能性があり、製品の安全性が低下する。
【0012】
例えば、家庭用電化製品等に含まれるプログラムは、アクチュエータ及び/又は加熱器を直接制御するための機器に組込まれ、かつ、製造者により開発されたプログラムと、サードパーティにより開発されたプログラムとを互いに入り交じった状態で含むことが想定される。このとき、製造者は、サードパーティに、ノウハウを含む全ての家庭用電化製品等の情報を公開しない可能性が高い。例えば、アクチュエータ及び/又は加熱器を駆動するパラメータ又はタイミングは、製造者の家庭用電化製品等の性能に関わるノウハウである。よって、競争力の低下につながる恐れがあるため、製造者は、サードパーティに、家庭用電化製品等を自在に駆動できるようにノウハウをオープンにする可能性は低い。
【0013】
そのため、サードパーティは、家庭用電化製品等の情報不足により、製造者が想定しない制御の組み合わせ、又はパラメータ範囲を含むアプリケーション、すなわち、安全性が担保されないアプリケーションを作成する可能性がある。このようなアプリケーションがユーザに提供されることは、ユーザに望ましくない。
【0014】
また、家庭用電化製品等の製造者は、新たな制御プログラムを提供することで、ユーザのくらしのアップデートを試みることが考えられる。しかしながら、多種多様な新たな制御プログラムの開発には、パラメータの調整、またはハードの性能評価などの膨大な工数がかかる。家庭用電化製品等は、アクチュエータ及び/又は加熱器のハードが物理的に駆動するため、家庭用電化製品等のプログラムは、スマートフォンのプログラムと比較して、性能評価などの工数が大きくなることが容易に予想される。しかし、大量生産ではなく、ユーザ一人一人の生活に応じたオンデマンド開発が求められる時代において、スマートフォンのプログラムと同様に、家庭用電化製品等の多種多様な制御プログラム開発することが求められる。そのため、製造者は、膨大な工数を低減した上で、製品の安全性を担保する多種多様なアプリケーションを作成しなければならない。
【0015】
さらに、製造者は、サードパーティが提供するアプリケーションを用いて家庭用電化製品等が動作した場合でも、安全に動作することを保証することを望むことが考えられる。このとき、多種多様なアプリケーションを家庭用電化製品等で実際に駆動させて安全性を検証する作業の量を低減することが望まれる。
【0016】
そこで、本開示は、アクチュエータ及び/又は加熱器を駆動する複数の機能ブロックで規定された多種多彩でかつ安全なアプリケーションを、簡単に生成することができる情報処理方法等を提供する。
【0017】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0018】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、請求の範囲を限定する主旨ではない。
【0019】
また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する。
【0020】
(実施の形態1)
[1.1 ハードウェア構成]
本実施の形態におけるシステム1のハードウェア構成について、
図1~
図2Cを参照しながら説明する。
図1は、実施の形態1におけるシステム1のハードウェア構成図である。
図2Aは、実施の形態1におけるクラウドサーバ10のハードウェア構成図である。
図2Bは、実施の形態1における装置20のハードウェア構成図である。
図2Cは、実施の形態1における端末30のハードウェア構成図である。
【0021】
図1に示すように、本実施の形態におけるシステム1は、クラウドサーバ10と、施設2a~2dで用いられる装置20a~20hと、端末30a~30dと、を備える。施設2a~2dは、例えば住宅であるが、これに限定されない。施設2a~2dは、例えばマンション、店舗、オフィス等であってもよい。
【0022】
クラウドサーバ10は、コンピュータネットワーク(例えばインターネット)を介して提供される仮想的なサーバである。クラウドサーバ10は、コンピュータネットワークを介して、装置20a~20h及び端末30a~30dに接続される。なお、クラウドサーバ10の代わりに物理サーバが用いられてもよい。
【0023】
図2Aに示すように、クラウドサーバ10は、仮想的に、プロセッサ11と、プロセッサ11に接続されたメモリ12と、を備える。プロセッサ11は、メモリ12に格納されたインストラクション又はソフトウェアプログラムが実行されたときに、後述するシーケンスマネージャ及びデバイスマネージャとして機能する。
【0024】
装置20a~20hは、施設2a~2dで利用される電気機械器具である。なお、
図1では、施設2b~2dで利用される装置20c~20hの図示が省略されている。以下において、装置20a~20hの区別が不要な場合には装置20と記載する。
【0025】
装置20としては、家庭用電化製品(家電)及び住宅設備等を用いることができる。家庭用電化製品(家電)及び住宅設備等は、住宅内で使用される機器に限られず、事業に用いられる機器も含む。なお、本開示では、家庭用電化製品及び住宅設備等を家庭用電化製品等と省略して記載することがある。家電としては、例えば、電子レンジ、炊飯器、ミキサー(Blender)、電気オーブン、電気トースター、電気ポット、ホットプレート、IH(Induction heating)調理器、ロースター、ベーカリー、電気圧力調理なべ、電気無水調理なべ、マルチクッカー、コーヒーメーカー、冷蔵庫、洗濯機、食洗器、掃除機、エアコン、空気清浄機、加湿器、ドライヤー、扇風機、及びイオン発生器等が用いられる。住宅設備としては、例えば、電動シャッター、電子ロック、及び浴槽用の電気湯沸し器等が用いられる。なお、装置20は、これに限定されない。
【0026】
図2Bに示すように、装置20は、筐体21と、アクチュエータ22と、加熱器23と、制御部24と、を備える。なお、装置20は、アクチュエータ22及び加熱器23の少なくとも1つを備えればよく、アクチュエータ22及び加熱器23の両方を備えなくてもよい。
【0027】
筐体21は、アクチュエータ22と、加熱器23と、制御部24と、を収容する。また、筐体21は、対象物を処理するための内部空間を有してもよい。例えば、洗濯機の洗濯槽、電子レンジの加熱室、及び炊飯器の内釜等が、対象物を処理するための内部空間に相当する。
【0028】
アクチュエータ22は、電気信号に基づいて入力エネルギーを物理的運動に変換する機械要素である。アクチュエータ22としては、例えば電気モータ、油圧シリンダ及び空気圧アクチュエータ等を用いることができるが、これらに限定されない。
【0029】
加熱器23は、電気エネルギーを熱エネルギーに変換する電気加熱器である。加熱器23は、例えばジュール加熱、誘導加熱及び誘電加熱等により対象物を加熱する。加熱器23としては、例えば、ニクロム線、コイル及びマグネトロン等を用いることができる。
【0030】
ここで、本開示の装置20が、アクチュエータ22及び/又は加熱器23を備える理由の一例を説明する。家庭用電化製品等の製造者が、アクチュエータ22及び加熱器23を駆動するパラメータ、駆動の組み合わせを全て自由に制御可能な開発環境をサードパーティに提供した場合を考える。このとき、サードパーティは、製造者が想定しているアクチュエータ22及び/又は加熱器23を安全に駆動できるパラメータ範囲、又はアクチュエータ22及び/又は加熱器23の駆動制限を逸脱して制御するプログラムを作成することが可能になる。特に、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23の、製造者の想定していない駆動は、安全性の担保の課題が大きい。製造者の想定していない駆動としては、例えば、アクチュエータの一例である電気モータの高速回転、及び、加熱器23への過電流の供給が挙げられる。本願発明者らは、過度に安全面を考慮することで、ユーザに多種多様なアプリケーションを提供できる環境の構築を阻害しないことを目指した。そこで、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23に特化して、安全面を担保することを想定し、本開示の装置20を対象としている。
【0031】
制御部24は、アクチュエータ22及び/又は加熱器23を制御するコントローラであり、後述するデバイスとして機能する。制御部24は、例えば、集積回路で構成される。
【0032】
端末30a~30dは、施設2a~2dでそれぞれ利用され、ユーザインタフェースとして機能する。なお、
図1では、施設2b~2dで利用される端末30b~30dの図示が省略されている。以下において、端末30a~30dの区別が不要な場合には端末30と記載する。
【0033】
端末30は、コンピュータネットワークを介してクラウドサーバ10及び装置20に接続され、後述するユーザインタフェース(UI)として機能する。端末30としては、スマートフォン及びタブレットコンピュータ等の持ち運び可能な情報端末を用いることができる。なお、端末30は、施設2a~2dの壁、床又は天井に固定された端末であってもよい。また、端末30は、装置20に含まれてもよい。例えば、端末30は、各装置20a~20hに内蔵されたディスプレイ等を有する表示端末として実現されてもよい。
【0034】
図2Cに示すように、端末30は、ディスプレイ31と、入力デバイス32と、を備える。ディスプレイ31としては、例えば液晶ディスプレイ及び有機ELディスプレイを用いることができる。入力デバイス32としては、例えばタッチパネル、キーボード、マウス及び機械式ボタン等を用いることができる。また、入力デバイス32として、音声入力デバイスが用いられてもよい。ディスプレイ31と入力デバイス32とは、タッチスクリーンとして一体で実装されてもよい。または、入力デバイス32として、ジェスチャー入力デバイスが用いられてもよい。ジェスチャー入力デバイスは、例えば、カメラと認識部とを有する。カメラはジェスチャーを含む画像を撮像し、認識部は画像を用いてジェスチャーを認識する。
【0035】
[1.2 機能構成]
次に、本実施の形態におけるシステム1の機能構成について、
図3を参照しながら説明する。
図3は、実施の形態1におけるシステム1の機能構成図である。
【0036】
クラウドサーバ10は、シーケンスマネージャ100と、デバイスマネージャ200と、を備える。装置20a~20hは、デバイス300a~300hをそれぞれ備える。端末30a~30dは、UI400a~400dをそれぞれ備える。
【0037】
以下において、デバイス300a~300hの区別が不要な場合にはデバイス300と記載する。また、UI400a~400dの区別が不要な場合にはUI400と記載する。
【0038】
シーケンスマネージャ100は、複数のアプリケーションを管理している。複数のアプリケーションは、例えばユーザの操作によって、アプリケーション配信プラットフォームからシーケンスマネージャ100にダウンロードされる。または、アプリケーション配信プラットフォームに含まれるアプリケーションは、シーケンスマネージャ100にダウンロードされなくてもよい。その場合、シーケンスマネージャ100のデータベースに、アプリケーション配信プラットフォームに含まれるアプリケーションが紐づけていることを示す情報が記録されてもよい。アプリケーションの詳細については後述する。
【0039】
デバイスマネージャ200は、複数の施設2a~2d及び各施設2a~2dで利用されるデバイス300及びUI400を管理するためのデータベースを有する。デバイスマネージャ200は、データベースに、施設2a~2dに紐づくデバイス情報及びUI情報を記録することにより、デバイス300及びUI400を管理する。デバイス情報及びUI情報は、例えば、制御機能及び駆動機能、並びに稼働状況などを含む。例えば、デバイスマネージャ200は、デバイス300の稼働状況を管理して、デバイス300の稼働スケジュールを把握することができる。また、デバイスマネージャ200は、デバイス300のログ情報を管理してもよい。
【0040】
なお、このようなデータベースは、デバイスマネージャ200の代わりにシーケンスマネージャ100が有してもよく、シーケンスマネージャ100及びデバイスマネージャ200の両方が有してもよい。
【0041】
デバイス300は、装置20の制御機能及び駆動機能を有する。デバイス300は、デバイスマネージャ200からの指示に従って装置20を駆動することができる。
【0042】
UI400は、ユーザに情報を提供し、ユーザから入力を受け付ける。
【0043】
ここで、アプリケーションについて説明する。本実施の形態では、アプリケーション(以下、略してアプリということもある)とは、アクチュエータ22及び/又は加熱器23を駆動する複数の機能ブロック(以下、略してブロック)で規定される制御プログラムを意味する。複数のブロックの各々は、アクチュエータ22又は加熱器23を駆動するためのパラメータを含むことができる。具体的には、複数のブロックの各々は、アクチュエータ22又は加熱器23の制御を抽象化したものである。なお、アプリケーションは、アクチュエータ22及び/又は加熱器23を駆動する複数のブロックに加えて、アクチュエータ22及び/又は加熱器23を駆動しないブロックを含んでもよい。アクチュエータ22及び/又は加熱器23を駆動しないブロックの一例は、デバイス300の有するインタフェースを用いた情報表示、デバイス300の有するブザーを用いた音声出力、デバイス300の有するランプの点灯または消灯などを含む。また、ブロックは、アクチュエータ22又は加熱器23の駆動を開始する条件を含んでもよい。例えば、第1のブロック、第2のブロックを含むアプリケーションを例に説明する。ここで、第1のブロックの実行中に、第2のブロックに切り替える際に、第2のブロックに含まれる開始条件を満たしたときに、第1のブロックから第2のブロックに切り替える。また、ブロックは、開始条件ではなく、終了条件を含んでいてもよい。第1のブロックの実行中に、第2のブロックに切り替える際に、第1のブロックに含まれる終了条件を満たしたときに、第1のブロックから第2のブロックに切り替える。
【0044】
図4は、実施の形態1におけるアプリケーションを規定するブロックの一例を示す。
図4に示すブロック1000は、洗濯機の攪拌動作を制御するブロックであり、パラメータ1001~1006を含む。パラメータ1001は、攪拌の種類を示す情報(例えば、通常、ダンシング、揺り)を含む。パラメータ1001は、機能の種類を示すとも言い換えることができる。パラメータ1002は、ドラムの回転数を示す値を含む。パラメータ1002は、アクチュエータ22及び/又は加熱器23の駆動の強度を示すとも言い換えることができる。パラメータ1003は、ドラム内への給水量を給水後の水位で示す値を含む。パラメータ1003は、アクチュエータ22及び/又は加熱器23の駆動後の状態を示すとも言い換えることができる。パラメータ1004は、循環ポンプのオン/オフを示す値を含む。パラメータ1004は、アクチュエータ22及び/又は加熱器23を駆動するか否かを示すとも言い換えることができる。パラメータ1005は、攪拌間隔を段階的に示す情報(例えば、短、中、長)を含む。パラメータ1006は、攪拌時間を示す値を含む。
【0045】
アプリケーションを規定するために、このようなブロックが複数用いられる。例えば、
図5~
図7に示すような複数のブロックが用いられる。
【0046】
図5は、実施の形態1における洗濯機のための複数のブロックを示す。
図6は、実施の形態1における電子レンジのための複数のブロックを示す。
図7は、実施の形態1における炊飯器のための複数のブロックを示す。なお、
図5~
図7に示す複数のブロックは例示であり、洗濯機、電子レンジ及び炊飯器のためのブロックは、これらに限定されない。例えば、複数のブロックは、抽象化レベルによって階層化されてもよい。
【0047】
例えば、製造者向けの階層と製造者以外向けの階層とで抽象化レベルを変更してもよい。製造者以外の例は、他の製造者向けの階層、サードパーティ向けの階層である。
【0048】
この時、製造者向けの階層は、製造者以外向けの階層より抽象度が低い。抽象度が低いことは、アクチュエータ及び加熱器を駆動するパラメータに近い内容が制御されることを意味する。
【0049】
一方、製作者は、ノウハウ及び安全性を担保する最小の抽象化レベルを有するブロックを製造者以外向けに提供することで、製造者以外がアプリケーションを開発可能にする。製造者は、一般ユーザに、さらに高い抽象化レベルを有するブロックを提供することで、より多くの人がアプリケーションを開発可能にできる。さらに高い抽象化レベルは、例えば、一般ユーザ自身が専門的な知識がなくても理解できる用語で規定されたブロックに対応する。専門的な知識がなくても理解できる用語は、例えば、家庭用電化製品等の機能自体に対応する内容である。具体的には、洗濯機においての「洗い」ブロック中の水量に関するパラメータとして「たっぷり」を選択した場合に、一つの具体化されたレイヤーにおいては、給水ブロックにおける水位パラメータを60mmから100mmに上げ、攪拌ブロックにおける回転量パラメータを120rpmから100rpmに下げるなどの変更が行われる。上記より、抽象度の高いレベルにおけるブロックの並べ替え及びパラメータ変更は、より抽象度の低いブロックで実現することができる。また、洗濯機、電子レンジ及び炊飯器以外の装置でも、
図5~
図7と同様に複数のブロックを定義することができる。これらのブロックにより、アクチュエータ及び加熱器の駆動に関する安全性、秘匿性を担保しながら、その組替、パラメータ調整によって自由にアプリケーション開発を行うことができる。
【0050】
なお、製造者が他の製造者に、ノウハウ及び安全性を担保する最小の抽象化レベルを有するブロックを提供することで、他の製造者は、提供されたブロックを実現するために、さらに高い具体化レベルを有するブロックを独自で規定し実装を行うことができる。これにより、各製造者がそれぞれのノウハウ及び安全性を担保しながら、アプリのみを開発するサードパーティに対して、各製造者のアクチュエータ及び加熱器の駆動に関するアプリ開発を自由に行うことができる。
【0051】
この時、他の製造者は、製造者が提供するノウハウ及び安全性を担保する最小の抽象化レベルを有するブロックに合わせた、さらに高い具体化レベルを有するブロックを開発せず、エラーを返し、製造者が提供するブロックが使用できない、または制限されたパラメータ範囲で動作することをアプリ開発者ならびにユーザに提示してもよい。具体的には、洗濯機においての「攪拌」ブロック中のモータ回転に関するパラメータとして、「高速」を選択した場合に、製造者の洗濯機では、「高速」を実現するための150rpmというパラメータが実現可能であるのに対し、他の製造業者の洗濯機ではモータの特性上、120rpmまでしか回転できない場合に、エラーまたは限界値の120rpmで実現する旨をアプリ開発者又はユーザに提示する。
【0052】
[1.3 処理]
次に、以上のように構成されたシステム1の処理について
図8を参照しながら説明する。
図8は、実施の形態1におけるシステム1のシーケンス図である。
【0053】
[1.3.1 準備フェーズF100]
まず、準備フェーズF100について説明する。
【0054】
(ステップS110)
シーケンスマネージャ100は、デバイスマネージャ200にシーケンスマネージャ情報を送信する。このシーケンスマネージャ情報の送信は、例えばシステム管理者の命令により行われる。デバイスマネージャ200は、受信したシーケンスマネージャ情報を例えばシーケンスマネージャデータベースに登録する。なお、シーケンスマネージャ情報がシーケンスマネージャデータベースに予め登録されている場合は、このステップはスキップされてもよい。
【0055】
シーケンスマネージャ情報は、例えばシーケンスマネージャ100の識別子及び/又はアドレス(例えばURL(Uniform Resource Locator)、IP(Internet Protocol)アドレス等)を含む。さらに、シーケンスマネージャ情報は、任意の情報を含んでもよい。
【0056】
(ステップS112)
デバイス300は、デバイスマネージャ200にデバイス情報1101を送信する。このデバイス情報1101の送信は、例えばデバイス300がコンピュータネットワークに接続されたときに行われる。デバイスマネージャ200は、受信したデバイス情報1101をデバイスデータベース1100に登録する。なお、デバイス情報1101がデバイスデータベース1100に予め登録されている場合は、このステップはスキップされてもよい。
【0057】
なお、デバイス情報1101は、UI400に送信されてから、UI400を介してデバイスマネージャ200に登録されてもよい。
【0058】
デバイス情報1101は、デバイス300の識別子及び/又はアドレスを含む。さらに、デバイス情報1101は、任意の情報を含んでもよい。
図9は、実施の形態1におけるデバイスデータベースの一例を示す。
図9のデバイスデータベース1100には、デバイス情報1101を含む複数のデバイス情報が登録されている。各デバイス情報は、デバイスIDと、アドレスと、種別と、製造者名と、型番と、アクチュエータ/加熱器と、劣化レベルと、を含む。アクチュエータ/加熱器は、デバイス300を構成するアクチュエータ22及び/又は加熱器23の識別情報である。劣化レベルは、デバイス300を構成するアクチュエータ22及び/又は加熱器23が劣化しているか否かを示す劣化情報の一例である。ここでは、劣化レベルは、値が増加すればより劣化していることを示す。デバイス情報1101に、実行可能なブロックの情報が含まれていてもよい。実行可能なブロックに関する情報とは、データベースに含まれるブロックが実行可能又は実行不可能が対応付けられた情報でもよいし、実行可能なブロックのみの情報でもよい。また、ブロックが実行可能か否かは、デバイス情報1101に含まれるアクチュエータ/加熱器などの情報に基づいて予め準備され得る。
【0059】
なお、デバイス情報1101は、施設2a~2dを特定可能な情報を含んでもよい。
【0060】
(ステップS114)
UI400は、デバイスマネージャ200にUI情報を送信する。このUI情報の送信は、例えばユーザの指示により行われる。デバイスマネージャ200は、受信したUI情報を例えばUIデータベースに登録する。なお、UI情報がUIデータベースに予め登録されている場合は、このステップはスキップされてもよい。
【0061】
UI情報は、例えばUI400の識別子及び/又はアドレスを含む。さらに、UI情報は、任意の情報を含んでもよい。
【0062】
なお、UI情報は、施設2a~2dを特定可能な情報を含んでもよい。
【0063】
以上の処理により、シーケンスマネージャ100、デバイスマネージャ200、デバイス300及びUI400は、互いに紐づけられ、互いに接続を確立することができる。このより、準備フェーズF100が終了する。
【0064】
[1.3.2 アプリ実行前フェーズF200]
次に、アプリ実行前フェーズF200について説明する。なお、アプリ実行前フェーズF200の前には、UI400を介したユーザからの指示に従って、アプリケーション配信プラットフォームからシーケンスマネージャ100にアプリケーションがダウンロードされている。このようにシーケンスマネージャ100にアプリケーションがダウンロードされた状態で以下の処理が行われる。
【0065】
(ステップS210)
UI400は、ユーザからアプリ実行要求を受け付け、アプリケーションの識別情報を含むアプリ実行要求をシーケンスマネージャ100に送信する。例えば、ユーザは、UI400を介して、シーケンスマネージャ100にダウンロードされている複数のアプリケーションの中からアプリケーションを選択し、選択したアプリケーションの実行を指示する。
【0066】
なお、UI400からシーケンスマネージャ100に送信されるアプリ実行要求は、施設2a~2dを特定可能な情報とセットで送信される。
【0067】
なお、アプリ実行要求は、ユーザから明示的に受け付けられなくてもよい。例えば、ユーザの行動又は状態を検出し、検出結果に基づいて自動的にアプリ実行要求がシーケンスマネージャ100に送信されてもよい。
【0068】
(ステップS212)
シーケンスマネージャ100は、アプリ実行要求によって識別されたアプリケーションの実行内容宣言をデバイスマネージャ200に送信する。実行内容宣言は、実行するアプリケーションを規定する複数のブロックの情報及び施設2a~2dを特定可能な情報を含む。
【0069】
図10は、実施の形態1における実行内容宣言の一例を示す図である。
図10には、
図5に示す洗濯機のための複数のブロックを組み合わせて規定されたアプリケーションのための実行内容宣言1200が表されている。実行内容宣言1200は、複数のブロック1201、及び、各ブロック1201の実行に必要なデバイスに関する情報1202、及び、各ブロック1201が実行される順番の情報1203を含む。
【0070】
なお、実行内容宣言1200は、デバイスに関する情報1202を含まなくてもよい。その場合、複数のブロック1201の情報から、受け取った施設情報が示す施設で該当ブロックを実行可能なデバイスを、デバイスマネージャ200が検索してデバイス割付けを行う必要がある。
【0071】
なお、
図10では、デバイスに関する情報1202は、デバイス300の型番を示しているが、これに限定されない。デバイスに関する情報1202は、ブロックに割付可能なデバイス300の条件を示すことができれば、どのような情報であってもよい。例えば、デバイスに関する情報1202は、複数の型番を含んでもよいし、デバイスの種別、使用目的、配置場所、又は、これらの任意の組み合わせのみを含んでもよい。
【0072】
(ステップS214)
デバイスマネージャ200は、実行内容宣言に含まれる各ブロックに対して、施設2a~2dを特定可能な情報を基にして、デバイスマネージャ200に紐付けられているデバイス300を割り付ける。例えば、デバイスマネージャ200は、
図10に示す複数のブロック1201の各々に、
図9のデバイスデータベース1100に、受け取った施設情報が示す施設に接続済として登録されている、型番WM-0001を有するデバイスDEV001を割り付ける。なお、デバイス300の稼働状態又はクラウドへの接続状態が管理されている場合には、稼働中のデバイス300の割り付けが禁止されてもよい。
【0073】
なお、例えば
図10に示す複数のブロックが、受け取った施設情報が示す施設に接続済として登録されていない場合、すなわち、該当施設において対象デバイスが存在していない場合、デバイスマネージャ200は実行内容宣言されたアプリケーションの実行が不可であることをシーケンスマネージャ100に通知する。
【0074】
(ステップS215)
デバイスマネージャ200は、デバイス割り付けの結果をデバイス300に通知する。これにより、アプリケーションに含まれる複数のブロックが、それぞれ割り付けられたデバイス300に送信される。
【0075】
(ステップS216)
デバイス300は、ブロックの実行前にブロックを確認する。つまり、デバイス300は、ブロックを実行する前に、ブロックが実行されたときにデバイス300で問題が生じないかをチェックする。例えばデバイス300は、安全及び/又は効率上の問題をチェックする。
【0076】
そして、デバイス300は、確認結果に基づいて、ブロックを変更する。これにより、問題が生じないようにブロックが修正される。
【0077】
このような実行前確認処理について、
図11を参照しながら、さらに詳細に説明する。
図11は、実施の形態1における実行前確認処理のフローチャートを示す。
【0078】
(ステップS2165)
デバイス300は、アプリケーションに対応するルールを取得する。ここでは、ルールは、所定の2以上のブロックが所定の順番に実行されることを禁止する。例えば、デバイス300は、ルールデータベースを参照して、所定の順番で実行することが禁止される2以上のブロックを取得する。ルールデータベースは、例えばデバイス300に含まれてもよいし、シーケンスマネージャ100又はデバイスマネージャ200に含まれてもよい。
【0079】
所定の順番としては、例えば、第1のブロックの後に第2のブロックが位置する順番を用いることができる。より限定的には、所定の順番として、第1のブロックの直後に第2のブロックが位置する順番、つまり、第1のブロック及び第2のブロックが連続する順番が用いられてもよい。
【0080】
図12は、実施の形態1におけるルールデータベースの一例を示す。
図12のルールデータベース1300には、ルール1301~1303が登録されている。ルール1301~1303の各々は、連続して実行することが禁止される第1のブロック及び第2のブロックの情報を有する。例えば、ルール1301は、脱水ブロックの直後に攪拌ブロックが実行されることが禁止されることを示す。また例えば、ルール1302は、給水ブロックの直後に洗濯量検知ブロックが実行されることが禁止されることを示す。また例えば、ルール1303は、攪拌ブロックの直後に排水ブロックが実行されることが禁止されることを示す。
【0081】
このような所定の順番で実行されることが禁止される2以上のブロックとしては、例えば筐体21の内部空間、アクチュエータ22又は加熱器23を耐久温度に到達させる2以上のブロックが予め定められる。耐久温度とは、定格温度を意味し、許容される最大温度を示す。したがって、所定の順番で所定の2以上のブロックを用いてアクチュエータ22又は加熱器23が駆動されれば、筐体21の内部空間、アクチュエータ22又は加熱器23の温度は、許容されない温度に到達する。
【0082】
なお、
図12では、ルール1301~1303の各々は、連続して実行されることが禁止される第1のブロック及び第2のブロックを示しているが、これに限定されない。例えば、ルールは、不連続に実行されることが禁止される第1のブロック及び第2のブロックを示してもよい。また例えば、ルールは、連続して実行されることが禁止される3以上のブロックを示してもよい。また例えば、ルールは、さらに、第1のブロック及び/又は第2のブロックのパラメータの範囲を示してもよい。さらには、ルールは、多種多様なアプリケーションの開発に向けて広い範囲でブロックを利用可能に規定される。
【0083】
例えば、アクチュエータ22又は加熱器23は、筐体21の内部空間などのデバイス300の環境に応じて安全に駆動できるルールが変わり、ルールはアクチュエータ22又は加熱器23自体の性能のみに依存しない場合がある。したがって、いずれの環境でも安全に駆動するために、安全性を考慮する比重の高いルールになり、多種多様なアプリケーションの開発の余地が低減することになる。そこで、ルールは、アプリケーションと独立して、デバイス300等の情報と対応付けられてもよい。そのようなルールが用いられることで、安全性及び多種多様なアプリケーションの開発を両立できる。
【0084】
ルールは、アクチュエータ22又は加熱器23が安全に駆動できる範囲に関連する。安全に駆動できる範囲は、ブロックの開始条件又は終了条件を考慮された範囲であってもよい。第1のブロックと、第1のブロックの後に実行される第2のブロックを例に考える。第2のブロックの開始条件に達するまで、第1のブロックを実行することで、アクチュエータ22又は加熱器23の安全性に影響がある負荷かかる場合を想定したルールが設定され得る。つまり、ルールは、アクチュエータ22又は加熱器23の性能、ブロックの開始条件又は終了条件などに依存する。
【0085】
ルール1301~1303の各々は、さらに、種別と、製造者名と、を有する。これにより、デバイス300は、ルールデータベース1300から、ブロックで駆動されるアクチュエータ22又は加熱器23に対応するルールを取得することができる。例えば、デバイス300は、
図12のルールデータベース1300を参照して、WM-0001のためのルール1301~1303を取得する。
【0086】
(ステップS2166)
デバイス300は、アプリケーションに含まれる複数のブロックの順番が、ルールに示される2以上のブロックの所定の順番に該当するか否かを判定する。例えば、デバイス300は、アプリケーションにおいて第1のブロックの後に第2のブロックが実行されるか否かを判定する。
【0087】
ここで、複数のブロックの順番が所定の順番に該当しないと判定された場合(S2166のNo)、デバイス300は、以降のステップS2167をスキップして実行前確認処理を終了する。一方、複数のブロックの順番が所定の順番に該当すると判定された場合(S2166のYes)、デバイス300は、次のステップS2167に進む。
【0088】
(ステップS2167)
デバイス300は、アプリケーションに含まれる複数のブロックのそれぞれが実行される順番を変更して実行前確認処理を終了する。ブロックの順番の変更とは、(i)第1のブロックと第2のブロックとの間に新たなブロックを追加すること、(ii)第1のブロック又は第2のブロックを削除すること、(iii)第1のブロック又は第2のブロックの順番を、第2のブロックの後に第1のブロックが位置する順番、又は、第1のブロック及び第2にブロックの間に他のブロックが位置する順番に変更すること、又は、(iv)それらの任意の組み合わせを意味する。これらのブロックの順番の変更方法は、ルールに定義されてもよい。
【0089】
【0090】
図13は、実施の形態1におけるブロックの順番の変更(i)の一例を示す。
図13では脱水ブロック(第1のブロック)の後に攪拌ブロック(第2のブロック)が実行される場合に、脱水ブロックと攪拌ブロックとの間に停止ブロックが新たなブロックとして追加されている。これにより、脱水ブロックと攪拌ブロックとの間のドラム回転数の差異によるモータの負荷の増加を抑制することができ、アクチュエータ22の安全な駆動を実現することができる。
【0091】
図14Aは、実施の形態1におけるブロックの順番の変更(ii)の一例を示す。
図14Aでは、給水ブロック(第1のブロック)の後に洗濯量検知ブロック(第2のブロック)が実行される場合に、洗濯量検知ブロックが削除されている。これにより、洗濯物が濡れた状態で洗濯量が検知されることによる洗濯量の誤検知を抑制することができ、アクチュエータ22の安全な駆動を実現することができる。
【0092】
図14Bは、実施の形態1におけるブロックの順番の変更(iii)の一例を示す。
図14Bでは、給水ブロック(第1のブロック)の後に洗濯量検知ブロック(第2のブロック)が実行される場合に、給水ブロック及び洗濯量検知ブロックの順番が、洗濯量検知ブロックの後に給水ブロックが位置する順番に変更されている。これにより、洗濯物が濡れた状態で洗濯量が検知されることによる洗濯量の誤検知を抑制することができ、アクチュエータ22の安全な駆動を実現することができる。
【0093】
なお、ここでは、洗濯機のためのブロックの順番の変更について説明したが、他の装置についても同様にブロックの順番を変更することができる。
【0094】
例えば、炊飯器のためのアプリケーションに、所定条件を満たすスチームパラメータ(例えば最大量)及び継続時間パラメータ(例えば20分以上)を有する蒸らしブロック(第1のブロック)が含まれ、かつ、当該蒸らしブロックの後にさらに蒸らしブロック(第2のブロック)が連続して含まれる場合に、2つの蒸らしブロックの間に表示ブロックが新たなブロックとして挿入されてもよい。これにより、スチーム用の水容器に水を追加することをユーザに通知することができ、蒸らしブロックにおいてスチームヒータの空焚きを抑制することができ、継続的にスチームを与えることが可能になる。また、上記と同様に2つの蒸らしブロックが連続して含まれる場合に、後の蒸らしブロックが削除されてもよい。これにより、スチームヒータの空焚きを抑制することができる。
【0095】
また例えば、電子レンジのためのアプリケーションに、所定条件を満たす温度パラメータ(例えば200度以上)及び実行時間パラメータ(例えば10分以上)を有するオーブンブロック(第1のブロック)が含まれ、かつ、当該オーブンブロックの後にさらにオーブンブロック(第2のブロック)が連続して含まれる場合に、2つのオーブンブロックの間に停止ブロックが新たなブロックとして挿入されてもよい。これにより、加熱器の使い過ぎによる故障及び劣化を抑制することができる。また、電子レンジのためのアプリケーションに、オーブンブロックが含まれ、かつ、当該オーブンブロックの後に連続してマイクロ波ブロックが含まれる場合に、マイクロ波ブロックが削除されてもよい。これにより、オーブン用のトレイに対してマイクロ波を照射することでスパークが発生することを防ぐことができ、安全性を向上させることができる。また、電子レンジのためのアプリケーションに、焼くブロック(第1のブロック)が含まれ、当該焼くブロックの後に連続して蒸すブロック(第2のブロック)が含まれる場合に、焼くブロック及び蒸すブロックの順番が入れ替えられてもよい。これにより、焼くブロックが実行される前にスチームヒータを温めることができ、焼くブロックによる焼き工程の初期の段階からスチームを与えながら食材を焼くことが可能になる。
【0096】
(ステップS217)
デバイス300は、実行前確認の結果をデバイスマネージャ200に送信する。ブロックが変更されている場合には、変更されたブロックがデバイスマネージャ200に送信されてもよい。
【0097】
(ステップS218)
デバイスマネージャ200は、デバイス割り付けの結果をシーケンスマネージャ100に回答する。また、実行前確認においてブロックが変更されている場合には、変更されたブロックを含むアプリケーションがシーケンスマネージャ100に送信されてもよい。
【0098】
(ステップS220)
シーケンスマネージャ100は、デバイスマネージャ200からの割付結果通知を受けて、UI400を介してユーザに実行準備完了を通知する。
【0099】
(ステップS222)
UI400は、アプリケーションが実行されるデバイスの一覧を表示するとともに、ユーザからアプリケーション実行の確認の入力を受け付けるためのグラフィカルユーザインタフェース(GUI)を表示する。なお、UI400は、ユーザからデバイスの割り付けの変更を受け付けてもよい。また、UI400は、デバイスの一覧を表示しなくてもよい。
【0100】
(ステップS224)
UI400は、ユーザから実行確認の入力を受けて、デバイスマネージャ200にアプリ開始指示を送信する。デバイスマネージャ200は、アプリ開始指示をシーケンスマネージャ100に転送する。
【0101】
なお、ステップS220、S222、及びS224は、アプリケーションが実行される前にユーザに改めて情報を提供しているが、ユーザの作業が増える可能性があるため、省略されてもよい。
【0102】
以上により、アプリ実行前フェーズF200が終了する。
【0103】
[1.3.3 アプリ実行フェーズF300]
次に、アプリ実行フェーズF300について説明する。
【0104】
(ステップS310)
シーケンスマネージャ100は、アプリ開始指示を受けて、アプリケーションに含まれる複数のブロックの中から最初のブロック(第1ブロック)を選択する。そして、シーケンスマネージャ100は、選択した第1ブロックの実行指示をデバイスマネージャ200に送信する。
【0105】
なお、複数のブロックが連続して動作される場合、シーケンスマネージャ100は、複数のブロックの実行指示をまとめてデバイスマネージャ200に送信してもよい。
【0106】
デバイスマネージャ200は、シーケンスマネージャ100から受信した第1ブロックの実行指示に基づいて、第1ブロックに割り付けられたデバイス300に第1ブロックの実行指示を送信する。
【0107】
(ステップS312)
デバイスマネージャ200は、第1ブロックの実行指示を受けて、各デバイスのスケジュール(使用予定時間)を更新する。
【0108】
(ステップS314)
デバイス300は、第1ブロックの実行指示を受けて、第1ブロックを実行する。
【0109】
(ステップS316)
デバイス300は、第1ブロックの実行が完了したときに、完了通知をデバイスマネージャ200に送信する。なお、第1ブロックの実行中にエラーが発生した場合には、デバイス300は、エラー情報をデバイスマネージャ200に送信してもよい。また、デバイス300は、第1ブロックの実行中に、イベント情報をデバイスマネージャ200に送信してもよい。イベント情報としては、例えば、センサの出力値又は機器操作等を用いることができるが、これに限定されない。デバイスマネージャ200は、デバイス300から受信した完了通知及び/又は各種情報をシーケンスマネージャ100に転送する。
【0110】
(ステップS318)
シーケンスマネージャ100は、第1ブロックの完了通知を受けて、アプリケーションの進捗を更新し、次のブロック(第2ブロック)を選択する。また、シーケンスマネージャ100は、エラー情報を受信した場合に、エラー情報に対応する処理(例えば、1つ前のブロックに戻る、最初のブロックに戻る、待機等)を実行する。エラー情報に対応する処理の情報は、例えば、シーケンスマネージャ100に予め保持されてもよいし、UI400を介してユーザから受け付けられてもよい。また、シーケンスマネージャ100は、イベント情報を受信した場合に、イベント情報に対応する処理を実行する。例えば、イベント情報に水位センサの出力値が含まれる場合、シーケンスマネージャ100は、実行中のブロックに含まれる水位を表示するための水位パラメータを更新する。
【0111】
(ステップS320)
シーケンスマネージャ100は、選択した第2ブロックの実行指示をデバイスマネージャ200に送信する。
【0112】
なお、第2ブロックの実行指示は、第1ブロックの実行指示(S310)と同一のデバイスに対する指示でもよいし、異なるデバイスへの指示でもよい。
【0113】
なお、第2ブロックの実行指示は、第1ブロックの実行指示と同様に、複数のブロックの実行指示をまとめてデバイスマネージャ200に送信してもよい。
【0114】
以降の処理は第1ブロックのための処理(S312~S318)と同様であるので、図示及び説明を省略する。アプリケーションに含まれるブロックが順に実行され、最後のブロックの実行が完了すれば、アプリ実行フェーズF300が終了する。
【0115】
なお、ここでは、ブロックの実行は1つずつ順に指示されているが、これに限定されない。例えば、同一のデバイスが割り付けられた複数のブロックの実行は、まとめて指示されてもよい。その場合、あらかじめ各ブロックが機能実行のパラメータ範囲を満たすかの確認を行ったり、変更に対応するブロックを実行前にデバイス側にダウンロードしたりしてもよい。また、例えば、複数のデバイスに対して各々のブロック実行指示を行ってもよい。
【0116】
[1.4 効果など]
以上のように、ブロックを含むアプリケーションとルールデータベースとにより、多様多種なアプリケーションを開発可能な環境を提供し、その環境下で自由に開発したアプリケーションに対して、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23を安全に駆動することを可能にしている。言い換えると、アプリケーションを自由に開発可能な環境を提供するとともに、アプリケーションと独立して安全性を担保するための機能を提供できる。その結果、例えば、自由度の高い多様多種なアプリケーションの開発と、安全性を担保するためのルールデータベースの開発とを並行して作成することが可能になり、多様多種なアプリケーションを早期に開発することを可能にすることができる。
【0117】
また、アプリケーションの提供後においても、ルールデータベースを変更することで、より安全性を担保したアプリケーションへの変更も可能になる。また、事前に製造者が想定しない状況の改善が必要になった場合においても、多様多種なアプリケーション自体を変更せずとも、アプリケーションとは独立して、ルールデータベースを規定していることで、ルールデータベースを更新することで、全てのアプリケーションへの対応が可能になる。
【0118】
アプリケーション自体を変更せずに、アプリケーションが実行されたときの状態を検知することでエラー処理のルールベースを保持する対処方法も考えられる。しかし、この対処方法は、常にエラーの状態になった後に対処することになり、家電に負荷がかかる状況、又は安全性が担保できない状況になることを許容することを意味する。そこで、アプリケーションとは独立にルールデータベースを保有し、ルールデータを参照してアプリケーションの内容を変更することで、安全性を担保することを可能にしている。
【0119】
本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定され、かつ複数のブロックのそれぞれが実行される順番の情報を含むアプリケーションを取得し、2以上のブロックが所定の順番に実行されることを禁止する第1のルールを参照して、順番の情報が所定の順番に該当する場合には、複数のブロックのそれぞれが実行される順番を変更することでアプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
【0120】
これによれば、複数のブロックで規定されたアプリケーションに基づいてアクチュエータ22及び/又は加熱器23を駆動することができる。したがって、装置20の制御を抽象化したブロックを用いたアプリケーションの開発が可能となり、多種多彩なアプリケーションを製造者だけではなく、サードパーティも開発することができ、これらのアプリケーションを装置20で簡単に実行することが可能となる。さらに、アプリケーションに所定の2以上のブロックが所定の順番で含まれる場合に、アプリケーションに基づいてアクチュエータ22及び/又は加熱器23が駆動される前に、複数のブロックのそれぞれが実行される順番を変更することができる。したがって、所定の2以上のブロックが所定の順番で実行されることを禁止することができる。つまり、もしアプリケーション開発者が誤って所定の2以上のブロックを許容されない順番で実行するよう指示を行った場合でも、装置20を安全に制御することができないアプリケーションが実行されることを抑制することができる。したがって、アプリケーション開発者は、アクチュエータ22及び/又は加熱器23の安全性の担保よりもユーザに適することを重視したアプリケーションを作成した場合でも、アプリケーションで制御される装置20の安全性を向上させることができる。
【0121】
また例えば、本実施の形態における装置20において、所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示し、アプリケーションの変更において、制御部24は、順番の情報が所定の順番に該当する場合に、第1のブロックと第2のブロックとの間に、新たなブロックを追加することで、複数のブロックのそれぞれが実行される順番を変更してもよい。
【0122】
また例えば、本実施の形態における装置20において、所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示し、アプリケーションの変更において、制御部24は、順番の情報が所定の順番に該当する場合に、第1のブロック又は第2のブロックを削除することで、複数のブロックのそれぞれが実行される順番を変更してもよい。
【0123】
また例えば、本実施の形態における装置20において、所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示し、アプリケーションの変更において、制御部24は、順番の情報が所定の順番に該当する場合に、第1のブロック又は第2のブロックの順番を、第2のブロックの後に第1のブロックが位置する順番、又は、第1のブロック及び第2のブロックの間に他のブロックが位置する順番に変更することで、複数のブロックのそれぞれが実行される順番を変更してもよい。
【0124】
また例えば、本実施の形態における装置20において、アプリケーションは、複数のブロックの情報とそれぞれが実行される順番の情報を含み、ルールは、複数のブロックの中で少なくとも一つのブロックが実行できない情報を含む場合に、エラー情報として、本アプリケーションが開発できないこと、または、実行できないブロックの情報を開発者に提示してもよい。
【0125】
これらによれば、アプリケーションが実行される前に、新たなブロックを追加、第1のブロック若しくは第2のブロックを削除、又は、第1のブロック又は第2のブロックの順番を変更することで、第1のブロックの後に第2のブロックが実行されることを防ぐことができる。したがって、アプリケーションの開発者は、アクチュエータ22及び加熱器23が安全に駆動することを考慮する優先度を下げて自由にアプリケーションを開発ができる。さらに、アクチュエータ22及び加熱器23を制御する装置20に組み込まれるソフトウェアの開発者は、アプリケーション一つ一つの安全性を毎回チェックすることなくブロックの実行を許可することができ、複数のブロックが許容されない順番で実行されることを防止することができる。
【0126】
また例えば、本実施の形態における装置20において、第1のルールは、所定の2以上のブロックが所定の順番で実行されることでアクチュエータ22及び加熱器23の少なくとも1つが耐久温度に到達することを禁止してもよい。
【0127】
これによれば、アプリケーションが実行されたときにアクチュエータ22及び/又は加熱器23が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
【0128】
また例えば、本実施の形態における装置20は、内部空間を有する筐体21を備えてもよく、第1のルールは、所定の2以上のブロックが所定の順番で実行されることで内部空間が耐久温度に到達することを禁止してもよい。
【0129】
これによれば、アプリケーションが実行されたときに筐体21の内部空間が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
【0130】
(実施の形態1の変形例)
なお、上記実施の形態1では、システム1の処理について
図8を参照しながら説明したが、処理の流れについてはこれに限定されない。特に、詳細に説明している実行前確認(S216)について、実行前確認が行われるタイミング及び主体となるモジュールはこれに限定されない。そこで、システム1のシーケンス図のいくつかの変形例について、
図15A~
図15Eを参照しながら具体的に説明する。
【0131】
図15Aは、実施の形態1の変形例1におけるシステム1のシーケンス図である。
図15Aでは、実行前確認(S216)は、デバイス300が実行指示を受けて(S310)ブロックを実行する(S314)直前に、デバイス300によって行われる。
【0132】
これにより、デバイス300に組み込まれるソフトウェアは、ブロックの実行直前に実行前確認を行うというシンプルな構成とすることができる。すなわち、ステップS215及びS217を省略することができる。その結果、それらの処理を行うための機能及び通信APIをデバイス300に組み込む必要がなくなり、デバイス300に搭載されるマイコンの使用メモリ等を低減することが可能となる。
【0133】
なお、実行前確認の結果がデバイスマネージャ200及び/又はUI400に通知されてもよい。例えば、実行前確認を行った結果としてパラメータの変更又はブロックの実行停止指示が行われた場合に、デバイスマネージャ200又はUI400に確認結果が通知されてもよい。
【0134】
図15Bは、実施の形態1の変形例2におけるシステム1のシーケンス図である。
図15Bでは、実行前確認(S216)は、デバイスマネージャ200が割付結果通知(S218)を行う際に、そのままデバイスマネージャ200によって行われる。
【0135】
これにより、デバイス300に組み込まれるソフトウェアは、実行前確認(S216)の機能を含まなくてもよい。したがって、デバイス300が有するメモリの使用を抑えることができ、デバイス300のコストダウンにつながる。
【0136】
また、上記実施の形態1では、デバイス300によるブロック実行(S314)について、クラウドサーバ10に実装されたシーケンスマネージャ100からの指示によって行われる処理の流れを説明したが、ブロック実行(S314)が行われる形態についても、これに限定されない。
【0137】
例えば、シーケンスマネージャ100からの通知内容を、デバイス300内のメモリに保存し、装置20が有するUI又は端末30が有するUI400を通じたユーザからの直接の指示により、ブロックが実行されてもよい。すなわち、アプリケーションをデバイス内にダウンロードしておいて、ユーザが任意のタイミングでアプリケーションを実行する形態としてもよい。
【0138】
図15Cは、実施の形態1の変形例3におけるシステム1のシーケンス図である。
図15Cでは、アプリ実行フェーズF300において、シーケンスマネージャ100からデバイス300に、デバイス300で実行される1以上のブロックが通知される(S310C)。そして、デバイス300は、通知された1以上のブロックをメモリに保存する(S311C)。
【0139】
その後、デバイス300は、ユーザから、保存された1以上のブロックの実行の指示を受け付け(S312C)、1以上のブロックを第1ブロックから順に実行する(S314)。
【0140】
以上のように、ブロックをデバイス300に保存することで、デバイスマネージャ200とデバイス300との通信を介さずにデバイス300の制御が行えるため、クラウドサーバ10と装置20間の通信が不安定になることによってデバイス300の動作が停止したり遅延が生じたりするリスクを低減することができる。そのため、本変形例は、クラウドサーバ10との通信の信頼性が低い環境において、及び/又は、アプリケーション実行中のデバイスの動作停止や遅延が許容されないデバイス300において、より効果的である。
【0141】
なお、変形例3においても、実施の形態1と同様に、実行前確認(S216)は重要な意味を有するが、実行前確認(S216)が行われるタイミングや主体となるモジュールは
図15Cに限定されない。すなわち、変形例3は、変形例1又は2と組み合わされてもよい。
【0142】
図15Dは、実施の形態1の変形例4におけるシステム1のシーケンス図である。変形例4は、変形例1と変形例3との組み合わせに相当する。変形例4では、
図15Dに示すように、実行前確認(S216)は、デバイス300が実行指示を受けて(S312C)ブロックを実行する(S314)直前にデバイス300によって行われる。
【0143】
ブロックをデバイス300にダウンロードしておいて、ユーザが任意のタイミングでブロックを実行する場合、ブロックをダウンロードするタイミングと実行するタイミングが大きくずれる可能性が高まる。すなわち、ブロックをデバイス300にダウンロードしてから数日後、数か月後、又は数年後等にブロックが実行される場合が考えられる。その場合、ブロックがダウンロードされてからブロックが実行されるまでの間にデバイス300の劣化レベル等が変わる恐れもある。そのため、ブロックの実行が劣化レベルの影響を受けるデバイス300では、ブロックが実行される直前にデバイス300によって実行前確認が行われることで、劣化レベルに応じた実行前確認が可能となる。
【0144】
図15Eは、実施の形態1の変形例5におけるシステム1のシーケンス図である。変形例5は、変形例2と変形例3との組み合わせに相当する。変形例5では、
図15Eに示すように、実行前確認(S216)は、デバイスマネージャ200が割付結果通知(S218)を行う際に、そのままデバイスマネージャ200によって行われる。
【0145】
(実施の形態2)
次に、実施の形態2について説明する。本実施の形態では、アプリケーションが認証済みである場合に実行前確認がスキップされる点が上記実施の形態1と主として異なる。以下に、上記実施の形態1と異なる点を中心に本実施の形態について説明する。
【0146】
なお、本実施の形態におけるシステム1のハードウェア構成及び機能構成は、上記実施の形態1と同様であるので、図示及び説明を省略する。
【0147】
[2.1 処理]
本実施の形態では、上記実施の形態1における実行前確認のステップS216がステップS216Aに代わる点を除いて、上記実施の形態1の処理と同様である。したがって、実行前確認処理のステップS216Aについて
図16を参照しながら説明する。
【0148】
図16は、実施の形態2における実行前確認処理のフローチャートを示す。
【0149】
(ステップS2161A)
デバイス300は、アプリ認証情報を取得する。アプリ認証情報は、アプリケーションが認証済みである場合に認証済みであることを示す情報を含む。
【0150】
アプリケーションの認証は、例えばアプリケーションの品質を保証するための仕組みであり、アプリケーションの安全性及び/又は同一性(改ざんされていないこと)などの確認を可能とする。認証情報の付与されているアプリケーションの一例を説明する。アプリケーションのコードの変更履歴がパラメータ範囲の変更が行われなかったことを示す場合、アプリケーションに認証済みであることを示す情報が対応付けられている。
【0151】
(ステップS2162A)
デバイス300は、取得されたアプリ情報に基づいて、アプリケーションが認証済みであるか否かを判定する。ここで、アプリケーションが認証済みであると判定された場合(S2162AのYes)、デバイス300は、以降のステップS2165~ステップS2167をスキップして実行前確認処理を終了する。一方、アプリケーションが認証済みではないと判定された場合(S2162AのNo)、デバイス300は、次のステップS2165に進む。
【0152】
[2.2 効果など]
以上のように、本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定され、かつ複数のブロックのそれぞれが実行される順番の情報及び認証済みか否かを示す情報を含むアプリケーションを取得し、アプリケーションが認証済みであることを示す情報を含まない場合、所定の2以上のブロックが所定の順番で実行されることを禁止する第1のルールを参照して、順番の情報が所定の順番に該当する場合には、複数のブロックのそれぞれが実行される順番を変更することでアプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
【0153】
これによれば、実施の形態1と同様の効果を実現することができる。さらに、アプリケーションが認証済みでない場合に、アプリケーションの変更を伴う処理を行うことができ、アプリケーションが認証済みである場合に処理負荷の軽減を図ることができる。したがって、全てのアプリケーションに対するブロックの順番に対する判定処理を行う必要は無く、認証を行うことによる管理によって、処理負荷の軽減とともに、ブロックの順番に関する設計の基準ができ、アプリケーション開発者にとっては、より容易かつ安全な設計が可能となる。
【0154】
また例えば、本実施の形態における装置20において、アプリケーションが認証済みであることを示す情報を有する場合、第1のルールを参照せずに、アプリケーションを変更しなくてもよい。
【0155】
これによれば、アプリケーションが認証済みである場合に、ブロックを変更するための処理をスキップすることができ、処理負荷を軽減することができる。
【0156】
(実施の形態3)
次に、実施の形態3について説明する。本実施の形態では、アプリケーションの制作者と装置の製作者とが同一である場合に実行前確認がスキップされる点が上記実施の形態1と主として異なる。以下に、上記実施の形態1と異なる点を中心に本実施の形態について説明する。
【0157】
なお、本実施の形態におけるシステム1のハードウェア構成及び機能構成は、上記実施の形態1と同様であるので、図示及び説明を省略する。
【0158】
[3.1 処理]
本実施の形態では、上記実施の形態1における実行前確認のステップS216がステップS216Bに代わる点を除いて、上記実施の形態1の処理と同様である。したがって、実行前確認処理のステップS216Bについて
図17を参照しながら説明する。
【0159】
図17は、実施の形態3における実行前確認処理のフローチャートを示す。
【0160】
(ステップS2161B)
デバイス300は、アプリ制作者情報を取得する。アプリ制作者情報は、アプリケーションの制作者を示す。制作者は、アプリケーションを制作した会社、個人又は団体等を意味し、開発者又は著者と呼ばれる場合もある。
【0161】
(ステップS2163B)
デバイス300は、デバイス製作者情報を取得する。デバイス製作者情報は、デバイスの製作者を示す。製作者は、デバイス300(つまり装置20)を製作した会社、個人又は団体等を意味し、製造者と呼ばれる場合もある。
【0162】
(ステップS2164B)
デバイス300は、アプリケーションの制作者とデバイス300の製作者とが異なるか否かを判定する。アプリケーションの制作者が個人であり、デバイス300の製作者が会社である場合、デバイス300は、アプリケーションの制作者が属する会社とデバイス300の製作者とが一致すれば、アプリケーションの制作者とデバイス300の製作者とが同じであると判定してもよい。また、デバイス300は、アプリケーションの制作者がデバイス300の製作者の開発委託先であれば、アプリケーションの制作者とデバイス300の製作者とが同じであると判定してもよい。
【0163】
ここで、アプリケーションの制作者とデバイス300の製作者とが同じである場合(S2164BのNo)、デバイス300は、以降のステップS2165~ステップS2167をスキップして実行前確認処理を終了する。一方、アプリケーションの制作者とデバイス300の製作者とが異なる場合(S2164BのYes)、デバイス300は、次のステップS2165に進む。
【0164】
[3.2 効果など]
以上のように、本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定され、かつ複数のブロックのそれぞれが実行される順番の情報及び制作者を示す情報を含むアプリケーションを取得し、装置20の製作者を示す情報を取得し、アプリケーションの制作者と装置20の製作者とが異なる場合、所定の2以上のブロックが所定の順番で実行されることを禁止する第1のルールを参照して、順番の情報が所定の順番に該当する場合には、複数のブロックのそれぞれが実行される順番を変更することでアプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
【0165】
これによれば、実施の形態1と同様の効果を実現することができる。さらに、アプリケーションの制作者と装置20の製造者とが異なる場合に、アプリケーションの変更を伴う処理を行うことができ、アプリケーションの制作者と装置20の製造者とが同じ場合には、処理負荷の軽減を図ることができる。
【0166】
(実施の形態4)
次に、実施の形態4について説明する。本実施の形態では、装置の劣化レベルに対応するルールを用いて実行前確認が行われる点が上記実施の形態1と主として異なる。以下に、上記実施の形態1と異なる点を中心に本実施の形態について説明する。
【0167】
なお、本実施の形態におけるシステム1のハードウェア構成及び機能構成は、上記実施の形態1と同様であるので、図示及び説明を省略する。
【0168】
[4.1 処理]
本実施の形態では、上記実施の形態1における実行前確認のステップS216がステップS216Cに代わる点を除いて、上記実施の形態1の処理と同様である。したがって、実行前確認処理のステップS216Cについて
図18を参照しながら説明する。
【0169】
図18は、実施の形態4における実行前確認処理のフローチャートを示す。
【0170】
(ステップS2163C)
デバイス300は、デバイス劣化情報を取得する。デバイス劣化情報は、装置20に含まれるアクチュエータ22及び/又は加熱器23の劣化レベルを示す。劣化レベルの検出方法は、特に限定されず、例えばセンサによって検出されればよい。
【0171】
(ステップS2165C)
デバイス300は、劣化レベルに対応するルールを取得する。例えば、デバイス300は、ルールデータベースを参照して、ブロックが駆動するアクチュエータ22又は加熱器23の劣化レベルに対応するルールを取得する。
【0172】
なお、劣化レベルを決定する項目は、例えば、デバイス300に含まれるアクチュエータ22及び/又は加熱器23の使用回数、使用時間、又は稼働開始から現在まで使用日数である。これらの項目は、ユーザの使用に対して概ね比例関係で増えると想定される。よって、項目に対応する値が大きくなるごとに、劣化レベルが大きくなるようにルールが決定される。
【0173】
また、劣化レベルを決定する項目は、例えば、加熱器23の温度の加算値、又はアクチュエータ22及び/又は加熱器23の入力及び出力の再現度合である。加熱器23の温度の加算値とは、加熱器23が駆動されたときの温度を加算した値である。例えば、ブロック実行時の加熱器23の平均温度、中間温度、又は最大温度が用いられる。加熱器23の温度は、加熱器23の限界温度に対する実行温度の割合、加熱器23の限界温度に対する実行温度の差分であってもよい。
【0174】
アクチュエータ22及び/又は加熱器23の入力及び出力の再現度合とは、アクチュエータ22及び/又は加熱器23を駆動するための入力値とアクチュエータ22及び/又は加熱器23の出力との関係を参照して求められる。所定の入力に対する実際の出力値と、関係に規定された出力値との割合が用いられる。
【0175】
[4.2 効果など]
以上のように、本実施の形態における装置20は、アクチュエータ22及び加熱器23の少なくとも1つと、アクチュエータ22及び加熱器23の少なくとも1つを制御する制御部24と、を備え、制御部24は、アクチュエータ22及び加熱器23の少なくとも1つを駆動する複数のブロックで規定され、かつ複数のブロックのそれぞれが実行される順番の情報を含むアプリケーションを取得し、アクチュエータ22及び加熱器23の少なくとも1つが劣化しているか否かを示す劣化情報を取得し、劣化情報に対応する第1のルールであって2以上のブロックが所定の順番に実行されることを禁止する第1のルールを参照して、順番の情報が所定の順番に該当する場合には、複数のブロックのそれぞれが実行される順番を変更することでアプリケーションを変更し、変更されたアプリケーションに基づいて、アクチュエータ22及び加熱器23の少なくとも1つを駆動する。
【0176】
これによれば、実施の形態1と同様の効果を実現することができる。さらに、装置20の劣化情報に対応するルールを用いることができ、ブロックを用いることで、経年劣化していくデバイスのパフォーマンスを考慮しながら、アプリケーション側からのアクチュエータ22及び/又は加熱器23への駆動指示を実行し、アプリケーションで制御される装置20の安全性をより向上させることができる。
【0177】
(実施の形態5)
上記実施の形態1~4では、既に配信されているアプリケーションに含まれるブロックが、そのアプリケーションが実行される前に変更される。本実施の形態では、そのアプリケーションが変更されるタイミングが、アプリケーションが配信される前、つまり、そのアプリケーションが開発または制作される段階であって、その点で本実施の形態は上記実施の形態1~4とは異なる。以下、本実施の形態について、上記実施の形態1~4と異なる点を中心に、詳細に説明する。なお、本実施の形態は、アプリケーションの変更のタイミング以外については、上記実施の形態1~4と同様であってもよい。また、本実施の形態における各構成要素のうち、実施の形態1~4と同一の構成要素については、実施の形態1~4と同一の符号を付し、詳細な説明を省略する。
【0178】
[5.1 構成]
図19は、アプリケーションの開発に用いられる情報処理システムの構成例を示す図である。
【0179】
情報処理システム2000は、ブロックデータベース41と、ルールデータベース42と、開発ツール50と、複数の装置20および複数の端末30と、アプリ提供サーバ60と、シーケンスマネージャ100とを備える。例えば、情報処理システム2000に備えられるこれらの構成要素は、インターネットなどの通信ネットワークを介して接続される。
【0180】
ブロックデータベース41は、ブロックDBとも呼ばれ、複数の機能ブロックを含むブロック一覧を格納している記録媒体である。なお、これらの機能ブロックは、実施の形態1~4と同様、ブロックとも呼ばれる。ルールデータベース42は、ルールDBとも呼ばれ、複数のルールを格納している記録媒体である。なお、ルールデータベース42は、例えば
図12に示すルールデータベース1300と同様であってもよい。また、これらの記録媒体は、ハードディスク、RAM(Random Access Memory)、ROM(Read Only Memory)、または半導体メモリなどである。なお、このような記録媒体は、揮発性であっても不揮発性であってもよい。
【0181】
開発ツール50は、例えば、プロセッサ51と、メモリ52と、ディスプレイ53と、入力部54とを備えるコンピュータシステムである。プロセッサ51は、例えばメモリ52に格納されたインストラクション又はソフトウェアプログラムを実行することによって後述の各処理を実行し、ディスプレイ53に文字または画像などを表示する。ディスプレイ53は、例えば液晶ディスプレイ、プラズマディスプレイ、有機EL(Electro-Luminescence)ディスプレイなどであるが、これらに限定されない。入力部54は、例えばキーボード、タッチセンサ、タッチパッドまたはマウスなどとして構成されている。このような開発ツール50は、例えばアプリケーションの開発者によって利用され、複数の機能ブロックを含むシーケンスまたはアプリケーションを生成する。なお、本実施の形態では、この開発ツール50は、情報処理装置の一例である。
【0182】
アプリ提供サーバ60は、開発ツール50によって生成されたアプリケーションを、その開発ツール50から通信ネットワークを介して取得して保持する。そして、アプリ提供サーバ60は、端末30に備えられているUI400からの指示に応じて、保持しているアプリケーションをシーケンスマネージャ100にダウンロードする。
【0183】
図20は、ブロックデータベース41およびルールデータベース42のそれぞれに格納されている情報の一例を示す図である。
【0184】
ブロックデータベース41は、
図20の(a)に示すように、複数種の装置20のそれぞれについて、その種別の装置20を駆動するための機能ブロックの一覧を、上述のブロック一覧として格納している。例えば、ブロック一覧41a~41eが格納されている。ブロック一覧41aは、オーブンレンジを駆動するための機能ブロックFB11~FB14などを含む。ブロック一覧41bは、マルチクッカーを駆動するための機能ブロックFB21~FB24などを含む。これらの機能ブロックは、上記実施の形態1~4のブロックと同一または類似であってもよい。
【0185】
ルールデータベース42は、
図20の(b)に示すように、複数種の装置20のそれぞれについて、その種別の装置20に適用される少なくとも1つのルールからなるルール群を格納している。例えば、ルール群42a~42eが格納されている。ルール群42aは、オーブンレンジに適用されるルールR100およびR11~R13などを含む。ルール群42bは、マルチクッカーに適用されるルールR200およびR21~R23などを含む。また、ルール群42dは、洗濯機に適用されるルールR400およびR41~R43などを含む。これらのルールは、上記実施の形態1~4のルールと同一または類似であってもよい。
【0186】
ここで、オーブンレンジのルールR11~R13のそれぞれは、例えば、所定のメーカによって製造された所定の型式のオーブンレンジに適用される専用ルールである。同様に、マルチクッカーのルールR21~R23のそれぞれは、例えば、所定のメーカによって製造された所定の型式のマルチクッカーに適用される専用ルールである。同様に、洗濯機のルールR41~R43のそれぞれは、所定のメーカによって製造された所定の型式の洗濯機に適用される専用ルールである。具体的には、その専用ルールR41~R43のそれぞれは、例えば
図12に示すルール1301、1302、または1303であってもよい。
【0187】
一方、オーブンレンジのルールR100は、例えば、複数種のオーブンレンジのそれぞれに適用可能な、オーブンレンジの汎用ルールである。同様に、マルチクッカーのルールR200は、例えば、複数種のマルチクッカーのそれぞれに適用可能な、マルチクッカーの汎用ルールである。
【0188】
図21は、ルールデータベース42に含まれる汎用ルールの一例を示す図である。
【0189】
ルールデータベース42に格納されている洗濯機のルール群42dには、例えば
図21の(a)に示す汎用ルールR400が含まれている。この汎用ルールR400は、複数種の洗濯機のそれぞれに適用可能なルールであって、連続して実行することが禁止される第1のブロック及び第2のブロックの情報を有する。なお、その禁止されている第1のブロックと第2のブロックとの順番は、以下、非許容ブロック順とも呼ばれる。汎用ルールR400は、複数の非許容ブロック順を示していてもよい。例えば、汎用ルールR400は、脱水の機能ブロックの直後に攪拌の機能ブロックを実行することが禁止されていることを非許容ブロック順として示す。また、例えば、汎用ルールR400は、給水ブロックの直後に洗濯量検知ブロックを実行することが禁止されていることを非許容ブロック順として示す。また、例えば、ルールは、攪拌ブロックの直後に排水ブロックを実行することが禁止されていることを非許容ブロック順として示す。
【0190】
なお、脱水ブロックは、機能として脱水を洗濯機に実行させる機能ブロックであり、攪拌ブロックは、機能として攪拌を洗濯機に実行させる機能ブロックである。同様に、給水ブロックは、機能として給水を洗濯機に実行させる機能ブロックであり、洗濯量検知ブロックは、機能として洗濯量の検知を洗濯機に実行させる機能ブロックである。同様に、排水ブロックは、機能として排水を洗濯機に実行させる機能ブロックである。
【0191】
また、汎用ルールR400が適用される複数種の洗濯機は、複数の製造業者から提供されている洗濯機を含む。また、各製造業者が複数の型式の洗濯機を提供していれば、その複数種の洗濯機は、その複数の型式の洗濯機を含む。つまり、汎用ルールR400に示される非許容ブロック順は、製造業者および型式を問わず、どのような洗濯機にも適用される。
【0192】
また、その洗濯機の汎用ルールR400は、
図21の(b)に示すように、複数の製造業者のそれぞれの洗濯機に適用される非許容ブロック順を示していてもよい。例えば、汎用ルールR400は、製造業者「A社」から提供される複数の型式の洗濯機に適用される非許容ブロック順と、製造業者「B社」から提供される複数の型式の洗濯機に適用される非許容ブロック順となどを示す。
【0193】
このように、本実施の形態におけるルールは、実施の形態1~4と同様、所定の2以上のブロックが所定の順番で実行されることを禁止するルールである。そして、その所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、その所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示す。具体的には、その所定の順番は、第1のブロックの直後に、第2のブロックが位置する順番を示す。なお、本実施の形態におけるルールは、実施の形態1~4と同様、所定の2以上のブロックが所定の順番で実行されることで、アクチュエータ22及び加熱器23の少なくとも1つ、または筐体21の内部空間が耐久温度に到達することを禁止しているとも言える。
【0194】
[5.2 処理]
図22は、情報処理システム2000のシーケンス図である。
【0195】
(ステップS11)
まず、開発ツール50は、1つ以上の機能ブロックをインストールする。具体的には、開発ツール50は、ブロックデータベース41から1つ以上の機能ブロックをダウンロードによって取得する。例えば、開発ツール50は、オーブンレンジのブロック一覧41aを取得してもよく、そのブロック一覧41aの一部の機能ブロックのみを取得してもよい。そして、開発ツール50は、その取得された1以上の機能ブロックを、シーケンスの生成に利用可能な状態にする。
【0196】
ここで、ブロックデータベース41に格納されている各機能ブロックには、その機能ブロックに対応するデバイス情報が付加されていてもよい。このデバイス情報は、そのデバイス情報に対応する機能ブロックに応じて駆動する例えば装置20の製造業者、種別、型式、または型番などを示す。したがって、開発ツール50は、それらのデバイス情報に基づいて、1つ以上の機能ブロックをダウンロードしてもよい。例えば、開発ツール50は、同一の製造業者から提供されている各装置20を駆動するための1つ以上の機能ブロックをダウンロードしてもよく、調理の温めに用いられる各装置20を駆動するための1つ以上の機能ブロックをダウンロードしてもよい。
【0197】
(ステップS12)
次に、開発ツール50は、シーケンスを生成する。具体的には、開発ツール50は、操作者による入力部54への入力操作に応じて、ダウンロード済みの1以上の機能ブロックを用いてシーケンスを生成する。なお、操作者は、シーケンスであるアプリケーションの開発者であってもよい。本実施の形態では、開発ツール50は、このステップS12において、上述のルールを参照し、そのルールに基づいてアプリケーションを変更する。
【0198】
(ステップS13)
次に、開発ツール50は、生成されたシーケンスのアップロードを行う。具体的には、開発ツール50は、操作者による入力部54への入力操作に応じて、生成されたシーケンスをアプリ提供サーバ60に送信するための送信情報を、そのシーケンスの内容に基づいて生成し、その送信情報をアプリ提供サーバ60に送信する。この送信情報は、例えばJSON(JavaScript Object Notation)などであってもよい。これにより、そのシーケンスがアプリ提供サーバ60に送信されて、アプリケーションとしてアプリ提供サーバ60に格納される。
【0199】
(ステップS14)
次に、端末30のユーザは、その端末30のUI400を操作することによって、アプリ提供サーバ60にアクセスし、アプリ提供サーバ60に格納されているアプリケーションの一覧を閲覧する。そして、UI400は、そのユーザによる操作に応じて、一覧からアプリケーションを選択し、そのアプリケーションのダウンロードをアプリ提供サーバ60に要求する。
【0200】
(ステップS15)
アプリ提供サーバ60は、UI400からのダウンロードの要求を受け付けると、そのユーザに紐づくシーケンスマネージャ100に、選択されたアプリケーションをダウンロードする。
【0201】
図23は、開発ツール50の全体的な処理動作を示すフローチャートである。具体的には、
図23に示すフローチャートは、
図22のシーケンスにおけるステップS11およびS12の詳細な処理動作を示す。
【0202】
(ステップS21)
開発ツール50は、まず、例えば洗濯機などの装置20を駆動するための複数の機能ブロックをインストールする。
【0203】
(ステップS22)
次に、開発ツール50は、操作者による入力部54への入力操作に応じて、機能ブロックの配置処理を行う。すなわち、開発ツール50は、ステップS21でインストールされた複数の機能ブロックをディスプレイ53に表示し、操作者による入力部54への入力操作に応じて、その表示されている複数の機能ブロックから、1つの機能ブロックを選択する。そして、開発ツール50は、操作者による入力部54への入力操作に応じて、その機能ブロックをディスプレイ53上のシーケンス生成画面における選択ブロック領域に配置する。シーケンス生成画面については、
図26を用いて後述する。つまり、操作者は、複数の機能ブロックのうちの1つの機能ブロックをその選択ブロック領域にドラッグ&ドロップする。
【0204】
(ステップS23)
次に、開発ツール50は、操作者による入力部54への入力操作に応じて、ステップS22で配置された機能ブロックのパラメータ設定処理を行う。すなわち、開発ツール50は、上述のシーケンス生成画面におけるパラメータ設定領域に、その機能ブロックに用いられるパラメータの内容を受け付けるための受付画像を表示する。そして、開発ツール50は、操作者による入力部54への入力操作に応じて、そのパラメータの内容を受け付けて、そのパラメータの内容をパラメータ設定領域に表示する。これにより、その機能ブロックに対してパラメータが設定される。
【0205】
(ステップS24)
次に、開発ツール50は、洗濯機などの装置20に適用されるパラメータルールを参照し、そのステップS23で設定されたパラメータが、そのパラメータルールに示されるパラメータ範囲外、すなわち非許容範囲外であるか否かを判定する。
【0206】
(ステップS25)
開発ツール50は、ステップS24でパラメータが非許容範囲外ではないと判定すると(ステップS24のNo)、パラメータ設定サポート処理を行う。このパラメータ設定サポート処理では、開発ツール50は、操作者にエラーを提示するエラー提示処理、または、パラメータの自動修正処理を行う。パラメータの自動修正処理では、開発ツール50は、非許容範囲のパラメータを許容範囲内のパラメータに変更することによって、その機能ブロックを変更する。エラー提示処理では、開発ツール50は、例えば、直前のステップS23で設定されたパラメータが非許容範囲内であることを示すメッセージをエラーとしてディスプレイ53に表示し、そのパラメータの変更を操作者に促す。そして、開発ツール50は、ステップS25の処理が行われた後には、ステップS23からの処理を繰り返し行う。
【0207】
なお、ステップS25においてパラメータの自動修正処理が行われた後に、ステップS23の処理が行われる場合には、そのステップS23では、開発ツール50は、その自動修正処理によって変更された後のパラメータをパラメータ設定領域に表示する。一方、ステップS25においてエラー提示処理が行われた後に、ステップS23の処理が行われる場合には、そのステップS23では、開発ツール50は、上述と同様、再び、操作者による入力部54への入力操作に応じて、そのパラメータの内容を受け付ける。これにより、その機能ブロックに対してパラメータが変更される。つまり、機能ブロックが変更される。
【0208】
(ステップS26)
開発ツール50は、ステップS24でパラメータが非許容範囲外であると判定すると(ステップS24のYes)、さらに、そのステップS22で配置された機能ブロックの接続が許可されている否かを判定する。つまり、開発ツール50は、洗濯機などの装置20に適用されるルールを参照し、そのステップS22で配置された機能ブロックと、既に配置されている機能ブロックとの順番が、そのルールに示される非許容ブロック順に該当するか否かを判定する。例えば、ステップS22では、選択ブロック領域に既に配置されている他の機能ブロックである既存ブロックの直前または直後に、機能ブロックが配置される。その結果、機能ブロックは、その既存ブロックに接続された状態で配置される。つまり、機能ブロックによる装置20の処理と、既存ブロックによる装置20の処理とが連続して実行されるように、その機能ブロックが配置される。この場合、開発ツール50は、洗濯機などの装置20に適用されるルールを参照することによって、その機能ブロックと既存ブロックとの接続が許可されているか否かを判定する。具体的には、開発ツール50は、その機能ブロックと既存ブロックとの順番が、ルールに示される非許容ブロック順に該当していれば、それらのブロックの接続が許可されていないと判定する。一方、開発ツール50は、その機能ブロックと既存ブロックとの順番が、ルールに示される何れの非許容ブロック順にも該当しなければ、それらのブロックの接続が許可されていると判定する。
【0209】
(ステップS27)
開発ツール50は、ステップS26で接続が許可されていないと判定すると(ステップS26のNo)、接続サポート処理を行う。この接続サポート処理では、開発ツール50は、操作者にエラーを提示する接続のエラー提示処理、または、接続の自動修正処理を行う。そして、開発ツール50は、ステップS22からの処理を繰り返し行う。
【0210】
なお、ステップS27において接続の自動修正処理が行われた後に、ステップS22の処理が行われる場合には、そのステップS22では、開発ツール50は、その自動修正処理によって接続し直された2以上の機能ブロックを選択ブロック領域に表示する。一方、ステップS27においてエラー提示処理が行われた後に、ステップS22の処理が行われる場合には、そのステップS22では、開発ツール50は、上述と同様、再び、操作者による入力部54への入力操作に応じて、機能ブロックを配置し直す。また、ステップS27からステップS22の処理が繰り返される場合には、開発ツール50は、機能ブロックのパラメータは既に許容範囲内に設定されているため、ステップS22以降のステップS23~S25の処理をスキップしてもよい。
【0211】
(ステップS28)
開発ツール50は、ステップS26で接続が許可されていると判定すると(ステップS26のYes)、さらに、操作者による入力部54への入力操作に応じて、シーケンスの生成が完了したか否かを判定する。ここで、開発ツール50は、シーケンスの生成が完了していないと判定すると(ステップS28のNo)、ステップS22からの処理を繰り返し行う。このときには、開発ツール50は、ステップS21でインストールされた複数のブロックから新たなブロックを、操作者による入力部54への入力操作に応じて選択して、上述の選択ブロック領域に配置する。
【0212】
(ステップS29)
開発ツール50は、ステップS28でシーケンスの生成が完了したと判定すると(ステップS28のYes)、さらに、生成されたシーケンス全体の流れが許可されているか否かを判定する。例えば、そのシーケンスの中で、第1の機能ブロックよりも前または後に第2の機能ブロックが配置されている。一方、洗濯機などの装置20に適用される組み合わせルールでは、その第1の機能ブロックと第2の機能ブロックとの組み合わせは、許可されていない。このような場合、開発ツール50は、その生成されたシーケンス全体の流れが許可されていないと判定する。あるいは、洗濯機などの装置20に適用される組み合わせルールでは、その第1の機能ブロックよりも前または後には、第2の機能ブロックが配置されていることが求められている。このような場合、開発ツール50は、その生成されたシーケンス全体の流れが許可されていると判定する。
【0213】
(ステップS30)
開発ツール50は、ステップS29でシーケンス全体の流れが許可されていないと判定すると(ステップS29のNo)、配置サポート処理を行う。この配置サポート処理では、開発ツール50は、操作者にエラーを提示するエラー提示処理、または、機能ブロックの配置の自動修正処理を行う。そして、開発ツール50は、ステップS22からの処理を繰り返し行う。
【0214】
なお、ステップS30において配置の自動修正処理が行われた後に、ステップS22の処理が行われる場合には、そのステップS22では、開発ツール50は、その自動修正処理によって配置し直された2以上の機能ブロックを選択ブロック領域に表示する。また、ステップS30からステップS22の処理が繰り返される場合には、開発ツール50は、機能ブロックのパラメータは既に許容範囲内に設定されているため、ステップS22以降のステップS23~S25の処理をスキップしてもよい。また、開発ツール50は、機能ブロックの接続は既に許可されているため、ステップS26およびS27の処理をスキップしてもよい。さらに、開発ツール50は、ステップS28の処理もスキップしてもよい。
【0215】
図24は、接続の自動修正処理の一例を示すフローチャートである。
【0216】
図23に示す例では、1つの機能ブロックが選択されて配置されるたびに、その機能ブロックの接続に対する判定と自動修正処理とが行われる。しかし、本開示では、その例に限定されることなく、開発ツール50は、
図24に示すフローチャートにしたがって各処理を行ってもよい。
【0217】
(ステップS41)
開発ツール50は、操作者による入力部54への入力操作に応じて、例えば洗濯機などの装置20を駆動するためのN個(Nは2以上の整数)の機能ブロックからM個(Mは2以上かつN以下の整数)の機能ブロックを選択する。つまり、開発ツール50は、制御対象機器である装置20に備えられているアクチュエータ22及び加熱器23の少なくとも1つを駆動するためのN個の機能ブロックから、操作者による入力部54への入力操作に応じて、M個の機能ブロックのそれぞれを選択ブロックとして選択する。
【0218】
(ステップS42)
次に、開発ツール50は、選択されたM個の機能ブロックのそれぞれを、上述の選択ブロック領域に順序付けて配置することによって、シーケンス、すなわちアプリケーションを生成する。つまり、開発ツール50は、少なくともM個の選択ブロックのそれぞれが実行される順番を、操作者による入力部54への入力操作に応じて設定することで、少なくともM個の選択ブロックを含み、かつ、その順番の情報を含むアプリケーションを生成する。なお、このアプリケーションに含まれるM個の選択ブロックのそれぞれは、アクチュエータ22及び加熱器23の少なくとも1つを駆動するためのパラメータを含んでいてもよい。
【0219】
(ステップS43)
次に、開発ツール50は、M個の機能ブロックのそれぞれが洗濯機を駆動するためのブロックであれば、洗濯機に適用されるルールを参照する。例えば、開発ツール50は、ステップS42で生成されたアプリケーションが複数種の洗濯機に適用される場合には、汎用ルールR400を参照する。また、開発ツール50は、ステップS42で生成されたアプリケーションが所定の型式の洗濯機に適用される場合には、専用ルールR41~R43のうちのその型式の洗濯機に対応付けられているルールを参照する。つまり、開発ツール50は、ステップS42で生成されるアプリケーションが、制御対象機器専用のアプリケーションか、その制御対象機器と、その制御対象機器以外の機器とに適用される汎用のアプリケーションかを判定する。そして、開発ツール50は、所定の2以上のブロックが所定の順番で実行されることを禁止する複数のルール候補のうちの、そのアプリケーションの判定結果に応じたルール候補を、上述のルールとして参照する。
【0220】
(ステップS44)
そして、開発ツール50は、ステップS42で設定されたM個の機能ブロックの順番が、上述のルールに示される非許容ブロック順に該当するか否かを判定する。つまり、開発ツール50は、アプリケーションに含まれるM個の機能ブロックの順番が、ルールに示される所定の順番に該当するか否かを判定する。
【0221】
(ステップS45)
ここで、開発ツール50は、そのM個の機能ブロックの順番が非許容ブロック順に該当すると判定すると(ステップS44のYes)、そのM個の機能ブロックの順番を変更する。つまり、開発ツール50は、所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、そのアプリケーションに含まれる順番の情報が所定の順番に該当する場合には、M個の選択ブロックのそれぞれが実行される順番を変更することでそのアプリケーションを変更する。そのM個の選択ブロックのそれぞれが実行される順番の変更は、(1)第1のブロックと第2のブロックとの間に新たなブロックを追加すること、(2)第1のブロック又は第2のブロックを削除すること、(3)第1のブロック又は第2のブロックの順番を、第2のブロックの後に第1のブロックが位置する順番、又は、第1のブロック及び第2のブロックの間に他のブロックが位置する順番に変更することを意味する。これらの順番の変更方法は、ルールに定義されていてもよい。
【0222】
(ステップS46)
そして、開発ツール50は、変更したアプリケーションを出力する。
【0223】
図25は、接続のエラー提示処理の一例を示すフローチャートである。
【0224】
図23に示す例では、1つの機能ブロックが選択されて配置されるたびに、その機能ブロックの接続に対する判定とエラー提示処理とが行われる。しかし、本開示では、その例に限定されることなく、開発ツール50は、
図25に示すフローチャートにしたがって各処理を行ってもよい。
【0225】
(ステップS41~S44)
開発ツール50は、
図24に示す例と同様、ステップS41~S44の処理を実行する。
【0226】
(ステップS51)
開発ツール50は、ステップS44でM個の機能ブロックの順番が非許容ブロック順に該当すると判定すると(ステップS44のYes)、そのM個の機能ブロックを自動的に変更することなく、ディスプレイ53にエラーを表示する。これにより、操作者にエラーが提示される。つまり、ステップS43、S44およびS51の処理では、開発ツール50は、ルールを参照することによって、エラーを提示する。具体的には、開発ツール50は、所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、アプリケーションに含まれる順番の情報がその所定の順番に該当する場合には、操作者に対してエラーを提示する。
【0227】
なお、開発ツール50は、エラーを提示するとともに、操作者に対して、複数の対処法を示し、操作者に対して対処法の選択を促しても良い。その際、開発ツール50は、複数の対処法のそれぞれについて、出力性能の違いを操作者に対して提示してもよい。また、その際、開発ツール50は、新たな機能ブロックの追加による第1の対処法と、選択ブロックを削除する第2の対処法と、2以上の機能ブロックの順番を変更する第3の対処法のうち、少なくとも二つ以上の対処法を提示してもよい。これにより、それらの対処法が、例えばアプリケーション開発者である操作者に提示される。その結果、それらの対処法を見たアプリケーション開発者である操作者は、開発ツール50の入力部54への入力操作を行うことによって、ステップS42で設定された順番を、その対処法にしたがって容易に変更することができる。
【0228】
(ステップS52)
そのエラーを見た操作者は、開発ツール50の入力部54への入力操作を行うことによって、ステップS42で設定された順番を変更する。また、操作者に対して複数の対処法のそれぞれが選択肢として提示されている場合は、操作者は、入力操作を行うことによって、それらの選択肢の中から任意の対処法を選択する。その結果、開発ツール50は、M個の機能ブロックの順番を変更する。つまり、開発ツール50は、エラーの提示を受けた操作者による入力操作に応じて、M個の選択ブロックのそれぞれが実行される順番を変更することでアプリケーションを変更する。そして、開発ツール50は、ステップS43からの処理を繰り返し実行する。
【0229】
(ステップS46)
開発ツール50は、ステップS44において、M個の機能ブロックの順番が非許容ブロック順に該当していないと判定すると(ステップS44のNo)、アプリケーションを出力する。このとき、ステップS52でアプリケーションが変更されていれば、変更されたアプリケーションが出力される。一方、ステップS52でアプリケーションが変更されていなければ、ステップS42で生成されたアプリケーションが出力される。
【0230】
なお、ステップS51の処理が繰り返される場合に、開発ツール50は、その繰り返しの回数に応じて、エラーへの対処法を提示してもよい。例えば、開発ツール50は、エラーの提示回数がK回(Kは2以上の整数)以上の場合には、そのエラーに対する複数の対処法を提示してもよい。つまり、開発ツール50は、エラーの提示回数がK回以上の場合には、上述の第1の対処法、第2の対処法、および第3の対処法のうちの少なくとも2つを操作者に提示する。
【0231】
[5.3 表示例]
図26は、シーケンス生成画面の一例を示す図である。
【0232】
開発ツール50は、上述のシーケンス生成画面をディスプレイ53に表示する。シーケンス生成画面は、パラメータ設定領域D1と、ブロック一覧領域D2と、対象装置領域D3と、選択ブロック領域D4とを含む。
【0233】
パラメータ設定領域D1には、機能ブロックに用いられるパラメータの内容を受け付けるための受付画像が表示される。
【0234】
ブロック一覧領域D2には、複数種の装置20のそれぞれのブロック一覧が表示される。これらのブロック一覧は、ブロックデータベース41からダウンロードされて開発ツール50にインストールされた機能ブロックを含む。
【0235】
対象装置領域D3には、複数種の装置20から選択された装置20の種別名が表示される。
【0236】
選択ブロック領域D4には、ブロック一覧領域D2に表示されるブロック一覧から選択された機能ブロックが配置されて表示される。その機能ブロックは、例えばアイコンとして表示される。
【0237】
例えば、操作者は、開発ツール50の入力部54に対する入力操作を行うことによって、アプリケーションが適用される装置20の種別名を決定する。開発ツール50は、その決定された種別名を対象装置領域D3に表示する。例えば、その決定された種別名「炊飯器」が表示される。続いて、操作者は、入力操作を行うことによって、ブロック一覧領域D2に表示されるブロック一覧から、決定された種別名「炊飯器」の装置20を駆動するための機能ブロックを選択する。そして、操作者は、入力操作を行うことによって、選択された機能ブロック、すなわち選択ブロックを選択ブロック領域D4に配置する。この機能ブロックの選択および配置は、ドラッグ&ドロップによって行われてもよい。この選択ブロック領域D4に配置される1つ以上の機能ブロックは、その配置されている順に実行されてもよい。例えば、
図26における左側から右側に向かって、それらの機能ブロックが順に実行される。つまり、アプリケーションは、その選択ブロック領域D4に配置されるM個の選択ブロックのそれぞれが実行される順番の情報と、そのM個の選択ブロックのそれぞれが実行されるタイミングの情報とを含む。
【0238】
機能ブロックが選択ブロック領域D4に配置されると、開発ツール50は、パラメータ設定領域D1に、その機能ブロックに用いられるパラメータの受付画像を表示する。
【0239】
【0240】
操作者は、
図26に示すブロック一覧領域D2に表示されている複数の装置20のそれぞれの種別名のうち、これから生成するアプリケーションが適用される装置20の種別名を、入力部54に対する入力操作を行うことによって選択する。開発ツール50は、その選択された種別名の装置20に対応するブロック一覧を、例えば
図27の(a)および(b)に示すように表示する。例えば、
図27の(a)に示すように、オーブンレンジが選択されると、開発ツール50は、そのオーブンレンジのブロック一覧を表示する。例えば、そのブロック一覧は、焼き、レンジ加熱、オーブン、グリル、蒸し、予熱、および過熱水蒸気のそれぞれの機能を実現する機能ブロックを含む。また、
図27の(b)に示すように、マルチクッカーが選択されると、開発ツール50は、そのマルチクッカーのブロック一覧を表示する。例えば、そのブロック一覧は、予熱、保温、炒め、圧力調理、炊き、蒸し、煮込み、混ぜる、および、ゆでるのそれぞれの機能を実現する機能ブロックを含む。
【0241】
操作者は、入力部54への入力操作を行うことによって、このように表示されるブロック一覧から機能ブロックを選択し、その選択された機能ブロックを、
図26に示す選択ブロック領域D4に配置する。つまり、開発ツール50は、このような入力操作に応じて、
図23に示すステップS22の処理、すなわち機能ブロックの配置処理を行う。
【0242】
図28は、機能ブロックの配置処理と、接続の自動修正処理の一例を示す図である。
【0243】
開発ツール50は、例えば
図28の(a)に示すように、ブロック一覧からドラッグ&ドロップされて選択ブロック領域D4に配置された機能ブロックを例えばアイコンとして表示する。具体的には、開発ツール50は、操作者による入力部54に対する入力操作に応じて、攪拌の機能ブロックFB42を、脱水の機能ブロックFB41の後に配置する。このように、開発ツール50は、操作者の入力操作に応じて、
図23に示すステップS22の機能ブロックの配置処理を行う。
【0244】
また、開発ツール50は、攪拌の機能ブロックFB42が配置された後には、
図23のステップS26のように、その機能ブロックFB42と、既に配置されている機能ブロックFB41との接続が許可されているか否かを判定する。すなわち、開発ツール50は、その機能ブロックFB42の接続に対する判定を、ルールを用いて行う。そして、開発ツール50は、その接続の自動修正処理を行う。
【0245】
具体的には、開発ツール50は、まず、その機能ブロックFB42に対応する洗濯機のルールを参照する。例えば、開発ツール50は、
図20の(b)に示すルールデータベース42のうちの、洗濯機のルール群42dを特定し、そのルール群42dに含まれる何れか1つのルールを参照する。そのルールは、汎用ルールR400であっても、専用ルールR41などであってもよい。
【0246】
そして、開発ツール50は、機能ブロックFB41および機能ブロックFB42の順番が、ルールに示される非許容ブロック順に該当すると判定すると、機能ブロックFB41および機能ブロックFB42の順番を変更する。例えば、開発ツール50は、
図28の(b)に示すように、機能ブロックFB41と機能ブロックFB42との間に停止の機能ブロックFB43を追加することによって、機能ブロックFB41および機能ブロックFB42の順番を変更する。これにより、洗濯機のアプリケーションが変更される。
【0247】
このように、本実施の形態では、開発ツール50は、アプリケーションに含まれる順番の情報が所定の順番に該当する場合に、第1のブロックと第2のブロックとの間に、新たなブロックを追加することで、M個の選択ブロックのそれぞれが実行される順番を変更する。例えば、
図28の例では、第1のブロックは、機能ブロックFB41であり、第2のブロックは、機能ブロックFB42である。そして、新たなブロックは、機能ブロックFB43である。また、開発ツール50は、第1のブロック及び第2のブロックの間に他のブロックが位置する順番に変更することで、M個の選択ブロックのそれぞれが実行される順番を変更してもよい。上述の他のブロックは、例えば、機能ブロックFB43であって、既に選択ブロック領域D4に配置されていたブロックであってもよい。
【0248】
図29Aは、機能ブロックの配置処理と、接続の自動修正処理の他の例を示す図である。
【0249】
開発ツール50は、例えば
図29Aの(a)に示すように、ブロック一覧からドラッグ&ドロップされて選択ブロック領域D4に配置された機能ブロックを例えばアイコンとして表示する。具体的には、開発ツール50は、操作者による入力部54に対する入力操作に応じて、洗濯量検知の機能ブロックFB45を、給水の機能ブロックFB44の後に配置する。このように、開発ツール50は、操作者の入力操作に応じて、
図23に示すステップS22の機能ブロックの配置処理を行う。
【0250】
また、開発ツール50は、洗濯量検知の機能ブロックFB45が配置された後には、
図23のステップS26のように、その機能ブロックFB45と、既に配置されている機能ブロックFB44との接続が許可されているか否かを判定する。すなわち、開発ツール50は、その機能ブロックFB45の接続に対する判定を、ルールを用いて行う。そして、開発ツール50は、その接続の自動修正処理を行う。
【0251】
具体的には、開発ツール50は、まず、その機能ブロックFB45に対応する洗濯機のルールを参照する。例えば、開発ツール50は、
図20の(b)に示すルールデータベース42のうちの、洗濯機のルール群42dを特定し、そのルール群42dに含まれる何れか1つのルールを参照する。そのルールは、汎用ルールR400であっても、専用ルールR41などであってもよい。
【0252】
そして、開発ツール50は、機能ブロックFB44および機能ブロックFB45の順番が、ルールに示される非許容ブロック順に該当すると判定すると、機能ブロックFB44および機能ブロックFB45の順番を変更する。例えば、開発ツール50は、
図29Aの(b)に示すように、機能ブロックFB45を削除することによって、機能ブロックFB44および機能ブロックFB45の順番を変更する。
【0253】
このように、本実施の形態では、開発ツール50は、アプリケーションに含まれる順番の情報が所定の順番に該当する場合に、第1のブロック又は第2のブロックを削除することで、M個の選択ブロックのそれぞれが実行される順番を変更する。例えば、
図29Aの例では、削除される第1のブロックまたは第2のブロックは、機能ブロックFB45である。
【0254】
図29Bは、機能ブロックの配置処理と、接続の自動修正処理のさらに他の例を示す図である。
【0255】
開発ツール50は、
図29Aの(a)に示す例と同様、
図29Bの(a)に示すように、洗濯量検知の機能ブロックFB45を、給水の機能ブロックFB44の後に配置する。
【0256】
そして、開発ツール50は、洗濯量検知の機能ブロックFB45が配置された後には、その機能ブロックFB45と、既に配置されている機能ブロックFB44との接続が許可されているか否かを判定する。すなわち、開発ツール50は、機能ブロックFB44および機能ブロックFB45の順番が、ルールに示される非許容ブロック順に該当するか否かを判定する。その結果、開発ツール50は、機能ブロックFB44および機能ブロックFB45の順番が、ルールに示される非許容ブロック順に該当すると判定すると、機能ブロックFB44および機能ブロックFB45の順番を変更する。例えば、開発ツール50は、
図29Bの(b)に示すように、機能ブロックFB44と機能ブロックFB45との順番を入れ替えることによって、機能ブロックFB44および機能ブロックFB44の順番を変更する。
【0257】
このように、本実施の形態では、開発ツール50は、アプリケーションに含まれる順番の情報が所定の順番に該当する場合に、第1のブロック又は第2のブロックの順番を、第2のブロックの後に第1のブロックが位置する順番に変更することで、M個の選択ブロックのそれぞれが実行される順番を変更する。例えば、
図29Bの例では、第1のブロックは、機能ブロックFB44であり、第2のブロックは、機能ブロックFB45である。
【0258】
また、
図28~
図29Bのように、本実施の形態では、接続の自動修正処理が行われる。したがって、アプリケーション開発者である操作者が、M個の機能ブロックの順番を非許容ブロック順に誤って配置しても、その順番は、非許容ブロック順と異なる順番に自動的に配置し直される。したがって、洗濯機の安全性を担保することができる。
【0259】
図30は、接続のエラー提示処理の一例を示す図である。
【0260】
開発ツール50は、
図28の例と同様、
図30に示すように、攪拌の機能ブロックFB42を、脱水の機能ブロックFB41の後に配置する。そして、開発ツール50は、攪拌の機能ブロックFB42が配置された後には、その機能ブロックFB41と、既に配置されている機能ブロックFB41との接続が許可されているか否かを判定する。すなわち、開発ツール50は、機能ブロックFB41および機能ブロックFB42の順番が、ルールに示される非許容ブロック順に該当するか否かを判定する。その結果、開発ツール50は、機能ブロックFB41および機能ブロックFB42の順番が、ルールに示される非許容ブロック順に該当すると判定すると、エラー提示処理を行う。具体的には、開発ツール50は、
図30に示すように、エラーメッセージE1をエラーとして表示する。このエラーメッセージE1には、脱水の機能ブロックの後に、攪拌の機能ブロックを接続することができないことが記されている。このようなエラー提示処理は、例えば
図25のステップS51において行われる。
【0261】
このように、本実施の形態では、開発ツール50は、所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、アプリケーションに含まれる順番の情報がその所定の順番に該当する場合には、操作者に対してエラーを提示する。そして、開発ツール50は、そのエラーの提示を受けた操作者による入力操作に応じて、M個の選択ブロックのそれぞれが実行される順番を変更することでアプリケーションを変更する。
【0262】
このようなエラーが提示されることによって、アプリケーション開発者である操作者は、非許容ブロック順に配置されたM個の機能ブロックを、非許容ブロック順と異なる順番に容易に配置し直すことができる。したがって、洗濯機の安全性を担保することができる。
【0263】
また、開発ツール50は、エラー提示処理では、さらに、そのエラーメッセージE1によって示されるエラーに対処するための対処法を表示してもよい。例えば、開発ツール50は、
図30に示すように、対処法C1を表示する。この対処法C1には、攪拌の機能ブロックの前に、停止の機能ブロックを挿入することによってエラーが解消されることが記されている。
【0264】
このような対処法が提示されることによって、アプリケーション開発者である操作者は、非許容ブロック順に配置されたM個の機能ブロックを、非許容ブロック順と異なる順番にさらに容易に配置し直すことができる。したがって、洗濯機の安全性を担保することができる。
【0265】
図31は、接続のエラー提示処理の他の例を示す図である。
【0266】
開発ツール50は、
図29Aまたは
図29Bの例と同様、
図31に示すように、洗濯量検知の機能ブロックFB45を、給水の機能ブロックFB44の後に配置する。そして、開発ツール50は、機能ブロックFB44および機能ブロックFB45の順番が、ルールに示される非許容ブロック順に該当すると判定すると、エラー提示処理を行う。具体的には、開発ツール50は、
図31に示すように、エラーメッセージE2をエラーとして表示する。このエラーメッセージE2には、給水の機能ブロックの後に、洗濯量検知の機能ブロックを接続することができないことが記されている。
【0267】
このようなエラーが提示されることによって、アプリケーション開発者である操作者は、非許容ブロック順に配置されたM個の機能ブロックを、非許容ブロック順と異なる順番に容易に配置し直すことができる。したがって、洗濯機の安全性を担保することができる。
【0268】
また、開発ツール50は、エラー提示処理では、さらに、そのエラーメッセージE2によって示されるエラーに対処するための複数の対処法を表示してもよい。例えば、開発ツール50は、
図31に示すように、対処法C1と対処法C2とを表示する。この対処法C1には、洗濯量検知の機能ブロックを削除することによってエラーが解消されることが記されている。さらに、開発ツール50は、その対処法C1を行うことによって受ける影響を、その対処法C1と共に表示してもよい。例えば、開発ツール50は、洗濯量の検知はできなくなるが、洗濯量検知の処理が省かれる分だけ、洗濯の全行程にかかる処理時間が短くなることを、その影響として表示してもよい。また、対処法C2には、給水の機能ブロックの前に、洗濯量検知の機能ブロックを配置することによってエラーが解消されることが記されている。さらに、上述と同様、開発ツール50は、その対処法C2を行うことによって受ける影響を、その対処法C2と共に表示してもよい。例えば、開発ツール50は、洗濯量の検知が適切に行われることを、その影響として表示してもよい。
【0269】
このように、本実施の形態では、開発ツール50は、エラーに対する複数の対処法を提示する。そして、開発ツール50は、そのエラーおよび複数の対処法の提示を受けた操作者による入力操作に応じて、M個の選択ブロックのそれぞれが実行される順番を変更することでアプリケーションを変更する。
【0270】
例えば、その複数の対処法は、以下に示す第1の対処法、第2の対処法および第3の対処法のうちの少なくとも2つを含む。つまり、ルールは、上述のように、所定の2以上のブロックが所定の順番で実行されることを禁止する。その所定の2以上のブロックは、例えば、第1のブロック及び第2のブロックを含み、その所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示す。このような場合、上述の第1の対処法は、第1のブロックと第2のブロックとの間に、新たなブロックを追加する方法である。具体的には、第1の対処法は、
図28に示すように、脱水の機能ブロックFB41と攪拌の機能ブロックFB42との間に、新たな停止の機能ブロックFB43を追加する方法である。また、上述の第2の対処法は、第1のブロック又は第2のブロックを削除する方法である。具体的には、
図29Aに示すように、給水の機能ブロックFB44又は洗濯量検知の機能ブロックFB45を削除する方法である。また、上述の第3の対処法は、第2のブロックの後に第1のブロックが位置する順番、又は、第1のブロック及び第2のブロックの間に他のブロックが位置する順番に変更する方法である。具体的には、第3の対処法は、
図29Bに示すように、給水の機能ブロックFB44の後に洗濯量検知の機能ブロックFB45が位置する順番を、洗濯量検知の機能ブロックFB45の後に給水の機能ブロックFB44が位置する順番に変更する方法である。または、第3の対処法は、
図28に示すように、脱水の機能ブロックFB41の後に攪拌の機能ブロックFB42が位置する順番を、脱水の機能ブロックFB41と攪拌の機能ブロックFB42との間に停止の機能ブロックFB43が位置する順番に変更する方法である。
【0271】
さらに、本実施の形態では、開発ツール50は、複数の対処法のそれぞれが行われた場合における、アクチュエータ22又は加熱器23の駆動によって作用される物体への影響、またはアプリケーションへの影響を提示する。
【0272】
このような複数の対処法と、それらの対処法による影響とが提示されることによって、アプリケーション開発者である操作者は、非許容ブロック順に配置されたM個の機能ブロックを、非許容ブロック順と異なる順番にさらに容易に配置し直すことができる。したがって、洗濯機の安全性を担保することができる。
【0273】
なお、エラーメッセージE1およびE2と、対処法C1~C3とは、シーケンス生成画面のうちの何れの領域に表示されてもよい。また、これらのエラーメッセージE1およびE2と、対処法C1~C3とはそれぞれ、ルールにおける非許容ブロック順に対応付けて示されていてもよい。また、上述の例では、エラーメッセージE1およびE2と、対処法C1~C3とが表示されるが、それらの提示形態はこれらの例に限らず、どのような形態であってもよい。例えば、音声でエラーなどが提示されてもよい。
【0274】
また、開発ツール50は、エラーの提示回数がK回(Kは2以上の整数)以上の場合には、エラーに対する複数の対処法を操作者に提示してもよい。つまり、開発ツール50は、
図25に示すステップS51の処理が繰り返される場合には、開発ツール50は、その繰り返しの回数に応じて、エラーの提示形態を変更してもよい。具体的には、開発ツール50は、エラーの提示回数がK回未満の場合には、エラーを提示して対処法を提示せず、エラーの提示回数がK回以上の場合には、エラーと共に対処法も表示する。
【0275】
【0276】
上述の例では、対処法はメッセージとして提示されるが、開発ツール50は、
図32に示すように、他の態様で対処法を提示してもよい。例えば、開発ツール50は、エラーを回避するために追加すべき機能ブロックがブロック一覧から容易に選択され得る態様で、その対処法を提示する。つまり、開発ツール50は、直前に選択されて選択ブロック領域D4に配置された機能ブロックの接続が許容されていないと判定すると、
図32に示すように、ブロック一覧を表示する。このブロック一覧では、接続が許容されないと判定された機能ブロックの直前に追加すべき機能ブロックのみが、そのブロック一覧に含まれる他の機能ブロックと異なる態様で表示される。具体的には、洗濯機のブロック一覧のうち、直前に追加すべき停止の機能ブロックのみが明るく表示され、他の機能ブロックは暗く表示される。これにより、アプリケーション開発者である操作者は、その停止の機能ブロックを容易に選択して選択ブロック領域D4に追加することができ、アプリケーションの変更の操作性を高めることができる。
【0277】
図33は、対処法のさらに他の提示例を示す図である。
【0278】
上述の例では、対処法はメッセージのみで提示されるが、開発ツール50は、
図33に示すように、矢印などのオブジェクトを用いて対処法を提示してもよい。例えば、開発ツール50は、機能ブロックFB37と機能ブロックFB39との順番が非許容ブロック順に該当すると判定すると、それらの機能ブロックの順番を逆にする対処法を、メッセージと矢印とで提示する。これにより、アプリケーション開発者である操作者は、それらの機能ブロックの順番を逆にしてエラーを容易に回避することができ、アプリケーションの変更の操作性を高めることができる。
【0279】
なお、本実施の形態では、アプリケーションに含まれるM個の機能ブロックが実行される順番について、連続して実行される2つの機能ブロックの順番を例に挙げて説明したが、この例に限らず、不連続に実行される2以上の機能ブロックの順番であってもよい。
【0280】
[5.4 効果など]
以上のように、本実施の形態では、ブロックを含むアプリケーションとルールデータベースとにより、多様多種でかつ安全なアプリケーションを開発可能な環境を提供することができる。したがって、その環境下で自由に開発したアプリケーションに対して、物理的に運動するアクチュエータ22、又は熱エネルギーを出力する加熱器23の安全な駆動することを可能にしている。その結果、例えば、自由度の高い多様多種なアプリケーションの開発と、安全性を担保するためのルールデータベースの開発とを並行して作成することが可能になり、多様多種でかつ安全なアプリケーションを早期に開発することを可能にすることができる。
【0281】
また、本実施の形態と、実施の形態1~4のうちの何れかの形態とを組み合わせれば、アプリケーションの提供後においても、ルールデータベースを変更することで、より安全性を担保したアプリケーションへの変更も可能になる。また、事前に製造者が想定しない状況の改善が必要になった場合においても、多様多種なアプリケーション自体を変更せずとも、アプリケーションとは独立して、ルールデータベースが規定されているため、そのルールデータベースを更新することで、全てのアプリケーションへの対応が可能になる。
【0282】
具体的には、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法である。そして、この情報処理方法では、(a)制御対象機器である装置20に備えられているアクチュエータ22及び加熱器23の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、(b)少なくともM個の選択ブロックのそれぞれが実行される順番を、操作者による入力操作に応じて設定することで、少なくともM個の選択ブロックを含み、かつ、その順番の情報を含むアプリケーションを生成し、(c)所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、その順番の情報がその所定の順番に該当する場合には、M個の選択ブロックのそれぞれが実行される順番を変更することで上述のアプリケーションを変更し、(d)その変更したアプリケーションを出力する。
【0283】
これによれば、M個のブロックで規定されたアプリケーションに基づいてアクチュエータ22及び/又は加熱器23を駆動することができる。したがって、装置20の制御を抽象化したブロックを用いたアプリケーションの開発が可能となり、多種多彩なアプリケーションを製造者だけではなく、サードパーティも開発することができ、これらのアプリケーションを装置20で簡単に実行することが可能となる。さらに、この開発時には、禁止されている順番で実行される所定の2以上のブロックがアプリケーションに含まれている場合には、M個の選択ブロックの順番が自動的に変更されることによって、そのアプリケーションが変更される。その結果、アプリケーションを、禁止されている順番で実行される所定の2以上のブロックを含まないアプリケーションに自動的に変更することができる。したがって、所定の2以上のブロックが所定の順番で実行されることを禁止することができる。つまり、もし、アプリケーション開発者である操作者が、M個の選択ブロックのそれぞれが実行される順番を、禁止されている順番に誤って設定した場合でも、装置20を安全に制御することができないアプリケーションが生成されることを抑制することができる。したがって、アプリケーション開発者が、アクチュエータ22及び/又は加熱器23のユーザに適することを重視したアプリケーションを作成または生成した場合でも、そのアプリケーションで制御される装置20の安全性を担保することができ、その安全性を向上させることができる。
【0284】
また、その所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、上述の所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示し、上記(c)では、上述の順番の情報が所定の順番に該当する場合に、第1のブロックと第2のブロックとの間に、新たなブロックを追加することで、M個の選択ブロックのそれぞれが実行される順番を変更してもよい。具体的には、その所定の順番は、第1のブロックの直後に、第2のブロックが位置する順番を示してもよい。また、そのM個の選択ブロックのそれぞれは、アクチュエータ22及び加熱器23の少なくとも1つを駆動するためのパラメータを含んでいてもよい。
【0285】
また、その所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、上述の所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示し、上記(c)では、上述の順番の情報が所定の順番に該当する場合に、第1のブロック又は第2のブロックを削除することで、M個の選択ブロックのそれぞれが実行される順番を変更してもよい。
【0286】
また、その所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、上述の所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示し、上記(c)では、上述の順番の情報が所定の順番に該当する場合に、第1のブロック又は第2のブロックの順番を、第2のブロックの後に第1のブロックが位置する順番、又は、第1のブロック及び第2のブロックの間に他のブロックが位置する順番に変更することで、M個の選択ブロックのそれぞれが実行される順番を変更してもよい。
【0287】
これらによれば、アプリケーションの開発時に、新たなブロックを追加、第1のブロック若しくは第2のブロックを削除、又は、第1のブロック又は第2のブロックの順番を変更することで、第1のブロックの後に第2のブロックが実行されることを防ぐことができる。したがって、アプリケーションの開発者、または、アクチュエータ22及び加熱器23を制御する装置20に組み込まれるソフトウェアの開発者は、アプリケーション一つ一つの安全性を毎回チェックすることなく、複数のブロックが許容されない順番で実行されることを防止することができる。
【0288】
また、ルールは、所定の2以上のブロックが所定の順番で実行されることでアクチュエータ22及び加熱器23の少なくとも1つが耐久温度に到達することを禁止してもよい。
【0289】
これによれば、アプリケーションが実行されたときにアクチュエータ22及び/又は加熱器23が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
【0290】
また、制御対象機器である装置20は、内部空間を有する筐体21を備え、ルールは、所定の2以上のブロックが所定の順番で実行されることで、その内部空間が耐久温度に到達することを禁止してもよい。
【0291】
これによれば、アプリケーションが実行されたときに筐体21の内部空間が耐久温度に到達することを抑制することができ、アプリケーションで制御される装置20の安全性を向上させることができる。
【0292】
また、上記(c)では、生成されるアプリケーションが、制御対象機器専用のアプリケーションか、その制御対象機器と、その制御対象機器以外の機器とに適用される汎用のアプリケーションかを判定し、所定の2以上のブロックが所定の順番で実行されることを禁止する複数のルール候補のうちの、そのアプリケーションの判定結果に応じたルール候補を、ルールとして参照してもよい。
【0293】
これによれば、専用のアプリケーションと汎用のアプリケーションのように、アプリケーションのバリエーションを増やすことができる。さらに、それらのバリエーションに適したルールが参照されるため、それらのバリエーションのそれぞれで、そのバリエーションのアプリケーションを適切に変更することができる。
【0294】
また、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法であって、エラーを提示してもよい。つまり、情報処理方法は、(a)制御対象機器である装置20に備えられているアクチュエータ22及び加熱器23の少なくとも1つを駆動するためのN個(Nは2以上の整数)のブロックから、操作者による入力操作に応じて、M個(Mは2以上かつN以下の整数)のブロックのそれぞれを選択ブロックとして選択し、(b)少なくともそのM個の選択ブロックのそれぞれが実行される順番を、操作者による入力操作に応じて設定することで、少なくともそのM個の選択ブロックを含み、かつ、その順番の情報を含むアプリケーションを生成し、(c)所定の2以上のブロックが所定の順番で実行されることを禁止するルールを参照して、上述の順番の情報が所定の順番に該当する場合には、操作者に対してエラーを提示し、(d)そのエラーの提示を受けた操作者による入力操作に応じて、M個の選択ブロックのそれぞれが実行される順番を変更することでアプリケーションを変更し、(e)その変更したアプリケーションを出力する。
【0295】
これによれば、アプリケーション開発者である操作者が、M個の選択ブロックのそれぞれが実行される順番に対して許容されない順番を誤って設定した場合には、エラーが提示されるため、装置20を安全に制御することができないアプリケーションが生成されることを抑制することができる。つまり、上述のようにアプリケーションが自動的に変更される場合と同様の効果を奏することができる。
【0296】
また、上記(c)では、さらに、エラーに対する複数の対処法を提示し、上記(d)では、そのエラーおよび複数の対処法の提示を受けた操作者による入力操作に応じて、M個の選択ブロックのそれぞれが実行される順番を変更することでアプリケーションを変更してもよい。つまり、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法であって、エラーを提示すると同時に複数の対処法を提示しても良い。
【0297】
これによれば、エラー提示を確認した操作者が、M個の選択ブロックのそれぞれが実行される順番を変更する手間を低減することが出来る。
【0298】
また、上述の所定の2以上のブロックは、第1のブロック及び第2のブロックを含み、所定の順番は、第1のブロックの後に第2のブロックが位置する順番を示す。この場合、上述の複数の対処法は、第1のブロックと第2のブロックとの間に、新たなブロックを追加する第1の対処法と、第1のブロック又は前記第2のブロックを削除する第2の対処法と、第2のブロックの後に第1のブロックが位置する順番、又は、第1のブロック及び第2のブロックの間に他のブロックが位置する順番に変更する第3の対処法とのうちの少なくとも2つを含んでいてもよい。
【0299】
これにより、操作者は、複数の対処法のうちの何れか1つの対処法にしたがって、エラーを適切に回避しながら、M個の選択ブロックのそれぞれが実行される順番を変更することができる。また、操作者が対処法を選択する際に、操作者がアプリケーションを作成する意図を満たす選択肢(すなわち対処法)を選択することができる。
【0300】
また、上記(c)では、さらに、複数の対処法のそれぞれが行われた場合における、アクチュエータ22又は加熱器23の駆動によって作用される物体への影響、またはそのアプリケーションへの影響を提示してもよい。つまり、本実施の形態における情報処理方法は、開発ツール50のようなコンピュータシステムによって実行される情報処理方法であって、エラーに対する対処法を提示するとともに、その対処法を実施することによってアプリケーションに及ぼす影響を同時に提示しても良い。
【0301】
これによれば、操作者が対処法を選択する際に、操作者がアプリケーションを作成する意図に沿って直観的に選択することが出来る。
【0302】
また、この情報処理方法では、上記(d)の後に、上記(c)および(d)を繰り返し実行し、(f)エラーの提示回数がK回(Kは2以上の整数)以上の場合には、エラーに対する複数の対処法を操作者に提示してもよい。
【0303】
これによれば、エラーの提示が繰り返される場合には、複数の対処法が提示されるため、操作者は、M個の選択ブロックのそれぞれが実行される順番を、それらの対処法にしたがって簡単に変更することができ、安全なアプリケーションをより簡単に生成することができる。
【0304】
(他の実施の形態)
以上、本開示の1つまたは複数の態様に係るシステムについて、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の1つまたは複数の態様の範囲内に含まれてもよい。
【0305】
また、上記各実施の形態において、シーケンスマネージャ100及びデバイスマネージャ200は、クラウドサーバ10に含まれていたが、これに限定されない。シーケンスマネージャ100及び/又はデバイスマネージャ200は、装置20に含まれてもよい。また、UI400は、端末30に含まれていたが、装置20に含まれてもよい。
【0306】
また、上記各実施の形態において、劣化情報に基づいて、アプリケーションが変更されてもよい。例えば、デバイス300は、複数の劣化レベルと複数のパラメータの変換方法とが対応付けられたパラメータ変換情報を参照して、劣化レベルに対応する変換方法を取得し、取得した変換方法を用いてブロックに含まれるパラメータを変換してもよい。変換方法としては、例えば、変換後の値で定義されてもよいし、変換前の値に適用される係数で定義されてもよい。
【0307】
また、上記各実施の形態では、実行前確認においてアプリケーションを変更し、その後アプリケーションが実行されていたが、これに限ったものではない。例えば、デバイス300の状態が想定と異なっていたときは、アプリケーションを変更せず、デバイスマネージャ200及び/又はシーケンスマネージャ100に実行中止(エラー)が通知されてもよい。
【0308】
また、上記各実施の形態で用いられたルールに限定されない。例えば、複数のブロックのそれぞれの実行により発生する熱量である第2のルールが利用されてもよい。この場合、制御部24は、アプリケーションが実行されたときに装置20の少なくとも一部が耐久温度に到達するか否かを判定してもよい。そして、制御部24は、装置20の少なくとも一部が耐久温度に到達すると判定された場合、複数のブロックのそれぞれが実行される順番を変更することでアプリケーションを変更してもよい。ここで、複数のブロックのそれぞれが、アクチュエータ22及び加熱器23の少なくとも1つを駆動するためのパラメータを含む場合は、制御部24は、第2のルールと、アプリケーションに含まれる複数のブロックと、複数のブロックが含むパラメータとを参照して、複数のブロックの終了時における装置20の少なくとも一部の温度を算出してもよい。
【産業上の利用可能性】
【0309】
複数の機能ブロックで規定されたアプリケーションを実行することができる家庭用電化製品等に利用できる。
【符号の説明】
【0310】
1 システム
2a、2b、2c、2d 施設
10 クラウドサーバ
11 プロセッサ
12 メモリ
20、20a、20b、20c、20d、20e、20f、20g、20h 装置
21 筐体
22 アクチュエータ
23 加熱器
24 制御部
30、30a、30b、30c、30d 端末
31 ディスプレイ
32 入力デバイス
41 ブロックデータベース
42、1300 ルールデータベース
50 開発ツール
51 プロセッサ
52 メモリ
53 ディスプレイ
54 入力部
60 アプリ提供サーバ
100 シーケンスマネージャ
200 デバイスマネージャ
300、300a、300b、300c、300d、300e、300f、300g、300h デバイス
400、400a、400b、400c、400d UI
1000、1201 ブロック
1001、1002、1003、1004、1005、1006 パラメータ
1100 デバイスデータベース
1101 デバイス情報
1200 実行内容宣言
1202 デバイスに関する情報
1203 順番の情報
1301、1302、1303 ルール
2000 情報処理システム
C1~C3 対処法
D1 パラメータ設定領域
D2 ブロック一覧領域
D3 対象装置領域
D4 選択ブロック領域
E1、E2 エラーメッセージ
F100 準備フェーズ
F200 アプリ実行前フェーズ
F300 アプリ実行フェーズ
R11~R13、R21~R23、R31~R33、R41~R43 専用ルール
R100、R200、R300、R400 汎用ルール