IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特開2024-98751開発装置、開発方法および開発プログラム
<>
  • 特開-開発装置、開発方法および開発プログラム 図1
  • 特開-開発装置、開発方法および開発プログラム 図2
  • 特開-開発装置、開発方法および開発プログラム 図3
  • 特開-開発装置、開発方法および開発プログラム 図4
  • 特開-開発装置、開発方法および開発プログラム 図5
  • 特開-開発装置、開発方法および開発プログラム 図6
  • 特開-開発装置、開発方法および開発プログラム 図7
  • 特開-開発装置、開発方法および開発プログラム 図8
  • 特開-開発装置、開発方法および開発プログラム 図9
  • 特開-開発装置、開発方法および開発プログラム 図10
  • 特開-開発装置、開発方法および開発プログラム 図11
  • 特開-開発装置、開発方法および開発プログラム 図12
  • 特開-開発装置、開発方法および開発プログラム 図13
  • 特開-開発装置、開発方法および開発プログラム 図14
  • 特開-開発装置、開発方法および開発プログラム 図15
  • 特開-開発装置、開発方法および開発プログラム 図16
  • 特開-開発装置、開発方法および開発プログラム 図17
  • 特開-開発装置、開発方法および開発プログラム 図18
  • 特開-開発装置、開発方法および開発プログラム 図19
  • 特開-開発装置、開発方法および開発プログラム 図20
  • 特開-開発装置、開発方法および開発プログラム 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024098751
(43)【公開日】2024-07-24
(54)【発明の名称】開発装置、開発方法および開発プログラム
(51)【国際特許分類】
   G06F 8/30 20180101AFI20240717BHJP
   G06F 8/36 20180101ALI20240717BHJP
【FI】
G06F8/30
G06F8/36
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023002417
(22)【出願日】2023-01-11
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】玉垣 裕
(72)【発明者】
【氏名】稲本 修治
(72)【発明者】
【氏名】見置 孝昌
(72)【発明者】
【氏名】阪谷 信幸
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC31
5B376BC38
5B376FA13
(57)【要約】
【課題】第1装置と第2装置との間でデータを共有する際に、第1装置で実行されるプログラムと第2装置で実行されるプログラムとの間の依存性を低減できる仕組みを提供する。
【解決手段】第1装置が取り扱うデータを参照可能な第2装置を含む制御システムに向けられた開発装置が提供される。開発装置は、第1ソースコードから第1装置で実行される第1プログラムを生成する第1プログラム生成部と、第2ソースコードから第2装置で実行される第2プログラムを生成する第2プログラム生成部と、第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、1または複数の第1データに対応付けられた、第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、1または複数の第1データを第2データに変換するためのデータ加工層を生成するデータ加工層生成部とを含む。
【選択図】図7
【特許請求の範囲】
【請求項1】
第1装置が取り扱うデータを参照可能な第2装置を含む制御システムに向けられた開発装置であって、
第1ソースコードから前記第1装置で実行される第1プログラムを生成する第1プログラム生成部と、
第2ソースコードから前記第2装置で実行される第2プログラムを生成する第2プログラム生成部と、
前記第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、前記1または複数の第1データに対応付けられた、前記第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、前記1または複数の第1データを前記第2データに変換するためのデータ加工層を生成するデータ加工層生成部とを備える、開発装置。
【請求項2】
前記第1データの付加情報および前記第2データの付加情報は、データが表す数値の単位を含む、請求項1に記載の開発装置。
【請求項3】
前記データ加工層生成部は、前記第1データの付加情報と前記第2データの付加情報とに基づいて、単位換算を行うための変換係数を決定し、前記第1データを前記第2データに変換するための関数を決定する、請求項2に記載の開発装置。
【請求項4】
前記第2データの付加情報は、前記第2データに対応付けられた前記1または複数の第1データを特定するための情報を含む、請求項1に記載の開発装置。
【請求項5】
前記データ加工層生成部は、前記第2データの付加情報に基づいて、前記1または複数の第1データを前記第2データに変換するための関数を決定する、請求項4に記載の開発装置。
【請求項6】
前記1または複数の第1データの付加情報および前記第2データの付加情報は、データが表す数値が意味する物理量を含む、請求項1に記載の開発装置。
【請求項7】
前記データ加工層生成部は、前記1または複数の第1データの付加情報に含まれる物理量に基づいて、前記第2データの付加情報に含まれる物理量を意味する値が算出されるように関数を決定する、請求項6に記載の開発装置。
【請求項8】
前記第2データの付加情報は、前記第2データに対応付けられた前記1または複数の第1データを前記第2データに変換するための任意に定義された関数の指定を含む、請求項1に記載の開発装置。
【請求項9】
第1装置が取り扱うデータを参照可能な第2装置を含む制御システムに向けられたコンピュータが実行する開発方法であって、
第1ソースコードから前記第1装置で実行される第1プログラムを生成するステップと、
第2ソースコードから前記第2装置で実行される第2プログラムを生成するステップと、
前記第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、前記1または複数の第1データに対応付けられた、前記第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、前記1または複数の第1データを前記第2データに変換するためのデータ加工層を生成するステップとを備える、開発方法。
【請求項10】
第1装置が取り扱うデータを参照可能な第2装置を含む制御システムに向けられた開発プログラムであって、前記開発プログラムはコンピュータに、
第1ソースコードから前記第1装置で実行される第1プログラムを生成するステップと、
第2ソースコードから前記第2装置で実行される第2プログラムを生成するステップと、
前記第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、前記1または複数の第1データに対応付けられた、前記第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、前記1または複数の第1データを前記第2データに変換するためのデータ加工層を生成するステップとを実行させる、開発プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、開発装置、開発方法および開発プログラムに関する。
【背景技術】
【0002】
産業オートメーションの分野において、産業システムの動作を制御するOT(Operational Technology)と、情報処理を担当するIT(Information Technology)とを連携させる取組が活発化している。例えば、制御装置が収集したデータをAI(Artificial Intelligence)などを用いて解析するようなことが想定されている。
【0003】
特開2019-159882号公報(特許文献1)は、PLC(Programmable Logic Controller)と、HMIとしてのプログラマブル表示器とを備えて、機械や設備等の制御対象の動作を制御するIPC(産業用PC)システムを開示する。
【0004】
特表2021-523494号公報(特許文献2)は、パーソナルコンピュータ(PC)デバイスを産業用PC(IPC)として用いる構成を開示する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2019-159882号公報
【特許文献2】特表2021-523494号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
OTとITとでは、取り扱うデータの精度および保持形式、ならびに、データが持つ意味レベルなどに差が生じ得る。例えば、OTにおいては、時間精度としてns単位までのデータを取り扱うことがあるのに対して、ITにおいては、ns単位より粗いデータで足りることも多い。
【0007】
OTおよびITが取り扱うデータの精度、保持形式、意味レベルなどは、様々な理由によって決まっており、両者で統一できないことも多い。その結果、OTおよびITのプログラムをそれぞれ作成する場合には、取り扱うデータの精度、保持形式、意味レベルなどを意識する必要がある。場合によっては、データ精度の調整、保持形式の変換、データに目的の意味を持たせるための変換といったデータ加工を行う必要が生じ得る。
【0008】
このようなデータ加工を行うために必要な手間が生じる。また、データの精度、保持形式、意味レベルなどの面でOTとITとの間に依存関係が生じ、プログラムの改変や移植などの障害になり得る。
【0009】
本発明は、第1装置と第2装置との間でデータを共有する際に、第1装置で実行されるプログラムと第2装置で実行されるプログラムとの間の依存性を低減できる仕組みを提供する。
【課題を解決するための手段】
【0010】
本発明のある局面に従えば、第1装置が取り扱うデータを参照可能な第2装置を含む制御システムに向けられた開発装置が提供される。開発装置は、第1ソースコードから第1装置で実行される第1プログラムを生成する第1プログラム生成部と、第2ソースコードから第2装置で実行される第2プログラムを生成する第2プログラム生成部と、第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、1または複数の第1データに対応付けられた、第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、1または複数の第1データを第2データに変換するためのデータ加工層を生成するデータ加工層生成部とを含む。
【0011】
この構成によれば、第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、1または複数の第1データに対応付けられた、第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、1または複数の第1データを第2データに変換するためのデータ加工層が生成されるので、第1プログラムと第2プログラムとの依存性を低減できる。
【0012】
第1データの付加情報および第2データの付加情報は、データが表す数値の単位を含んでもよい。この構成によれば、第1プログラムが取り扱う1または複数の第1データ、および、第2プログラムが取り扱う第2データが表す数値が何を示しているのかを特定できるので、数値の単位に応じたデータ加工層を生成できる。
【0013】
データ加工層生成部は、第1データの付加情報と第2データの付加情報とに基づいて、単位換算を行うための変換係数を決定し、第1データを第2データに変換するための関数を決定してもよい。この構成によれば、第1データと第2データとの間で、数値の単位を整合させるためのデータ加工層を生成できる。
【0014】
第2データの付加情報は、第2データに対応付けられた1または複数の第1データを特定するための情報を含んでもよい。この構成によれば、第2データを算出するために必要な1または複数の第1データを自動的に決定できる。
【0015】
データ加工層生成部は、第2データの付加情報に基づいて、1または複数の第1データを第2データに変換するための関数を決定してもよい。この構成によれば、1または複数の第1データを第2データに変換するためのデータ加工層を自動的に生成できる。
【0016】
1または複数の第1データの付加情報および第2データの付加情報は、データが表す数値が意味する物理量を含んでもよい。この構成によれば、データ加工層生成部は、1または複数の第1データのおよび第2データが表す数値の意味を自動的に取得できる。
【0017】
データ加工層生成部は、1または複数の第1データの付加情報に含まれる物理量に基づいて、第2データの付加情報に含まれる物理量を意味する値が算出されるように関数を決定してもよい。この構成によれば、物理量を整合させるためのデータ加工層を自動的に生成できる。
【0018】
第2データの付加情報は、第2データに対応付けられた1または複数の第1データを第2データに変換するための任意に定義された関数の指定を含んでいてもよい。この構成によれば、任意の関数を用いて、第2データを生成できる。
【0019】
本発明の別の局面に従えば、第1装置が取り扱うデータを参照可能な第2装置を含む制御システムに向けられたコンピュータが実行する開発方法が提供される。開発方法は、第1ソースコードから第1装置で実行される第1プログラムを生成するステップと、第2ソースコードから第2装置で実行される第2プログラムを生成するステップと、第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、1または複数の第1データに対応付けられた、第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、1または複数の第1データを第2データに変換するためのデータ加工層を生成するステップとを含む。
【0020】
本発明のさらに別の局面に従えば、第1装置が取り扱うデータを参照可能な第2装置を含む制御システムに向けられた開発プログラムが提供される。開発プログラムはコンピュータに、第1ソースコードから第1装置で実行される第1プログラムを生成するステップと、第2ソースコードから第2装置で実行される第2プログラムを生成するステップと、第1プログラムが取り扱う1または複数の第1データの名前および付加情報と、1または複数の第1データに対応付けられた、第2プログラムが取り扱う第2データの名前および付加情報とに基づいて、1または複数の第1データを第2データに変換するためのデータ加工層を生成するステップとを実行させる。
【発明の効果】
【0021】
本発明によれば、第1装置と第2装置との間でデータを共有する際に、第1装置で実行されるプログラムと第2装置で実行されるプログラムとの間の依存性を低減できる。
【図面の簡単な説明】
【0022】
図1】本実施の形態に従う制御システムの全体構成例を示す模式図である。
図2】本実施の形態に従う制御システムの機能構成例を示す模式図である。
図3】本実施の形態に従う制御処理ユニットのハードウェア構成例を示す模式図である。
図4】本実施の形態に従う情報処理ユニットのハードウェア構成例を示す模式図である。
図5】本実施の形態に従う開発装置のハードウェア構成例を示す模式図である。
図6】本実施の形態に従う制御システムが解決しようとする課題を説明するための図である。
図7】本実施の形態に従う制御システムが提供するソリューションの一例を説明するための図である。
図8】本実施の形態に従う制御装置がデータ加工を行う場合の構成例を示す模式図である。
図9】本実施の形態に従う制御システムにおいて付加情報を設定する処理例を説明するための図である。
図10】本実施の形態に従う制御システムにおいて付加情報を設定する処理例を説明するための図である。
図11図10に示す設定ファイルの生成手順の一例を説明するための図である。
図12図9図11に示す付加情報の設定により構成される制御装置の一例を説明するための図である。
図13】本実施の形態に従う制御システムにおいて設定されるアダプタ関数の適用例を示す図である。
図14】本実施の形態に従う制御システムにおいてアダプタ関数が付加情報として設定される一例を説明するための図である。
図15】本実施の形態に従う開発装置において作成されるアプリケーションのソースコードの一例を説明するための図である。
図16】本実施の形態に従う制御システムにおけるプログラム開発の全体処理の一例を説明するための図である。
図17】本実施の形態に従う開発装置において作成されるアプリケーションのソースコードの別の一例を説明するための図である。
図18】本実施の形態に従う制御システムにおけるプログラム開発の全体処理の別の一例を説明するための図である。
図19図16および図18に示すアクセス関数ライブラリの生成(ステップS4,S5)の詳細な処理手順を示すフローチャートである。
図20】本実施の形態に従う制御システムが提供するソリューションの別の一例を説明するための図である。
図21】本実施の形態に従う制御システムを設計システムと連携させる構成例を示す模式図である。
【発明を実施するための形態】
【0023】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0024】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0025】
図1は、本実施の形態に従う制御システム1の全体構成例を示す模式図である。図1を参照して、制御システム1は、制御処理ユニット100と、情報処理ユニット200とを含む制御装置10を含む。
【0026】
制御処理ユニット100は、第1装置に相当し、産業システムの動作を制御するOTとしての機能を提供する。情報処理ユニット200は、情報処理を担当するITとしての機能を提供する。
【0027】
制御処理ユニット100は、1または複数の機能ユニット12と接続している。1または複数の機能ユニット12は、センサ14などの入力デバイスからの入力信号を収集し、および/または、アクチュエータ16などの出力デバイスへ出力信号を出力する。制御処理ユニット100は、機能ユニット12が収集する入力信号に対応する入力データに基づいて、制御プログラムを実行することで出力データを算出する。出力データは、機能ユニット12は、出力データに対応する出力信号を出力する。
【0028】
情報処理ユニット200は、第2装置に相当し、1または複数のアプリケーションを実行する。実行されるアプリケーションは、制御処理ユニット100が取り扱う入力データおよび/または出力データを参照することもある。すなわち、情報処理ユニット200は、制御処理ユニット100が取り扱うデータを参照可能である。
【0029】
本明細書において、データを「参照」する処理は、データを参照する処理、データを更新する処理、および、データを新たに生成する処理を含み得る。
【0030】
制御処理ユニット100による制御プログラムの実行タイミングおよび実行周期と、情報処理ユニット200によるアプリケーションの実行タイミングおよび実行周期とは、互いに独立であってもよい。
【0031】
制御装置10には、制御プログラムおよびアプリケーションを開発するための開発装置300が接続されてもよい。開発装置300は、制御処理ユニット100および情報処理ユニット200を含む制御システム1に向けられたものである。
【0032】
制御システム1は、制御装置10に対するユーザ操作の受付およびユーザへの情報の提示を行う表示装置400を含んでいてもよい。表示装置400は、HMI(Human Machine Interface)として機能してもよい。
【0033】
制御処理ユニット100は、ネットワーク2を介して、上位システム500とデータ通信可能であってもよい。上位システム500は、例えば、製造実行システム(MES:Manufacturing Execution System)、データベース、AI(Artificial Intelligence)システムなどであってもよい。
【0034】
なお、制御処理ユニット100と情報処理ユニット200とが別体の構成例を示すが、両ユニットが一体化されていてもよい。
【0035】
本明細書において、「データの精度」は、データが表す数値の単位および尺度を意味する。データの精度として、例えば、m(メートル)、mm(ミリメートル)、s(秒)、ns(ナノ秒)などが挙げられる。
【0036】
本明細書において、「データの保持形式」は、データ保持に必要なバイト数およびデータ保持のための領域内における表現形式を意味する。データの保持形式として、例えば、32bit符号付整数、64bitIEEE754浮動小数点数、16bit固定小数点数、集合体(構造体や配列)などが挙げられる。
【0037】
本明細書において、「データの意味レベル」は、データが表す内容を意味する。データの意味レベルは、例えば、位置(原点からの距離)、移動量(位置の差分)、物体の大きさといった長さへの意味付け、および、センサが発生するパルス数、物体の数といった個数への意味付けなどが挙げられる。
【0038】
データの精度、保持形式、意味レベルを含むデータのプロパティを「データ形式」と総称することもある。
【0039】
本明細書において、「データ加工」は、あるデータ形式から別のデータ形式へ変換することを意味する。なお、データ加工は、データ形式に含まれるすべてのプロパティが変換されることだけではなく、一部のプロパティのみが変換されることも包含し得る。
【0040】
本明細書において、「データ加工層」は、データ加工を行うための処理を抽象化したものである。データ加工層は、データ加工を実現するための任意の実装形態を含む。
【0041】
データの精度および保持形式を変換する例としては、64bit整数で表されるナノ秒(ns)を意味するデータを32bit整数で表される秒(s)を意味するデータへの変換が挙げられる。
【0042】
意味レベルを変換する例としては、距離および時間から速度に変換といった単位系の変換、ならびに、コンベアの移動距離を出力ワーク数に変換といったデータの意味付けの変換などが挙げられる。具体例として、制御処理ユニット100(OT)においては、デバイス固有の量(例えば、サーボのパルス出力)が保持される一方で、情報処理ユニット200(IT)においては、一般的な単位系を持つ量またはアプリケーションで必要な意味を持つ量(例えば、ベルト位置、ベルト移動量、コンベアから出力されるワーク数)が必要となる。
【0043】
図2は、本実施の形態に従う制御システム1の機能構成例を示す模式図である。図2を参照して、制御処理ユニット100と情報処理ユニット200とは、内部バス4を介して、データ交換可能である。制御処理ユニット100は、1または複数の機能ユニット12(図1参照)およびフィールドバス6を介して、センサ14などの入力デバイスからの入力信号およびアクチュエータ16などの出力デバイスとデータ交換可能である。
【0044】
フィールドバス6は、産業用の通信プロトコルを採用することが好ましい。産業用の通信プロトコルとしては、例えば、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが挙げられる。
【0045】
制御処理ユニット100において、制御処理として、制御プログラム150が実行される。制御プログラム150が取り扱うデータ160は、センサ14から収集された入力データ、アクチュエータ16へ出力される出力データ、ならびに、制御プログラム150が参照および更新する内部データを含む。制御プログラム150が実行される環境において、データ160は変数を用いて指定できるようになっていてもよい。
【0046】
情報処理ユニット200において、1または複数のアプリケーションが実行される。図2には、2つのアプリケーション250-1,250-2(以下、「アプリケーション250」と総称することもある)が実行される例を示す。アプリケーション250-1,250-2が参照するデータ260-1,260-2(以下、「データ260」と総称することもある)は、制御プログラム150が取り扱うデータ160の少なくとも一部を反映するものであってもよい。
【0047】
但し、アプリケーション250が参照するデータ260は、アプリケーション250での取り扱いが容易なデータ形式にしたいという要求がある。
【0048】
本実施の形態は、制御処理ユニット100が取り扱うデータ(入力データ、出力データ、および内部データを含み得る)と、情報処理ユニット200が実行するアプリケーションが参照するデータとの間で、精度、保持形式、意味レベルなどを整合させるためのデータ加工を行う仕組みを提供する。
【0049】
<B.ハードウェア構成例>
次に、本実施の形態に従う制御装置10を構成する主要装置のハードウェア構成例について説明する。
【0050】
本実施の形態に従う制御装置10は、例えば、PLC(Programmable Logic Controller)である。但し、制御装置10は、産業用PC(Industrial Personal Computer)などのコンピュータであってもよい。
【0051】
(b1:制御処理ユニット100)
図3は、本実施の形態に従う制御処理ユニット100のハードウェア構成例を示す模式図である。図3を参照して、制御処理ユニット100は、CPU(Central Processing Unit)およびMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、USB(Universal Serial Bus)コントローラ110と、メモリカードインターフェイス112と、内部バスコントローラ116とを含む。
【0052】
プロセッサ102は、二次記憶装置108に格納された各種プログラムを読み出して、主記憶装置106に展開して実行することで、制御処理を実現する。チップセット104は、プロセッサ102と各コンポーネントとの間のデータ伝送などを制御する。
【0053】
二次記憶装置108は、制御処理を実現するための制御プログラム150を格納する。二次記憶装置108は、制御プログラム150を実行するための環境を提供するシステムプログラム152が格納してもよい。
【0054】
USBコントローラ110は、USBにより接続された任意の情報処理装置とのデータ交換を担当する。
【0055】
メモリカードインターフェイス112は、メモリカード114が着脱可能であり、メモリカード114に対してデータを読み書きする。
【0056】
内部バスコントローラ116は、内部バス4を介して、1または複数の機能ユニット12および情報処理ユニット200と接続する。
【0057】
(b2:情報処理ユニット200)
図4は、本実施の形態に従う情報処理ユニット200のハードウェア構成例を示す模式図である。図4を参照して、情報処理ユニット200は、CPUおよびMPUなどのプロセッサ202と、チップセット204と、主記憶装置206と、二次記憶装置208と、USBコントローラ210と、ネットワークコントローラ212と、内部バスコントローラ216とを含む。
【0058】
プロセッサ202は、二次記憶装置208に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、情報処理を実現する。チップセット204は、プロセッサ202と各コンポーネントとの間のデータ伝送などを制御する。
【0059】
二次記憶装置208は、制御処理を実現するためのアプリケーション250を格納する。二次記憶装置208は、アプリケーション250を実行するための環境を提供するシステムプログラム252が格納してもよい。
【0060】
USBコントローラ210は、USBにより接続された任意の情報処理装置とのデータ交換を担当する。
【0061】
ネットワークコントローラ212は、ネットワーク2を介して、上位システム500と接続する。
【0062】
内部バスコントローラ216は、内部バス4を介して、制御処理ユニット100と接続する。
【0063】
(b3:開発装置300)
開発装置300は、例えば、汎用PC(Personal Computer)などのコンピュータであってもよい。
【0064】
図5は、本実施の形態に従う開発装置300のハードウェア構成例を示す模式図である。図5を参照して、開発装置300は、CPUおよびMPUなどのプロセッサ302と、光学ドライブ304と、主記憶装置306と、二次記憶装置308と、USBコントローラ310と、入力部312と、表示部314とを含む。
【0065】
プロセッサ302は、二次記憶装置308に格納されたプログラムを読み出して、主記憶装置306に展開して実行することで、開発装置300として必要な処理を実現する。
【0066】
二次記憶装置308は、例えば、HDDおよびSSDなどで構成される。二次記憶装置308には、典型的には、OS322と、開発プログラム324とが格納される。二次記憶装置308には、図5に示すプログラム以外の必要なプログラムが格納されてもよい。また、二次記憶装置308には、制御処理ユニット100用のプロジェクト356と、情報処理ユニット200用のプロジェクト366とが格納されてもよい。
【0067】
開発装置300は、光学ドライブ304を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体305(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)から、記録媒体305に格納されたプログラムが読み取られて二次記憶装置308などにインストールされる。
【0068】
開発装置300で実行されるプログラムは、コンピュータ読取可能な記録媒体305を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従う開発装置300が提供する機能は、OS322が提供するモジュールの一部を利用する形で実現される場合もある。
【0069】
USBコントローラ310は、USBにより接続された制御装置10とのデータ交換を担当する。
【0070】
入力部312は、キーボードおよびマウスなどで構成され、ユーザ操作を受け付ける。表示部314は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ302からの処理結果などを出力する。
【0071】
(b4:その他)
図3図5には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0072】
制御装置10として産業用PCを採用する場合には、仮想化技術を用いて、制御処理ユニット100に相当するシステムと、情報処理ユニット200に相当するシステムとを並列的に実行してもよい。それぞれのシステムは、異なるOS(Operating System)上に実現してもよい。
【0073】
<C.課題>
次に、本実施の形態に従う制御システム1が解決しようとする課題について説明する。
【0074】
図6は、本実施の形態に従う制御システム1が解決しようとする課題を説明するための図である。図6を参照して、制御処理ユニット100が取り扱うデータ160は、予め定められた型の1または複数の変数を含む。
【0075】
内部バス4(図2参照)を介して、制御処理ユニット100が取り扱うデータ160がそのまま情報処理ユニット200に転送される。すなわち、制御処理ユニット100と情報処理ユニット200との間でデータ160が共有される。情報処理ユニット200が保持するデータ160Aは、データ160と同じであるので、アプリケーション250が要求するデータ形式に整合しない可能性がある。そのため、データ160Aをアプリケーション250-1,250-2が取り扱うデータ260-1,260-2に変換する必要がある。
【0076】
そのため、このようなデータ形式を変換するための変換プログラムを、アプリケーション250とは別に用意する必要があった。変換プログラムは、制御装置10(制御処理ユニット100および情報処理ユニット200)が取り扱うデータのデータ形式に依存するため、ユニット間は密結合にならざるを得なかった。
【0077】
また、制御プログラム150および/またはアプリケーション250の開発者は、相手方ユニット(情報処理ユニット200および/または制御処理ユニット100)が取り扱うデータのデータ形式を意識して、開発を行わなければならなかった。
【0078】
相手方ユニットが取り扱うデータ形式を意識したプログラム開発は、例えば、以下のような手順で行われる。
【0079】
制御プログラム150の開発者は、制御処理ユニット100で実行される制御プログラム150が取り扱う変数(グローバル変数、ローカル変数、入力データに割り当てられる変数、出力データに割り当てられる変数など)を定義した上で、制御プログラム150を作成する。
【0080】
一方、アプリケーション250の開発者は、情報処理ユニット200で実行されるアプリケーション250が取り扱う変数(変数名およびデータ形式など)を定義する。なお、この定義は、制御プログラム150の開発作業とは独立して行われてもよい。
【0081】
その上で、アプリケーション250の開発者は、アプリケーション250が取り扱う変数のうち、制御処理ユニット100から取得する変数を抽出する。そして、アプリケーション250の開発者は、抽出したデータのデータ形式と情報処理ユニット200が取り扱うデータ形式とを整合させるように、変換プログラムを作成する。
【0082】
このように、制御処理ユニット100と情報処理ユニット200との間では、各ユニットで実行されるプログラムの作成上の都合などから、データ形式(データの精度、保持形式、意味レベル)が互いに整合しないことが生じ得る。
【0083】
<D.ソリューション>
次に、上述したような課題に対するソリューションの一例について説明する。
【0084】
(d1:概要)
図7は、本実施の形態に従う制御システム1が提供するソリューションの一例を説明するための図である。図7を参照して、制御プログラム150が取り扱うデータ160には、データ160の名前(変数名)に加えて、付加情報162が設定されている。同様に、アプリケーション250-1,250-2が取り扱うデータ260-1,260-2には、データ260-1,260-2の名前(変数名)に加えて、付加情報262-1,262-2(以下、「付加情報262」と総称することもある)が設定されている。
【0085】
なお、制御プログラム150およびアプリケーション250が実行中に参照するデータ(メモリ上に保持されるインスタンス値)は、付加情報を含まなくもよい。
【0086】
本実施の形態においては、制御プログラム150が取り扱うデータ160、および、アプリケーション250が取り扱うデータ260の各々に、データ加工層600を決定するために必要な情報が付加される。制御プログラム150が取り扱うデータ160と、アプリケーション250が取り扱うデータ260との対応付けにおいて、付加情報を参照することで、データ加工層600を構成できる。
【0087】
図7に示す例では、変数名に基づいてデータ同士を対応付けることができる。対応付けられたデータの各々について、付加情報162および付加情報262を参照することで、必要なデータ加工層600が構成される。
【0088】
付加情報は、データ加工(あるデータ形式から別のデータ形式へ変換する処理)を決定するために必要な情報を包含する。一例として、付加情報は、データが表す数値の単位(単位情報)を含んでいてもよい。一例として、単位情報は、国際単位系(SI)およびSI組立単位などの表記(例えば、kg、mmなど)が用いられる。単位情報は、データの精度も示す。
【0089】
単位情報は、制御処理ユニット100が取り扱うデータおよび情報処理ユニット200が取り扱うデータの各々に付与されてもよい。単位情報は、データが表す数値が何を示しているのかを特定する情報(例えば、何の物理量を表すのかなど)であってもよい。
【0090】
また、単位情報は、何の量であるかを特定する情報(例えば、データが時間を表すのか、長さを表すのかなど)であってもよい。このように、制御処理ユニット100が取り扱う1または複数のデータの付加情報162および情報処理ユニット200が取り扱うデータの付加情報262は、データが表す数値が意味する物理量を含んでいてもよい。
【0091】
付加情報は、1または複数のデータと別のデータとを対応付けるための情報(対応付け情報)を含んでいてもよい。付加情報は、1または複数のデータを別のデータに変換するための関数(アダプタ関数)の定義を含んでいてもよい。付加情報およびアダプタ関数の定義が一体化されることもあり、この場合には、両者を合わせて「変換情報」とも称す。
【0092】
アダプタ関数は、情報処理ユニット200が取り扱うデータの付加情報262に含まれるようにしてもよい。すなわち、情報処理ユニット200が取り扱うデータに設定された付加情報262は、情報処理ユニット200が取り扱うデータに対応付けられた制御処理ユニット100が取り扱う1または複数のデータを当該情報処理ユニット200が取り扱うデータに変換するための任意に定義された関数(アダプタ関数)の指定を含んでいてもよい。
【0093】
なお、他のユニットまたは装置から参照されるデータ(変数)についてのみ、付加情報を設定するようにしてもよい。
【0094】
例えば、制御処理ユニット100が取り扱うデータ160が内部バス4(図2参照)を介して情報処理ユニット200に転送される際に、単位変換または尺度変換などを含むデータ加工を行ってもよい。このとき、データ160とデータ260との間では、変数名に基づいて、同一の変数同士を対応付けることができる。また、対応付けられた変数間では、必要に応じて型を変換するようにしてもよい。
【0095】
対応付け情報は、制御プログラム150が取り扱うデータ160と、アプリケーション250が取り扱うデータ260との間の対応付けを示す情報を含む。制御処理ユニット100における変数名と、情報処理ユニット200における変数名とが一致する場合には、変数名に基づいて変数同士を対応付けることができる。一方、制御処理ユニット100における変数名と、情報処理ユニット200における変数名とが一致しない場合には、対応付け情報を用いることで、制御処理ユニット100における1または複数の変数と、情報処理ユニット200における変数とを明示的に対応付けることができる。
【0096】
データの対応付けの一例として、制御プログラム150が取り扱うデータ160を用いた演算によって、アプリケーション250が取り扱うデータ260を求める場合には、単位情報および対応付け情報に基づいて変換式が決定される。決定された変換式は、後述するアクセス関数として実装されてもよい。
【0097】
例えば、アプリケーション250が取り扱うデータ260として、速度Cが必要である場合、指定された変数Aが距離を表し、変数Bが時間を表すのであれば、変数A/変数Bの変換結果を変数Cの値にできる。
【0098】
なお、単位情報および対応付け情報から決定される変換式ではなく、任意の変換式(後述するアダプタ関数)を採用することもできる。アダプタ関数は、制御処理ユニット100が取り扱う1または複数の変数を引数とする任意の変換式を含む。
【0099】
このように、付加情報を用いることで、データ加工を自動的に行うことができる。あるいは、データ加工に必要な変換式を自動的に生成することもできる。この結果、制御プログラム150および/またはアプリケーション250の開発者は、相手方ユニット(情報処理ユニット200および/または制御処理ユニット100)が取り扱うデータのデータ形式を意識することなく、制御プログラムおよび/またはアプリケーションを開発できる。また、相手方ユニット(情報処理ユニット200および/または制御処理ユニット100)が取り扱うデータのデータ形式を意識する必要がないので、ユニット間は疎結合となる。この結果、制御プログラムおよび/またはアプリケーションの保守性および移植性を向上できる。
【0100】
図8は、本実施の形態に従う制御装置10がデータ加工を行う場合の構成例を示す模式図である。図8には、一例として、アクセス関数270を用いてデータ加工を実現する例を示す。
【0101】
情報処理ユニット200で実行されるアプリケーション250は、アクセス関数270を呼び出して、データ260(制御処理ユニット100が取り扱うデータ160の少なくとも一部と同じ)をデータ加工した結果を参照する。アクセス関数270をアプリケーション250とは独立して生成することで、制御処理ユニット100と情報処理ユニット200との間を疎結合にできる。
【0102】
アクセス関数270は、後述するような処理手順に従って、自動的または半自動的に生成されてもよい。
【0103】
図8には、アプリケーション250-1,250-2に対してそれぞれアクセス関数270-1,270-2が設けられる例を示すが、アプリケーション250の間で共通のアクセス関数270を用意してもよい。また、アクセス関数270は、アプリケーション250に組み込まれてもよい。
【0104】
さらに、データ加工は、制御処理ユニット100で行われてもよい。この場合には、データ加工を行うためのプログラムが制御プログラム150に組み込まれてもよいし、制御処理ユニット100で実行されるシステムプログラムがデータ加工を行うためのプログラムを含んでいてもよい。
【0105】
(d2:付加情報の設定)
図9および図10は、本実施の形態に従う制御システム1において付加情報を設定する処理例を説明するための図である。図9は、制御処理ユニット100が取り扱うデータ(変数)に付加情報を設定する例を示し、図10は、情報処理ユニット200が取り扱うデータ(変数)に付加情報を設定する例を示す。
【0106】
図9に示す制御プログラム150の開発環境において提供されるユーザインターフェイス画面350において、開発者は、変数毎に、変数名351と、型定義352と、公開属性353と、単位情報354とを設定する。なお、変数毎に、初期値、割付先、保持の有無、コンスタンス値の有無なども設定できる。図9に示す例においては、単位情報354が付加情報に相当する。
【0107】
公開属性353の設定値は、情報処理ユニット200から参照できるか否かを示す。図9に示すユーザインターフェイス画面350に対する設定内容は、変数テーブル358(図11など参照)として出力される。
【0108】
図10に示す情報処理ユニット200が管理する変数の設定ファイル360は、情報処理ユニット200が取り扱うデータの付加情報を含む。より具体的には、設定ファイル360は、変数毎に、変数名361と、型定義362と、単位情報363と、対応付け情報364と、アダプタ関数名365とを含む。
【0109】
図10に示す例においては、単位情報363、対応付け情報364およびアダプタ関数名365が付加情報に相当する。
【0110】
単位情報363は、データが表す数値の単位を指定する。
対応付け情報364は、制御処理ユニット100が取り扱う1または複数のデータを指定する。このように、情報処理ユニット200が取り扱うデータの付加情報は、情報処理ユニット200が取り扱うデータに対応付けられた制御処理ユニット100が取り扱う1または複数の第1データを特定するための情報を含む。
【0111】
データ加工層600として、制御処理ユニット100が取り扱う複数のデータを用いた変換式も採用し得る。このような場合に、対応付け情報364は、制御処理ユニット100が取り扱う複数の変数を含む。アダプタ関数名365は、変数名361で指定された変数に格納される値を変換するための任意の関数を指定する。
【0112】
図11は、図10に示す設定ファイル360の生成手順の一例を説明するための図である。図11を参照して、開発装置300は、ユーザ操作に従って、制御処理ユニット100用のプロジェクト356に含まれる変数テーブル358(図9に示す設定手順により生成)を利用して、設定ファイル360を生成するためのユーザインターフェイス画面370を出力する。ユーザインターフェイス画面370において、開発者は、情報処理ユニット200で実行されるアプリケーション250が利用する変数について、変数名、型定義、単位などを設定する。このとき、制御処理ユニット100が取り扱う変数との対応付けも設定される。
【0113】
例えば、情報処理ユニット200と制御処理ユニット100との間で変数名が一致している場合には、変数の対応付けを自動的に設定してもよい。このとき、変数の物理量または単位系が同一であることを追加の条件としてもよい。
【0114】
あるいは、ユーザインターフェイス画面370において、開発者が変数の対応付けを設定してもよい。このとき、制御処理ユニット100が取り扱う変数のうち、設定されている変数と同一の物理量または単位系をもつ変数を選択候補として表示してもよい。
【0115】
開発者による一連の設定操作が完了すると、設定ファイル360が生成される。設定ファイル360は、アプリケーション250の付加情報262に相当する内容を含む。
【0116】
図12は、図9図11に示す付加情報の設定により構成される制御装置10の一例を説明するための図である。図12を参照して、制御プログラム150が取り扱うデータ160は、付加情報162を含む。同様に、アプリケーション250が取り扱うデータ260は、付加情報262を含む。付加情報162は、単位情報からなる。付加情報262は、単位情報および対応付け情報を含む。
【0117】
物理量および単位などの付加情報に基づいて変換式を一意に決定できない場合には、任意の変換式(アダプタ関数)が指定されてもよい。
【0118】
図13は、本実施の形態に従う制御システムにおいて設定されるアダプタ関数の適用例を示す図である。図13を参照して、ワークがコンベア上を連続的に搬送される場合を想定する。エンコーダは、コンベアの移動量に相当するパルス数を出力する。出力されるパルス数からコンベアの移動量を算出するとともに、算出した移動量を隣接するワーク間の距離(ワーク長)で除算することで、通過したワークの個数を算出できる。
【0119】
図13に示すように、コンベアの移動量に相当するパルス数からワークの個数を算出するためのアダプタ関数を定義してもよい。すなわち、アダプタ関数は、制御処理ユニット100が取り扱うデータ160を入力とする任意の変換式を定義する。より具体的には、アダプタ関数としては、通過個数=パルス数×変換係数/ワーク長と定義できる。ここで、パルス数の値は、制御処理ユニット100から取得される。
【0120】
このように、アダプタ関数を用いることで、参照するデータをどのように変換するのかを任意に定義できる。アダプタ関数を用いることで、データ加工の自由度を高めることができる。
【0121】
図14は、本実施の形態に従う制御システムにおいてアダプタ関数が付加情報として設定される一例を説明するための図である。図14を参照して、制御プログラム150が取り扱うデータ160は、付加情報162を含む。同様に、アプリケーション250が取り扱うデータ260は、付加情報262を含む。付加情報162は、単位情報および変換情報を含む。変換情報は、対応付け情報およびアダプタ関数の定義(図14に示す例では、xxx_adapter())を含む。
【0122】
(d3:アプリケーションの作成)
次に、アプリケーション250において制御処理ユニット100が取り扱うデータを参照するためのソースコード380の一例について説明する。
【0123】
図15は、本実施の形態に従う開発装置300において作成されるアプリケーション250のソースコード380の一例を説明するための図である。図15を参照して、ソースコード380は、アクセス関数270を呼び出すための関数記述381を含む。関数記述381は、予め定められた特定の書式で記述される。図15には、変数382を引数とする関数記述381と、変数383を引数とする関数記述381とが示されている。
【0124】
関数記述381は、ソースコード380がビルドされる際に、アクセス関数270を呼び出すためのインターフェイスであると解釈される。
【0125】
引数として指定された変数382(変数xxx_speed)は、制御処理ユニット100の変数yyy_lengthおよび変数xxx_timeに対応付けられるとともに、速度(mm/ms)の単位を意味することが設定されている(図10および図11参照)。制御処理ユニット100が取り扱う変数yyy_lengthは、長さ(mm)の単位を意味することが設定されており、変数xxx_timeは、時間(ns)の単位を意味することが設定されている(図9参照)。
【0126】
変数xxx_speedについては、長さおよび時間から算出されると判断できる。そのため、開発装置300は、ソースコード380に記述された変数382を引数とする関数記述381に基づいて、制御処理ユニット100が取り扱う変数yyy_lengthが示す値を変数xxx_timeが示す値で除算するとともに、10倍するアクセス関数270を生成し、当該生成したアクセス関数270を呼び出すように、アプリケーション250を生成する。すなわち、生成されるアクセス関数は、データ加工として、(変数yyy_length(制御処理ユニット100)/変数xxx_time(制御処理ユニット100))×10の変換を行う。
【0127】
引数として指定された変数383(変数zzz_force)は、制御処理ユニット100の変数zzz_forceに対応付けられるとともに、トルク(Nmm)の単位を意味することが設定されている(図10および図11参照)。制御処理ユニット100が取り扱う変数zzz_forceは、トルク(Nm)の単位を意味することが設定されている(図9参照)。
【0128】
変数zzz_forceについては、同一の物理量(トルク)であり、単位が異なっていると判断できる。そのため、開発装置300は、ソースコード380に記述された変数383を引数とする関数記述381に基づいて、制御処理ユニット100が取り扱う変数zzz_forceが示す値を10倍するアクセス関数270を生成し、当該生成したアクセス関数270を呼び出すように、アプリケーション250を生成する。生成されるアクセス関数は、データ加工層600として、変数zzz_force(制御処理ユニット100)×10の変換を行う。
【0129】
アクセス関数270を生成する処理については、後述する。
(d4:処理手順)
上述したような付加情報を用いるプログラム開発は、例えば、以下のような手順で行われる。
【0130】
制御プログラム150の開発者は、制御処理ユニット100で実行される制御プログラム150が取り扱う変数(グローバル変数、ローカル変数、入力データに割り当てられる変数、出力データに割り当てられる変数など)を定義するとともに、必要な変数に付加情報を設定する(図9に示す変数テーブル)。そして、制御プログラム150の開発者は、制御プログラム150を作成する。
【0131】
一方、アプリケーション250の開発者は、情報処理ユニット200で実行されるアプリケーション250が取り扱う変数(変数名およびデータ形式など)を定義するとともに、必要な変数に付加情報を設定する(図10に示す設定ファイル360)。
【0132】
情報処理ユニット200の1つの変数を制御処理ユニット100の複数の変数に対応付ける対応付け情報を付加情報に含めてもよい。また、情報処理ユニット200が取り扱う変数を算出するための任意の変換式を定義するアダプタ関数を付加情報に含めてもよい。
【0133】
そして、アプリケーション250の開発者は、アプリケーション250を作成する。作成されたアプリケーション250において、制御処理ユニット100が取り扱うデータを参照する場合には、予め定義されたアクセス関数を用いるようにソースコードを記述してもよい。この場合、データ加工層600は、アプリケーション250から呼び出されるアクセス関数、および、呼び出しに用いられるAPI(Application Programming Interface)を含んでいてもよい。
【0134】
制御プログラム150の開発作業と、アプリケーション250の開発作業とは独立して行われてもよい。
【0135】
アプリケーション250の開発者(または、制御プログラム150の開発者)は、制御プログラム150が取り扱う変数とアプリケーション250が取り扱う変数とを対応付ける。なお、対応付けられる変数名が同一であれば、自動的に対応付けるようにしてもよい。さらに、アプリケーション250の開発者(または、制御プログラム150の開発者)は、自動的に対応付けられた変数のうち不要な変数の対応付けを解除し、あるいは、任意の変数の対応付けを追加することもできる。
【0136】
アプリケーション250の開発者(または、制御プログラム150の開発者)は、開発装置300を操作してデータ加工層600の構成を指示すると、開発装置300(開発プログラム324)は、対応付けられた変数および各変数に設定された付加情報に基づいて、アクセス関数270を生成する。
【0137】
図16は、本実施の形態に従う制御システム1におけるプログラム開発の全体処理の一例を説明するための図である。図16に示す各ステップは、開発装置300のプロセッサ302が開発プログラム324を実行することで実現されてもよい。
【0138】
図16を参照して、制御処理ユニット100用のプロジェクト356と、情報処理ユニット200用のプロジェクト366とが用意される。プロジェクト356は、制御プログラム150を生成するためのソースコードと、変数テーブル358を含む。プロジェクト366は、アプリケーション250を生成するためのソースコード380を含む。
【0139】
まず、開発装置300は、設定ファイル360を生成する(ステップS2)。変数設定処理において、開発装置300は、ユーザインターフェイス画面370(図11参照)を提供することで、制御プログラム150が取り扱うデータ160と、アプリケーション250が取り扱うデータ260との対応付けを支援する。生成される設定ファイル360は、データ間(変数値)の対応付け、および、アダプタ関数の情報を含む。
【0140】
次に、開発装置300は、設定ファイル360およびソースコード380に基づいて、アクセス関数ライブラリ368を生成する(ステップS4)。アクセス関数ライブラリ368を生成する際には、様々なプログラミング言語に対応できるようにしてもよい。データ加工層600は、生成されたアクセス関数ライブラリ368からなる。
【0141】
このように、開発装置300は、制御処理ユニット100が取り扱う1または複数のデータの名前および付加情報と、当該1または複数のデータに対応付けられた、情報処理ユニット200が取り扱うデータの名前および付加情報とに基づいて、制御処理ユニット100が取り扱う1または複数のデータを情報処理ユニット200が取り扱うデータに変換するためのデータ加工層を生成する。
【0142】
続いて、開発装置300は、制御処理ユニット100用のプロジェクト356をビルドしてオブジェクトファイル151を生成する(ステップS6)。オブジェクトファイル151は、制御処理ユニット100に転送される。オブジェクトファイル151の転送によって、制御処理ユニット100において、制御プログラム150が実行可能になる。すなわち、開発装置300は、制御処理ユニット100で実行される制御プログラム150を生成する。
【0143】
また、開発装置300は、アクセス関数ライブラリ368を含めて、情報処理ユニット200用のプロジェクト366をビルドしてオブジェクトファイル251を生成する(ステップS8)。オブジェクトファイル251は、情報処理ユニット200に転送される。オブジェクトファイル251の転送によって、情報処理ユニット200において、アプリケーション250が実行可能になる。アプリケーション250は、例えば、プログラム本体254と、アクセス関数270とを含む。すなわち、開発装置300は、情報処理ユニット200で実行されるアプリケーション250を生成する。
【0144】
(d5:ソースコードの注釈を利用した定義)
上述の説明においては、アプリケーション250を生成するためのソースコード380とは別に、設定ファイル360が用意される例を説明した。変形例として、付加情報をソースコード380の注釈として記述してもよい。
【0145】
図17は、本実施の形態に従う開発装置300において作成されるアプリケーション250のソースコード380Aの別の一例を説明するための図である。図17を参照して、ソースコード380Aは、アクセス関数270を呼び出すための関数記述381に加えて、変数定義384を含む。
【0146】
ソースコード380Aにおいて、変数の付加情報が変数定義384の注釈として記述される。付加情報は、情報処理ユニット200が管理する変数と制御処理ユニット100が管理する変数との対応関係、および、単位の情報などを含む。
【0147】
より具体的には、変数の注釈は、識別タグ385と、キーワード386と、設定情報387と、対応付け情報388と、アダプタ関数名389とを含む。
【0148】
識別タグ385は、後続の情報が付加情報であることを示す識別情報である。
キーワード386は、付加情報の種類を示す。設定情報387は、付加情報の実体を示す。設定情報387の値は、キーワード386に対応する意味で解釈される。図17に示す例では、キーワード386として、単位を示す「Unit」が記述されており、キーワード386に続く設定情報387の値は、単位の指定であると解釈される。すなわち、キーワード386および設定情報387が単位情報に相当する。
【0149】
対応付け情報388は、制御処理ユニット100が取り扱うデータを指定する。アダプタ関数名389は、変数に格納される値を算出するための関数を指定する。
【0150】
図17に示すように、ソースコード380Aの注釈を利用することで、情報処理ユニット200が管理する変数の設定ファイル360を別に用意する必要がない。
【0151】
図18は、本実施の形態に従う制御システム1におけるプログラム開発の全体処理の別の一例を説明するための図である。図18に示す各ステップは、開発装置300のプロセッサ302が開発プログラム324を実行することで実現されてもよい。
【0152】
図18を参照して、制御処理ユニット100用のプロジェクト356と、情報処理ユニット200用のプロジェクト366とが用意される。プロジェクト356は、制御プログラム150を生成するためのソースコードと、変数テーブル358を含む。プロジェクト366は、アプリケーション250を生成するためのソースコード380Aを含む。ソースコード380Aは、注釈として付加情報を含む。
【0153】
開発装置300は、制御処理ユニット100用のプロジェクト356およびソースコード380Aに基づいて、アクセス関数ライブラリ368を生成する(ステップS5)。
【0154】
続いて、開発装置300は、制御処理ユニット100用のプロジェクト356をビルドしてオブジェクトファイル151を生成する(ステップS6)。また、開発装置300は、アクセス関数ライブラリ368を含めて、情報処理ユニット200用のプロジェクト366をビルドしてオブジェクトファイル251を生成する(ステップS8)。
【0155】
ステップS5の処理内容は、入力されるファイルなどが違う点を除いて、図16に示すステップS4と同様である。また、ステップS6,S8の処理内容は、図16に示すステップS6,S8と同様である。
【0156】
(d6:アクセス関数ライブラリの生成)
次に、図16に示すアクセス関数ライブラリの生成(ステップS4)、および、図18に示すアクセス関数ライブラリの生成(ステップS5)の詳細について説明する。
【0157】
ステップS4,S5において、開発装置300は、制御処理ユニット100が取り扱う1または複数のデータの名前および付加情報と、当該1または複数のデータに対応付けられた、情報処理ユニット200が取り扱うデータの名前および付加情報とに基づいて、制御処理ユニット100が取り扱う1または複数のデータを情報処理ユニット200が取り扱うデータに変換するためのデータ加工層を生成する。
【0158】
図19は、図16および図18に示すアクセス関数ライブラリの生成(ステップS4,S)の詳細な処理手順を示すフローチャートである。図19に示す各ステップは、開発装置300のプロセッサ302が開発プログラム324を実行することで実現されてもよい。
【0159】
図19を参照して、開発装置300は、情報処理ユニット200のアプリケーション250が参照する変数の一覧を取得し(ステップS401)、取得した各変数と制御処理ユニット100の変数との対応付けを取得する(ステップS402)。このとき、アプリケーション250が参照する1つの変数に対して、制御処理ユニット100が取り扱う1または複数の変数が対応付けられることもある。
【0160】
なお、情報処理ユニット200が取り扱うデータの付加情報262が対応付け情報を含んでいる場合には、開発装置300は、情報処理ユニット200が取り扱うデータの付加情報262に基づいて、制御処理ユニット100が取り扱う1または複数のデータを情報処理ユニット200が取り扱うデータに変換するための関数(アクセス関数)を決定することもできる。
【0161】
開発装置300は、ステップS401において取得した変数のうち1つの変数を選択し(ステップS403)、選択した変数の付加情報がアダプタ関数の定義を含んでいるか否かを判断する(ステップS404)。
【0162】
選択した変数の付加情報がアダプタ関数の定義を含んでいれば(ステップS404においてYES)、開発装置300は、付加情報に含まれるアダプタ関数の定義に従って、アクセス関数を決定する(ステップS405)。アクセス関数は、選択した変数の型定義に整合した値を出力するように構成される。決定されたアクセス関数がアクセス関数ライブラリに含まれる。そして、処理はステップS414に進む。
【0163】
選択した変数の付加情報がアダプタ関数の定義を含んでいなければ(ステップS404においてNO)、開発装置300は、選択した変数が制御処理ユニット100の1つの変数のみと対応付けられているか否かを判断する(ステップS406)。
【0164】
選択した変数が制御処理ユニット100の1つの変数のみと対応付けられていれば(ステップS406においてYES)、開発装置300は、選択した変数の物理量と対応付けられている制御処理ユニット100の変数の物理量とが同一であるか否かを判断する(ステップS407)。
【0165】
選択した変数の物理量と対応付けられている制御処理ユニット100の変数の物理量とが同一でなければ(ステップS407においてNO)、開発装置300は、選択した変数についてエラーを出力する(ステップS408)。そして、処理はステップS414に進む。
【0166】
選択した変数の物理量と対応付けられている制御処理ユニット100の変数の物理量とが同一であれば(ステップS407においてYES)、開発装置300は、選択した変数の単位と対応付けられている制御処理ユニット100の変数の単位とに基づいて、単位換算を行うための変換係数を決定し(ステップS409)、決定した変換係数を含む変換式をアクセス関数として決定する(ステップS410)。そして、処理はステップS414に進む。
【0167】
このように、開発装置300は、制御処理ユニット100が取り扱うデータの付加情報と情報処理ユニット200が取り扱うデータの付加情報とに基づいて、単位換算を行うための変換係数を決定し、制御処理ユニット100が取り扱うデータを情報処理ユニット200が取り扱うデータに変換するための関数を決定する。
【0168】
アクセス関数は、選択した変数の型定義に整合した値を出力するように構成される。決定されたアクセス関数がアクセス関数ライブラリに含まれる。そして、処理はステップS414に進む。
【0169】
選択した変数が制御処理ユニット100の複数の変数と対応付けられていれば(ステップS406においてNO)、開発装置300は、選択した変数の物理量と対応付けられている制御処理ユニット100のそれぞれの変数の物理量とに基づいて、物理量を整合させるための変数間の関係を決定する(ステップS411)とともに、単位換算を行うための変換係数を決定する(ステップS412)。そして、開発装置300は、決定した変数間の関係および変換係数に基づく変換式をアクセス関数として決定する(ステップS413)。アクセス関数は、選択した変数の型定義に整合した値を出力するように構成される。決定されたアクセス関数がアクセス関数ライブラリに含まれる。そして、処理はステップS414に進む。
【0170】
このように、開発装置300は、制御処理ユニット100が取り扱う1または複数のデータの付加情報に含まれる物理量に基づいて、情報処理ユニット200が取り扱うデータの付加情報に含まれる物理量を意味する値が算出されるようにアクセス関数を決定する。
【0171】
開発装置300は、ステップS401において取得した変数のすべてが選択済であるか否かを判断する(ステップS414)。ステップS401において取得した変数のうち未選択な変数があれば(ステップS414においてNO)、ステップS403以下の処理が繰り返される。
【0172】
ステップS401において取得した変数のすべてを選択済であれば(ステップS414においてYES)、開発装置300は、生成したアクセス関数を含むアクセス関数ライブラリを出力する(ステップS415)。そして、処理は終了する。
【0173】
<E.変形例>
上述したようなソリューションの一部または全部を以下のように変形してもよい。
【0174】
(e1:制御処理ユニット100と表示装置400)
制御処理ユニット100と情報処理ユニット200との間でデータを参照する構成例を説明したが、装置同士でデータを参照するように構成してもよい。例えば、制御装置10と表示装置400とがデータを共有する場合であっても、同様にデータ加工層600を構成できる。
【0175】
図20は、本実施の形態に従う制御システム1が提供するソリューションの別の一例を説明するための図である。図20には、制御装置10の制御処理ユニット100が取り扱うデータ160を表示装置400が参照する例を示す。制御処理ユニット100と表示装置400との間は、ネットワーク2を介して接続されている。
【0176】
制御処理ユニット100が取り扱うデータ160と、表示装置400が取り扱うデータ460との間には、データ加工層600が構成されている。このように、制御装置10において、制御処理ユニット100と情報処理ユニット200との間でデータを参照する構成に限らず、制御装置10(制御処理ユニット100)と表示装置400との間でデータを参照する構成においても、上述したようなデータ加工層600を構成できる。
【0177】
また、単一の産業用PC上で仮想化技術によって、制御処理ユニット100に相当する処理(例えば、リアルタイムOS上で実行)と、情報処理ユニット200または表示装置400に相当する処理(例えば、汎用OS上で実行)とが共存するような構成においても、上述したようなデータ加工層600を構成できる。
【0178】
以上の通り、本明細書において、「制御システム」との用語は、データを参照できる2つの処理主体を含む構成を包含する。2つの処理主体としては、単一の装置を構成する2つの処理ユニットであってもよいし、ある装置の一部の処理ユニットと他の装置との組合せであってもよいし、単一の装置で実行される2つの処理の組合せであってもよい。
【0179】
(e2:設計システムとの連携)
付加情報を設定する場合には、データが物理量などの情報を取得する必要がある。この場合、設計情報などを利用することで、付加情報の設定を効率化できる。
【0180】
図21は、本実施の形態に従う制御システム1を設計システムと連携させる構成例を示す模式図である。図21には、設計システムの一例として、CAD/CAEシステム700を採用する例を示す。CAD/CAEシステム700は、ワーク60およびワーク60を構成する部品などの設計情報702を含む。また、CAD/CAEシステム700は、製造ライン50を構成する設備の設計情報702を含む。
【0181】
図21に示す製造ライン50においては、前処理工程52と後処理工程54との間に、ロボット56およびカメラ58が配置されている。制御装置10の制御処理ユニット100は、制御プログラム150に従ってロボット56を制御し、情報処理ユニット200は、カメラ58により撮像された画像に基づいて画像処理などを行う。画像処理の結果は、制御処理ユニット100へ提供されてもよい。
【0182】
アプリケーション250が取り扱うデータ260に付加情報262を設定するにあたって、適切な単位、および、ワーク60の大きさなどの情報を利用してもよい。これらの情報は、CAD/CAEシステム700の設計情報702を参照することで取得できる。
【0183】
また、設計情報702を参照することで、アダプタ関数の設計を支援することもできる。
【0184】
このように、設計システムが有している設計情報を利用して、開発者による付加情報の設定を支援するようにしてもよい。
【0185】
<F.利点>
本実施の形態によれば、データの精度、保持形式、意味レベルなどを整合させるためのデータ加工をより少ない手間で実現できる仕組みを提供できる。より具体的には、制御処理ユニット100が取り扱うデータ160、および、情報処理ユニット200が取り扱うデータ260にそれぞれ付加情報を設定することで、制御処理ユニット100が取り扱うデータ160と情報処理ユニット200が取り扱うデータ260とを整合させるためのデータ加工層600を容易に構成できる。
【0186】
データ加工層600は、制御処理ユニット100で実行される制御プログラム150および情報処理ユニット200で実行されるアプリケーション250とは独立して構成できるので、制御プログラムおよび/またはアプリケーションの保守性および移植性を向上できる。また、付加情報に基づいて、データ加工層600を自動的に生成できるので、変換プログラムなどを用意する手間を省略できる。
【0187】
<G.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0188】
[構成1]
第1装置(100)が取り扱うデータ(160)を参照可能な第2装置(200)を含む制御システム(1)に向けられた開発装置(300)であって、
第1ソースコードから前記第1装置で実行される第1プログラム(150)を生成する第1プログラム生成部(S6)と、
第2ソースコードから前記第2装置で実行される第2プログラム(250)を生成する第2プログラム生成部(S8)と、
前記第1プログラムが取り扱う1または複数の第1データ(160)の名前および付加情報(162)と、前記1または複数の第1データに対応付けられた、前記第2プログラムが取り扱う第2データ(260)の名前および付加情報(262)とに基づいて、前記1または複数の第1データを前記第2データに変換するためのデータ加工層(600)を生成するデータ加工層生成部(S4,S5)とを備える、開発装置。
【0189】
[構成2]
前記第1データの付加情報および前記第2データの付加情報は、データが表す数値の単位(354,363)を含む、構成1に記載の開発装置。
【0190】
[構成3]
前記データ加工層生成部は、前記第1データの付加情報と前記第2データの付加情報とに基づいて、単位換算を行うための変換係数を決定し、前記第1データを前記第2データに変換するための関数を決定する(S409,S410)、構成2に記載の開発装置。
【0191】
[構成4]
前記第2データの付加情報は、前記第2データに対応付けられた前記1または複数の第1データを特定するための情報(364)を含む、構成1に記載の開発装置。
【0192】
[構成5]
前記データ加工層生成部は、前記第2データの付加情報に基づいて、前記1または複数の第1データを前記第2データに変換するための関数を決定する(S405,S410,S413)、構成4に記載の開発装置。
【0193】
[構成6]
前記1または複数の第1データの付加情報および前記第2データの付加情報は、データが表す数値が意味する物理量(354,363)を含む、構成1に記載の開発装置。
【0194】
[構成7]
前記データ加工層生成部は、前記1または複数の第1データの付加情報に含まれる物理量に基づいて、前記第2データの付加情報に含まれる物理量を意味する値が算出されるように関数を決定する(S411,S412,S413)、構成6に記載の開発装置。
【0195】
[構成8]
前記第2データの付加情報は、前記第2データに対応付けられた前記1または複数の第1データを前記第2データに変換するための任意に定義された関数の指定(389)を含む、構成1に記載の開発装置。
【0196】
[構成9]
第1装置(100)が取り扱うデータ(160)を参照可能な第2装置(200)を含む制御システム(1)に向けられたコンピュータ(300)が実行する開発方法であって、
第1ソースコードから前記第1装置で実行される第1プログラム(150)を生成するステップ(S6)と、
第2ソースコードから前記第2装置で実行される第2プログラム(250)を生成するステップ(S8)と、
前記第1プログラムが取り扱う1または複数の第1データ(160)の名前および付加情報(162)と、前記1または複数の第1データに対応付けられた、前記第2プログラムが取り扱う第2データ(260)の名前および付加情報(262)とに基づいて、前記1または複数の第1データを前記第2データに変換するためのデータ加工層(600)を生成するステップ(S4,S5)とを備える、開発方法。
【0197】
[構成10]
第1装置(100)が取り扱うデータ(160)を参照可能な第2装置(200)を含む制御システム(1)に向けられた開発プログラム(324)であって、前記開発プログラムはコンピュータ(300)に、
第1ソースコードから前記第1装置で実行される第1プログラム(150)を生成するステップ(S6)と、
第2ソースコードから前記第2装置で実行される第2プログラム(250)を生成するステップ(S8)と、
前記第1プログラムが取り扱う1または複数の第1データ(160)の名前および付加情報(162)と、前記1または複数の第1データに対応付けられた、前記第2プログラムが取り扱う第2データ(260)の名前および付加情報(262)とに基づいて、前記1または複数の第1データを前記第2データに変換するためのデータ加工層(600)を生成するステップ(S4,S5)とを実行させる、開発プログラム。
【0198】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0199】
1 制御システム、2 ネットワーク、4 内部バス、6 フィールドバス、10 制御装置、12 機能ユニット、14 センサ、16 アクチュエータ、50 製造ライン、52 前処理工程、54 後処理工程、56 ロボット、58 カメラ、60 ワーク、100 制御処理ユニット、102,202,302 プロセッサ、104,204 チップセット、106,206,306 主記憶装置、108,208,308 二次記憶装置、110,210,310 USBコントローラ、112 メモリカードインターフェイス、114 メモリカード、116,216 内部バスコントローラ、150 制御プログラム、151,251 オブジェクトファイル、152,252 システムプログラム、160,160A,260,460 データ、162,262 付加情報、200 情報処理ユニット、212 ネットワークコントローラ、250 アプリケーション、254 プログラム本体、270 アクセス関数、300 開発装置、304 光学ドライブ、305 記録媒体、312 入力部、314 表示部、322 OS、324 開発プログラム、350,370 ユーザインターフェイス画面、351,361 変数名、352,362 型定義、353 公開属性、354,363 単位情報、356,366 プロジェクト、358 変数テーブル、360 設定ファイル、364,388 対応付け情報、365,389 アダプタ関数名、368 アクセス関数ライブラリ、380,380A ソースコード、381 関数記述、382,383 変数、384 変数定義、385 識別タグ、386 キーワード、387 設定情報、400 表示装置、500 上位システム、600 データ加工層、700 システム、702 設計情報。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21