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

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

▶ 株式会社キーエンスの特許一覧

<>
  • 特開-プログラム作成支援装置 図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)【公開番号】P2022158231
(43)【公開日】2022-10-17
(54)【発明の名称】プログラム作成支援装置
(51)【国際特許分類】
   G05B 19/05 20060101AFI20221006BHJP
【FI】
G05B19/05 A
【審査請求】未請求
【請求項の数】26
【出願形態】OL
(21)【出願番号】P 2021062987
(22)【出願日】2021-04-01
(71)【出願人】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】110003281
【氏名又は名称】特許業務法人大塚国際特許事務所
(72)【発明者】
【氏名】根橋 結衣
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA04
5H220BB11
5H220CC05
5H220CX01
5H220DD01
5H220DD04
5H220DD07
5H220GG22
5H220JJ12
5H220JJ26
5H220JJ34
5H220JJ53
(57)【要約】
【課題】PLCで実行されるユーザプログラムを開発するための開発環境と、表示画面の開発環境とを統合した統合開発環境を備えたプログラム作成支援装置を提供すること。
【解決手段】プログラム作成支援装置は、プログラマブルロジックコントローラに転送されて実行されるユーザプログラムの開発を支援する非Webアプリケーションベースの第一開発環境と、前記プログラマブルロジックコントローラにおいて前記ユーザプログラムにしたがって使用されるシンボルから収集されるシンボル値を表示する表示画面を、構造を記述するデータと装飾を記述するデータと動的な処理を記述するコードとにより記述されるWebページとして生成することで当該表示画面の開発を支援するWebアプリケーションベースの第二開発環境とを統合した統合開発環境を提供する提供手段を有する。
【選択図】図4
【特許請求の範囲】
【請求項1】
プログラマブルロジックコントローラと通信する通信手段と、
前記通信手段を介して前記プログラマブルロジックコントローラに転送されて実行されるユーザプログラムの開発を支援する非Webアプリケーションベースの第一開発環境と、前記プログラマブルロジックコントローラにおいて前記ユーザプログラムにしたがって使用されるシンボルから収集されるシンボル値を表示する表示画面を、構造を記述するデータと装飾を記述するデータと動的な処理を記述するコードとにより記述されるWebページとして生成することで当該表示画面の開発を支援するWebアプリケーションベースの第二開発環境とを統合した統合開発環境を提供する提供手段と、を有することを特徴とするプログラム作成支援装置。
【請求項2】
前記提供手段は、前記ユーザプログラムと、前記表示画面を描画するための表示部品とを単一のプロジェクトとして管理するように構成されていることを特徴とする請求項1に記載のプログラム作成支援装置。
【請求項3】
前記プロジェクトは、
前記第一開発環境を通じて作成された前記ユーザプログラム、シンボルの定義情報、および、前記プログラマブルロジックコントローラの構成情報と、
前記第二開発環境を通じて作成された前記表示画面の表示部品と、を含み、
前記表示部品は、当該表示画面に表示される情報を保持しているシンボルを参照するための参照情報を含むことを特徴とする請求項2に記載のプログラム作成支援装置。
【請求項4】
前記第一開発環境および前記第二開発環境から呼び出され、前記プロジェクトの全体にわたって検索を実行する共通検索手段をさらに有することを特徴とする請求項2または3に記載のプログラム作成支援装置。
【請求項5】
前記第一開発環境および前記第二開発環境は、前記共通検索手段による検索結果を用いてユーザ入力の補助またはユーザにより入力された情報のエラーチェックを実行することを特徴とする請求項4に記載のプログラム作成支援装置。
【請求項6】
前記提供手段は、前記通信手段を介して前記プログラマブルロジックコントローラから前記シンボル値を取得し、前記第一開発環境においてユーザプログラムと関連付けて前記シンボル値を表示するか、または、前記表示画面に前記シンボル値を表示することを特徴とする請求項1ないし5のいずれか一項に記載のプログラム作成支援装置。
【請求項7】
前記第一開発環境は、WebAPIにしたがって前記第二開発環境と通信する第一Webサーバを有し、
前記第二開発環境は、前記表示画面を構成する表示部品に紐づけられているシンボルの定義情報であって、前記第一開発環境において作成された定義情報を、前記第一Webサーバを介して、取得して、前記表示画面を描画するための表示部品に反映させることを特徴とする請求項1ないし6のいずれか一項に記載のプログラム作成支援装置。
【請求項8】
前記プログラマブルロジックコントローラは、前記第二開発環境により作成された前記表示画面に前記シンボルに格納されている情報を反映して提供する第二Webサーバを有し、
前記第二開発環境は、前記第一Webサーバを介して前記第二Webサーバにアクセスして、前記表示画面を表示するWebブラウザを含むことを特徴とする請求項7に記載のプログラム作成支援装置。
【請求項9】
前記第一開発環境および前記プログラマブルロジックコントローラは、前記Webブラウザと前記第二WebサーバとにTCP透過通信を提供するように構成されていることを特徴とする請求項8に記載のプログラム作成支援装置。
【請求項10】
前記統合開発環境は、前記第一開発環境において前記ユーザプログラムの編集を受け付け、前記第二開発環境において前記表示画面の編集を受け付けるエディタモードと、前記第一開発環境において前記ユーザプログラムに紐づけられているシンボルからシンボル値を取得して表示し、前記第二開発環境において前記表示画面に紐づけられているシンボルのシンボル値を前記プログラマブルロジックコントローラから取得して当該表示画面に表示するモニタモードと、を含み、
前記第一開発環境および前記第二開発環境はそれぞれ、前記エディタモードと前記モニタモードとの切り替えを指示する指示手段を有することを特徴とする請求項1ないし8のいずれか一項に記載のプログラム作成支援装置。
【請求項11】
前記第一開発環境に設けられたWebサーバと、前記第二開発環境に設けられた組み込み型ブラウザにおいて実行されるWebアプリケーションとは、WebAPIを介して通信することで、前記第一開発環境と前記第二開発環境とが前記ユーザプログラムと前記表示画面の表示部品を含むプロジェクトの作成または管理について連携することを特徴とする請求項1ないし6のいずれか一項に記載のプログラム作成支援装置。
【請求項12】
前記第一開発環境と前記第二開発環境とは、前記WebAPIを介した連携により前記第一開発環境の動作モードと前記第二開発環境の動作モードとを一致させることを特徴とする請求項11に記載のプログラム作成支援装置。
【請求項13】
前記第一開発環境と前記第二開発環境とは、前記動作モードを切り替える際に、前記第一開発環境に対するユーザ操作と前記第二開発環境に対するユーザ操作とを禁止することを特徴とする請求項12に記載のプログラム作成支援装置。
【請求項14】
前記第一開発環境と前記第二開発環境とは、前記動作モードの切り替えが指示されたときに、前記第一開発環境と前記第二開発環境との少なくとも一方がビジー状態またはダイアログの表示中である場合に、前記動作モードの切り替えを禁止することを特徴とする請求項12または13のいずれか一項に記載のプログラム作成支援装置。
【請求項15】
前記第一開発環境は、前記第二開発環境の起動指示を受け付けて、前記第二開発環境を起動するように構成されていることを特徴とする請求項1ないし14のいずれか一項に記載のプログラム作成支援装置。
【請求項16】
前記第一開発環境と前記第二開発環境とは、前記WebAPIを介した連携により前記第一開発環境の言語設定と前記第二開発環境の言語設定とを一致させることを特徴とする請求項11に記載のプログラム作成支援装置。
【請求項17】
前記第一開発環境と前記第二開発環境とは、前記WebAPIを介した連携により前記第一開発環境のコメントセットと前記第二開発環境のコメントセットとを一致させることを特徴とする請求項11に記載のプログラム作成支援装置。
【請求項18】
前記統合開発環境において作成されたプロジェクトを前記プログラマブルロジックコントローラに転送する転送手段をさらに有し、
前記転送手段は、前記プロジェクトに含まれる前記ユーザプログラムに記述されたシンボルと前記表示画面の表示部品により参照されるシンボルの整合性の検査を実行することを特徴とする請求項1ないし17のいずれか一項に記載のプログラム作成支援装置。
【請求項19】
前記プロジェクトのインポートを実行するインポート手段をさらに有することを特徴とする請求項18に記載のプログラム作成支援装置。
【請求項20】
前記インポート手段は、第一プロジェクトを第二プロジェクトにインポートする際に、前記第一プロジェクトにおけるユニット構成に依存した記述を前記第二プロジェクトのユニット構成に整合するように前記第一プロジェクトを更新し、前記更新された第一プロジェクトを前記第二プロジェクトにインポートするように構成されていることを特徴とする請求項19に記載のプログラム作成支援装置。
【請求項21】
前記ユニット構成に依存した記述は、前記ユニット構成に依存して変化するシンボルの識別情報の記述を含むことを特徴とする請求項20に記載のプログラム作成支援装置。
【請求項22】
前記インポート手段は、前記第一プロジェクトのユニット構成に含まれる拡張ユニットの第一識別情報と、前記第二プロジェクトのユニット構成に含まれる当該拡張ユニットの第二識別情報との対応関係を示すユーザ入力にしたがって、前記第一プロジェクトにおいて前記第一識別情報に紐づけられているシンボルの記述を前記第二識別情報に紐づけることを特徴とする請求項21に記載のプログラム作成支援装置。
【請求項23】
前記インポート手段は、前記第一プロジェクトに含まれるイメージデータの識別情報が前記第二プロジェクトにおいてすでに使用されている場合に、当該イメージデータの識別情報を、前記第二プロジェクトにおいて未使用の識別情報に変更することを特徴とする請求項20に記載のプログラム作成支援装置。
【請求項24】
前記第二開発環境は、前記表示画面を構成する表示部品に紐づけられているシンボルの種別を前記第一開発環境から取得し、前記種別に応じて前記表示部品におけるシンボル値の表示形式を設定することを特徴とする請求項1ないし6のいずれか一項に記載のプログラム作成支援装置。
【請求項25】
前記第二開発環境は、前記シンボルの種別が浮動小数点型である場合に前記表示部品におけるシンボル値の表示形式を浮動小数点数に設定し、前記シンボルの種別が整数型である場合に前記表示部品におけるシンボル値の表示形式を固定小数点数に設定することを特徴とする請求項24に記載のプログラム作成支援装置。
【請求項26】
前記第二開発環境は、前記シンボル値に対する小数点以下桁数の指定を受け付け、当該小数点以下桁数に応じて小数点を付加して前記シンボル値を前記表示部品に表示することを特徴とする請求項25に記載のプログラム作成支援装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラム作成支援装置に関する。
【背景技術】
【0002】
プログラマブルロジックコントローラ(PLC)はファクトリーオートメーションにおいて製造機器や搬送装置、検査装置などの産業機械を制御するコントローラである。PLCはプログラマーによって作成されるラダープログラムなどのユーザプログラムを実行することで様々な拡張ユニットや被制御機器を制御する。PLCの動作を監視するために、PLCが保持しているデータを収集して、PLCの外部に接続されたHMI(ヒューマンマシンインタフェース:表示装置)でデータをリアルタイムでモニタすることが提案されている(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-166827号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、PLCのHMIはビットマップデータを表示するように構成されており、HMI用の表示プログラムと表示設定が専用のソフトウエアを用いてプログラム作成支援装置で作成されていた。プログラム作成支援装置はパーソナルコンピュータ(PC)や産業用コンピュータ(IPC)により実現される。その一方で、PLCのそばに設置されているHMIの代わりに、PLCから離れた場所にあるPCからPLCにアクセスしてPLCのデータをリアルタイムで監視できれば便利であろう。とりわけ、Webベースの技術でPLCのデータを表示できれば、Webブラウザを搭載したPCであればPLCのリアルタイム監視装置として利用可能となる。このような監視装置または表示装置をWebHMIと呼ぶことにする。
【0005】
ところで、プログラム作成支援装置は、PLCで実行されるラダープログラムなどのユーザプログラムを作成するPCアプリケーションベースのソフトウエア開発環境を有している。また、プログラム作成支援装置は、HMIまたはWebHMIのためのソフトウエア開発環境を別にインストールされていることがある。従来、これら二つのソフトウエア開発環境は独立しており、ユーザは個別にこれらを起動してPLCやWebHMIのためのソフトウエアを開発しており、開発効率が悪かった。そこで、本発明は、PLCで実行されるユーザプログラムを開発するための開発環境と、表示画面の開発環境とを統合した統合開発環境を備えたプログラム作成支援装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、たとえば、
プログラマブルロジックコントローラと通信する通信手段と、
前記通信手段を介して前記プログラマブルロジックコントローラに転送されて実行されるユーザプログラムの開発を支援する非Webアプリケーションベースの第一開発環境と、前記プログラマブルロジックコントローラにおいて前記ユーザプログラムにしたがって使用されるシンボルから収集されるシンボル値を表示する表示画面、を、構造を記述するデータと装飾を記述するデータと動的な処理を記述するコードとにより記述されるWebページとして生成することで当該表示画面の開発を支援するWebアプリケーションベースの第二開発環境とを統合した統合開発環境を提供する提供手段と、を有することを特徴とするプログラム作成支援装置を提供する。
【発明の効果】
【0007】
本発明によれば、PLCで実行されるユーザプログラムを開発するための開発環境と、表示画面の開発環境とを統合した統合開発環境を備えたプログラム作成支援装置が提供される。
【図面の簡単な説明】
【0008】
図1】PLCシステムを示す図
図2】PCを説明する図
図3】PLCを説明する図
図4】プログラム作成支援装置のCPUにより実現される機能
図5】PLCのCPUにより実現される機能
図6】PLC開発環境とWebHMI開発環境との間で実行される通信を示すシーケンス図
図7】PLC開発環境とWebHMI開発環境との間で実行される通信を示すシーケンス図
図8】動作モードの切り替え方法を示すフローチャート
図9】動作モードの切り替え方法を示すフローチャート
図10】動作モードの切り替え方法を示すフローチャート
図11】動作モードの切り替え方法を示すフローチャート
図12】WebHMI開発環境の起動方法を説明する図
図13】WebHMI開発環境のUIを説明する図
図14】WebHMI開発環境のUIを説明する図
図15】WebHMI開発環境のUIを説明する図
図16】検索置換機能を説明する図
図17】入力補助機能を説明する図
図18】プロジェクトのインポート/エクスポートを説明する図
図19】インポートに伴うユニット構成の対応関係の入力を説明する図
図20】WebHMI開発環境のUIを説明する図
図21】WebHMI開発環境のUIを説明する図
【発明を実施するための形態】
【0009】
以下、添付図面を参照して実施形態が詳しく説明される。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴が任意に組み合わされてもよい。また、同一または同様の構成には同一の参照番号が付され、重複した説明は省略される。同一または類似の要素を示す参照符号の末尾には小文字のアルファベットが付与されることがある。複数の要素に共通する事項が説明される場合、小文字のアルファベットが省略される。
【0010】
<システム構成>
はじめにプログラマブルロジックコントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
【0011】
図1は、本発明の実施の形態によるプログラマブルロジックコントローラシステムの一構成例を示す概念図である。図1が示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのPC2aと、工場等に設置される各種制御装置を統括的に制御するためのPLC(プログラマブルロジックコントローラ)1とを備えている。PCはパーソナルコンピュータの略称である。ユーザプログラムは、ラダー言語やSFC(シーケンシャルファンクションチャート)などのフローチャート形式のモーションプログラムなどのグラフィカルプログラミング言語を用いて作成されてもよいし、C言語などの高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、基本ユニット3で実行されるユーザプログラムはラダープログラムとする。PLC1は、CPUが内蔵された基本ユニット3と、1つないし複数の拡張ユニット4を備えている。基本ユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。
【0012】
基本ユニット3は、表示部5および操作部6を備えている。表示部5は、基本ユニット3に取り付けられている各拡張ユニット4の動作状況などを表示する表示装置である。操作部6の操作内容に応じて表示部5は表示内容を切り替える。表示部5は、通常、PLC1内のデバイスの現在値(デバイス値)やPLC1内で生じたエラー情報などを表示する。デバイスとは、デバイス値(デバイスデータ)を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイス値の型(シンボル種別)にはビット型とワード型がある。ビットデバイスは1ビットのデバイス値を記憶する。ワードデバイスは1ワードのデバイス値を記憶する。操作部6は、基本ユニット3に対してユーザの指示を入力するためのボタンやスイッチなどを含む。PLC1は、デバイスの他、変数を取り扱うよう構成されてもよい。デバイスおよび変数はシンボルと呼ばれ、シンボルの現在値はシンボル値と呼ばれる。
【0013】
拡張ユニット4は、PLC1の機能を拡張するために用意されている。各拡張ユニット4には、その拡張ユニット4の機能に対応するフィールドデバイス(被制御装置)10が接続されることがあり、これにより、各フィールドデバイス10が拡張ユニット4を介して基本ユニット3に接続される。フィールドデバイス10は、センサやカメラなどの入力機器であってもよいし、アクチュエータなどの出力機器であってもよい。また、一つの拡張ユニット4に対して複数のフィールドデバイスが接続されてもよい。
【0014】
たとえば、拡張ユニット4bはモータ(フィールドデバイス10)を駆動してワークの位置決めする位置決めユニットであってもよいし、カウンタユニットであってもよい。カウンタユニットは手動パルサなどのエンコーダ(フィールドデバイス10)からの信号をカウントする。
【0015】
拡張ユニット4aは、ユーザプログラムであるデータ活用プログラムを実行することで、基本ユニット3や拡張ユニット4bから収集対象データを収集し、収集対象データにデータ処理を施して表示対象データを作成し、ダッシュボードを表示部7またはPC2に表示するための表示データを作成するデータ収集ユニットである。基本ユニット3はCPUユニットと呼ばれることもある。なお、PLC1とPC2とを含むシステムはプログラマブルロジックコントローラシステムと呼ばれてもよい。
【0016】
PC2aは主にプログラマーによって操作されるコンピュータである。一方、PC2bは、現場担当者などによって操作されるコンピュータである。PC2aはプログラム作成支援装置(設定装置)と呼ばれてもよい。PC2は、たとえば、携帯可能なノートタイプやタブレットタイプのパーソナルコンピュータまたはスマートフォンであって、表示部7および操作部8を備えている外部コンピュータである。外部コンピュータとは、PLC1の外部にあるコンピュータである。PLC1を制御するためのユーザプログラムの一例であるラダープログラムは、PC2aを用いて作成される。その作成されたラダープログラムは、PC2a内でニモニックコードに変換される。PC2は、USB(Universal Serial Bus)ケーブルなどの通信ケーブル9を介してPLC1の基本ユニット3に接続される。たとえば、PC2aは、ニモニックコードに変換されたラダープログラムを基本ユニット3に送る。基本ユニット3はラダープログラムをマシンコードに変換し、基本ユニット3に備えられたメモリ内に記憶する。なお、ここではニモニックコードが基本ユニット3に送信されているが、本発明はこれに限られない。たとえば、PC2aは、ニモニックコードを中間コードに変換し、中間コードを基本ユニット3に送信してもよい。
【0017】
なお、図1は示していないが、PC2の操作部8には、PC2に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、PC2は、USBケーブル以外の他の通信ケーブル9を介して、PLC1の基本ユニット3に対して着脱可能に接続されるような構成であってもよい。また、PC2は、通信ケーブル9を介さず、PLC1の基本ユニット3に対して無線通信によって接続されてもよい。
【0018】
HMI(ヒューマンマシンインタフェース)16は、PLC1のデバイスまたはバッファに格納されている情報を読み出して表示する表示装置である。HMI16は、たとえば、タッチパネル式の入力装置を有していてもよい。HMI16がWebブラウザを搭載している場合、HMI16はWebHMIとして機能する。
【0019】
<プログラム作成支援装置>
図2はPC2の電気的構成について説明するためのブロック図である。図2が示すように、PC2は、CPU11、表示部7、操作部8、記憶装置12および通信部13を備えている。表示部7、操作部8、記憶装置12および通信部13は、それぞれCPU11に対して電気的に接続されている。記憶装置12はRAMやROM、HDD、SSDを含み、さらに着脱可能なメモリカードを含んでもよい。CPUは中央演算処理装置の略称である。ROMはリードオンリーメモリの略称である。RAMはランダムアクセスメモリの略称である。HDDはハードディスクドライブの略称である。SSDはソリッドステートドライブの略称である。
【0020】
記憶装置12は統合開発環境プログラム14aとWebブラウザプログラム14dとを記憶している。統合開発環境プログラム14aは、PLC1に転送されて実行されるユーザプログラム(例:ラダープログラム)の開発を支援するPLC開発環境と、PLC1においてユーザプログラムを実行する際に使用されるシンボル(例:デバイス、変数)から収集されるシンボル値を表示する表示画面の開発を支援するWebHMI開発環境とを統合した統合開発環境を提供するソフトウエアである。PC2aのユーザが統合開発環境プログラム14aをCPU11に実行させることで、統合開発環境が実現される。PLC開発環境はPCアプリケーションプログラム14bにより実現される。PCアプリケーションプログラム14bは、win32など、PCのオペレーティングシステム(OS)に依存したプログラムである。PCアプリケーションプログラム14bは、Webアプリケーションベース以外のプログラムであればよく、たとえばOSに依存しないプログラムであってもよい。WebHMI開発環境はWebアプリケーションプログラム14cにより実現される。Webアプリケーションプログラム14cはWebアプリケーションベースのプログラムであるため、OSに依存しないプログラムである。そのため、Webアプリケーションプログラム14cは、統合開発環境プログラム14aに設けられた組み込み型ブラウザと汎用のWebブラウザとのどちらでも実行可能である。Webブラウザプログラム14dはCPU11をWebブラウザとして機能させるための汎用のブラウザである。
【0021】
ユーザは、統合開発環境50において、操作部8を操作することでプロジェクトデータ70を編集する。プロジェクトデータ70は、一つ以上のユーザープログラム(例:ラダープログラム)と、基本ユニット3や拡張ユニット4の構成情報と、WebHMIの作画データと、拡張ユニット4aで実行されるデータ活用プログラムと、シンボルの定義情報などを含む。構成情報は、基本ユニット3に対する複数の拡張ユニット4の接続位置や、基本ユニット3に備えられた機能(例:通信機能や位置決め機能)を示す情報、および、拡張ユニット4の機能(例:撮影機能)などを示す情報である。作画データは、WebHMIを実現するための表示部品群であり、フロントエンドの構造を記述するマークアップデータ(例:HTMLデータ)、装飾を記述するスタイルシートデータ(例:CSSデータ)および動的な処理を記述するコード(例:JavaScript(登録商標)コード)などにより実現される。なお、フロントエンドとは、Webページ、WebサービスおよびやWebアプリケーションにおいてユーザから直接的に見える部分をいう。装飾を記述するスタイルシートデータは、たとえばファイル形式として提供されてもよい。この場合、構造を記述するマークアップデータ内で外部スタイルシートデータファイルを呼び出す記述により、スタイルシートデータが呼び出されてもよい。動的処理を記述するコードは、たとえばファイル形式で提供されてもよい。この場合、構造を記述するマークアップデータ内で外部コードファイルを呼び出す記述により、動的処理を記述するコードが呼び出されてもよい。外部スタイルシートデータファイルや外部コードファイルを呼び出して使用できる形式のフロントエンドは、再利用性やメンテナンス性が高く、たとえば汎用のフロントエンドコンポーネント等を利用することができる。このような汎用的で再利用性の高いWeb描画技術を採用することで、WebHMIなどの開発においてコンポーネントを再利用でき、WebHMIなどの保守性も向上する。以下で、作画データは、表示部品と表記される。データ活用プログラムは、PLC1において制御データ(デバイス値など)を収集したり、データ処理したり、WebHMIに渡すためのデータを作成したりするためのプログラムを含む。
【0022】
プロジェクトデータ70の編集には、プロジェクトデータ70の作成および変更(再編集)が含まれる。ユーザは、必要に応じて記憶装置12に記憶されているプロジェクトデータ70を読み出し、そのプロジェクトデータ70を、統合開発環境プログラム14aを用いて変更する。
【0023】
通信部13は、通信ケーブル9aを介して基本ユニット3と通信する。CPU11は通信部13を介してプロジェクトデータ70を基本ユニット3に転送する。通信部13は、通信ケーブル9bを介して拡張ユニット4aと通信する。CPU11は通信部13を介してプロジェクトデータ70を拡張ユニット4aに転送する。なお、基本ユニット3が、プロジェクトデータ70のうち拡張ユニット4aで必要となるデータを拡張ユニット4aに転送してもよい。
【0024】
<PLC>
図3はPLC1の電気的構成について説明するためのブロック図である。図3が示すように、基本ユニット3は、CPU31、表示部5、操作部6、記憶装置32および通信部33を備えている。表示部5、操作部6、記憶装置32、および通信部33は、それぞれCPU31に電気的に接続されている。記憶装置32は、RAMやROM、メモリカードなどを含んでもよい。記憶装置32はデバイス部34やプロジェクト記憶部35などの複数の記憶領域を有している。デバイス部34はビットデバイスやワードデバイスなどを有し、各デバイスはデバイス値を記憶する。プロジェクト記憶部35は、PC2aから入力されたプロジェクトデータ70を記憶する。図3が示すように基本ユニット3と拡張ユニット4とは拡張バスの一種であるユニット内部バス19を介して接続されている。なお、ユニット内部バス19に関する通信機能はCPU31に実装されるが、通信部33の一部として実装されてもよい。通信部33はネットワーク通信回路を有してもよい。CPU31は通信部33を介してプロジェクトデータ70をPC2aから受信する。
【0025】
ここで、ユニット内部バス19について、補足説明する。このユニット内部バス19は、入出力リフレッシュに使用される通信バスである。入出力リフレッシュとは、基本ユニット3と拡張ユニット4との間でデバイス値を更新する処理である。入出力リフレッシュは、ラダープログラムが一回実行されるごとに(つまり、一スキャンごとに)、実行される。
【0026】
拡張ユニット4はCPU41とメモリ42を備えている。拡張ユニット4bのCPU41bは、デバイスに格納された基本ユニット3からの指示(デバイス値)にしたがってフィールドデバイス10を制御する。また、CPU41bは、フィールドデバイス10の制御結果をバッファメモリとよばれるデバイスに格納する。デバイスに格納された制御結果は入出力リフレッシュによって基本ユニット3に転送される。また、デバイスに格納されている制御結果は、基本ユニット3からの読み出し命令にしたがって、入出力リフレッシュとは異なるタイミングであっても、基本ユニット3に転送される。メモリ42はRAMやROMなどを含む。とりわけ、RAMにはバッファメモリとして使用される記憶領域が確保されている。メモリ42は、フィールドデバイス10によって取得されたデータ(例:静止画データや動画データ)を一時的に保持するバッファを有してもよい。
【0027】
データ活用ユニットとして機能する拡張ユニット4aのCPU41aは、通信部43とケーブル9bを介してPC2aと通信する。データ活用ユニットは、データ活用プログラムを実行する拡張ユニットである。CPU41aはPC2aから受信したデータ活用プログラムとその設定データをメモリ42aに格納する。CPU41aは、設定データにしたがってデータ活用プログラムを実行し、デバイス値を収集し、WebHMIに表示するための表示データを作成する。CPU41aは、通信部43とケーブル9bを介してPC2bと通信する。CPU41aはPC2bに対してWebHMIの表示データを送信する。これにより、PC2bはPLC1に関する各種データを含むWebHMIを表示する。
【0028】
HMI16も通信部43に接続され、通信部43を介してCPU41aと通信してもよい。HMI16は、CPU41aから表示データを受信して、表示データをWebHMIとして表示する。
【0029】
図4はPC2aのCPU11によって実現される機能を説明する図である。統合開発環境50は、CPU11が統合開発環境プログラム14aを実行することで実現される機能である。統合開発環境50は、PLC開発環境51とWebHMI開発環境61とを有している。PLC開発環境51はCPU11がPCアプリケーションプログラム14bを実行することで実現される。WebHMI開発環境61は、CPU11(組み込み型ブラウザ62)がWebアプリケーションプログラム14cを実行することにより実現される。組み込み型ブラウザ62は、Webアプリケーションプログラム14bを実行するために必要となる様々な機能(HTML、CSSおよびJavaScript(R)の実行環境)を有している。Webアプリケーションプログラム14bはWebサーバからWebブラウザに送信され、WebブラウザにおいてWebページを表示するために必要となる表示部品の集合体である。
【0030】
PLC開発環境51は、基本ユニット3や拡張ユニット4bで実行される制御プログラム71a、拡張ユニット4aで実行されるデータ活用プログラム71b、シンボル定義72、WebHMIを実現する表示部品73、PLC1の構成情報74などの作成を支援するエディタ部52aを有している。モード切替部53aは、操作部8からのユーザ指示にしたがって統合開発環境50の動作モード(例:エディタモード、モニタモード、オンラインエディットモード、シミュレータモード、シミュレータエディットモード)を切り替える。とりわけ、モード切替部53aは、PLC開発環境51の動作モードを管理している。モード切替部53aは、ユーザ操作に基づきPLC開発環境51の動作モードを切り替えるとともに、WebHMI開発環境61に対して動作モードを同期するよう要求する(モード遷移要求)。また、モード切替部53aは、WebHMI開発環境61の動作モードに対する同期の要求(モード遷移要求)をWebHMI開発環境61のモード切替部53bから受信すると、この要求にしたがってPLC開発環境51の動作モードを切り替える。これにより、PLC開発環境51の動作モードとWebHMI開発環境61の動作モードとが同期する。エディタモードとは、PC2aをPLC1に接続せずに、PLC1のプロジェクトデータ70を編集するモードである。モニタモードとは、PC2aをPLC1に接続したまま、PLC1の状態をリアルタイムで監視できるモードである。オンラインエディットモードとは、PC2aをPLC1に接続したまま、PLC1の状態をリアルタイムで監視でき、さらにプロジェクトデータ70を編集して更新し、更新されたプロジェクトデータ70をPLC1に転送できるモードである。シミュレータモードとは、PC2aをPLC1に接続せずに、制御プログラム71a、データ活用プログラム71b、および、表示部品73によるWebHMIの動作をシミュレートできるモードである。シミュレータエディットモードとは、制御プログラム71a、データ活用プログラム71b、表示部品73によるWebHMIの動作をシミュレート中に、プロジェクトデータ70を編集できるモードである。プロジェクト管理部54は、エディタ部52aなどにより編集されたプロジェクトデータ70を記憶装置12に保存したり、記憶装置12からプロジェクトデータ70をエクスポートしたり、またはプロジェクトデータ70をインポートしたりする。製品を製造する工場に設定された複数の製造ラインでは、同一構成または類似した構成の複数のPLC1が稼働していることがある。これらの複数のPLC1間でプロジェクトデータ70を流用するために、エクスポートやインポートが利用される。転送部55は、操作部8を通じて入力されるユーザ指示にしたがってPLC1にプロジェクトデータ70を転送する。連携部56aは、Webサーバ60aおよびWebHMI開発環境61の通信処理部58bを通じてWebHMI開発環境61の連携部56bと相互に通信し、プロジェクトデータ70の編集処理に関して連携する。以下でも、PLC開発環境51とWebHMI開発環境61とはWebサーバ60aおよび通信処理部58bを通じて相互に通信する。Webサーバ60aおよび通信処理部58bの通信インタフェースはWebAPI(Webアプリケーションプログラミングインタフェース)である。連携部56bは、エディタ部52bで入力された文字または単語の一部を連携部56aに送信する。この際、連携部56bは入力すべき単語の候補の取得要求を連携部56aに送信するようにしてもよく、入力された文字または単語の一部を送信することで入力すべき単語の候補の取得要求の送信としてもよい。連携部56aは、受信された単語の一部について検索部57によりシンボル定義72を検索し、入力すべき単語の候補を連携部56bに送信する。連携部56bは、単語の候補をエディタ部52bに渡し、エディタ部52bが単語の候補のリストを表示する。検索部57は、エディタ部52a、52bからの文字列の検索要求や置換要求を実行する。統合開発環境50には一つの検索部57が設けられており、この検索部57はPLC開発環境51とWebHMI開発環境61とによって共通に使用される。通信処理部58aは、通信部13を介してPLC1と通信する機能であり、所定の通信プロトコルにしたがって通信フレームを送信したり、受信したりする。プロトコル変換部59aは、Webサーバ60aから渡された情報を通信処理部58aの通信プロトコルに従った通信フレームに変換したり、通信処理部58aから渡された通信フレームを変換してWebサーバ60aに転送したりする。このように、プロトコル変換部59aは、情報のカプセル化とデカプセル化を実行する。PLC1の拡張ユニット4aのWebサーバがWebHMIを提供している場合、Webブラウザ64は、通信部13を介してPLC1のWebサーバにアクセスする。たとえば、Webブラウザ64は、通信部13と通信部43とを接続する通信ケーブル9bを介して拡張ユニット4aのWebサーバと通信する。Webブラウザ64は、PLC1のWebサーバにアクセスしてWebHMIの表示部品73を取得して、表示部品73にしたがってWebHMIを描画して表示部7に表示する。なお、Webブラウザ64は、PC2bに設けられてもよい。統合開発環境50に組み込まれた組み込み型ブラウザ62は、Webサーバ60aにアクセスする。たとえば、組み込み型ブラウザ62は、通信処理部58bを介してWebサーバ60aにアクセスする。Webサーバ60aは、プロトコル変換部59aおよび通信処理部58aを介してPLC1のWebサーバにアクセスしてWebHMIの表示部品73を取得して組み込み型ブラウザ62に渡す。たとえば、Webサーバ60aは、通信部13と通信部33とを接続する通信ケーブル9aを介してPLC1のWebサーバと通信する。組み込み型ブラウザ62は、表示部品73にしたがってWebHMIを描画して表示部7に表示する。表示部品73は、シンボルの参照情報76aを有している。シンボルの参照情報76aは、表示部品73に表示されるシンボルの識別情報などを保持している。
【0031】
WebHMI開発環境61においてエディタ部52bは、操作部8から入力されるユーザ指示にしたがってWebHMIの表示部品73を編集する。なお、エディタ部52bは、表示部品73の編集中のデータである編集中表示部品75を記憶装置12に保持している。エディタ部52bがWebHMIに関する編集を完了すると、連携部56bが、編集中表示部品75を通信処理部58bとWebサーバ60aを介してアップロードする。Webサーバ60aは編集中表示部品75と保存リクエストを連携部56aに渡し、連携部56aは、これをプロジェクト管理部54に渡す。プロジェクト管理部54は、保存要求にしたがって編集中表示部品75を表示部品73としてプロジェクトデータ70に書き込む。編集中表示部品75もシンボルの参照情報76bを有している。連携部56bは、連携部56aと連携して動作モードの切り替えや編集処理(検索処理、置換処理、入力補助処理、入力検査処理)などを実行する。モード切替部53bは、WebHMI開発環境61の動作モードを管理している。モード切替部53bは、ユーザ操作に基づきWebHMI開発環境61の動作モードを切り替えるとともに、PLC開発環境51に対して動作モードを同期するよう連携部56bを通じて要求する(モード遷移要求)。また、モード切替部53bは、PLC開発環境51の動作モードに対する同期の要求(モード遷移要求)を、連携部56a、56bを介してモード切替部53aから受信すると、この要求にしたがってWebHMI開発環境61の動作モードを切り替える。これにより、PLC開発環境51の動作モードとWebHMI開発環境61の動作モードとが同期する。通信処理部58bは、Webサーバ60aと通信する。描画部63は、フロントエンドの構造を記述するマークアップデータ、装飾を記述するスタイルシートデータおよび動的な処理を記述するコード、たとえばHTML、CSSおよびjavaScript(R)のコードにより構成されたWebアプリケーションプログラム14cにしたがってWebページを描画して表示部7に表示する。
【0032】
ここで、組み込み型ブラウザ62がWebアプリケーションプログラム14cを実行することで、WebHMI開発環境61が実現されているが、これは一例にすぎない。PC2bのWebブラウザ64から拡張ユニット4aにアクセスすることで、拡張ユニット4aのメモリ42aに保存されているWebアプリケーションプログラム14cをWebブラウザ64上で実行してWebHMI開発環境61を実現してもよい。
【0033】
図5はPLC1により実現される機能を示している。実行エンジン80は、CPU31やCPU41などであり、制御プログラム71aを実行する。データ活用部81は、CPU31またはCPU41がデータ活用プログラム71bを実行することにより実現される。データ活用部81は、シンボル値を収集したり、シンボル値を統計処理したり、シンボル値の分析結果などを生成したりする。Webサーバ60bは、CPU31またはCPU41がWebサーバプログラムを実行することにより実現される。通信処理部58cは、通信部33を介してPC2aと通信する機能であり、所定の通信プロトコルにしたがって通信フレームを送信したり、受信したりする。プロトコル変換部59bは、Webサーバ60bから渡された情報を通信処理部58cの通信プロトコルに従った通信フレームに変換したり、通信処理部58cから渡された通信フレームを変換してWebサーバ60bに転送したりする。このように、プロトコル変換部59bは、情報のカプセル化とデカプセル化を実行する。Webサーバ60bは、プロジェクトデータ70に含まれる表示部品73をWebブラウザに提供することで、Webブラウザ上でWebHMIを実現する。
【0034】
●エディタモードにおける通信シーケンス
エディタモードでは、PLC開発環境51とWebHMI開発環境61とは以下のように通信することで相互に連携する。
【0035】
図6はPLC開発環境51がWebHMI開発環境61に対して連携のための要求を送信する例を示している。PLC開発環境51はサーバ側であるために、Server Sent Events(SSE)を利用して、プッシュ通信を実行する。
【0036】
S1でWebHMI開発環境61の連携部56bは通信処理部58bを介してPLC開発環境51のWebサーバ60aに対してSSE接続要求を送信する。Webサーバ60aはSSE接続要求を受信する。
【0037】
S2でWebサーバ60aはSSE接続完了を示すメッセージを送信する。連携部56bは通信処理部58bを介してこのメッセージを受信する。これにより、連携部56aは、Webサーバ60aを介して任意のタイミングで連携のための要求をWebHMI開発環境61に送信できるようになる。
【0038】
S3で連携部56aは、Webサーバ60aを通じてSSEにより各種の要求を送信する。連携部56bは、通信処理部58bにより各種の要求を受信する。ここで、各種の要求としては、たとえば、動作モードを切り替える要求、WebHMI開発環境61が表示しているWebページの切り替え要求、WebHMI開発環境61の動作状態を取得するための要求、編集中表示部品75をWebサーバ60aへアップロードするための要求、WebHMI開発環境61のユーザインタフェース(UI)にメッセージ(例:ダイアログ)を表示するための要求、ページまたはウインドウの新規作成要求、ページを示す情報を取得するための要求、UI操作禁止要求、UI操作禁止の解除要求、および、コメントセット/言語の切り替え要求などがある。
【0039】
S4で連携部56bは要求に対するレスポンスを作成して通信処理部58bを介してWebサーバ60aに送信する。Webサーバ60aはレスポンスを受信して連携部56aに渡す。連携部56aはレスポンスの内容に応じた処理を実行する。以下では、S3とS4とが繰り返す実行される。
【0040】
図7はWebHMI開発環境61がPLC開発環境51に対して連携のための要求を送信する例を示している。なお、WebHMI開発環境61はブラウザ側、つまりWebクライアントであるために、自由にPLC開発環境51に対して要求を送信できる。
【0041】
S5でWebHMI開発環境61の連携部56bは通信処理部58bを介して各種の要求をWebサーバ60aへ送信する。Webサーバ60aは要求を連携部56aに転送する。連携部56aは要求に応じてレスポンスを作成し、レスポンスをWebサーバ60aに渡す。
【0042】
S6でWebサーバ60aは要求に対するレスポンスをWebHMI開発環境61に送信する。連携部56bは通信処理部58bを介してレスポンスを受信する。
【0043】
ここで、WebHMI開発環境61からPLC開発環境51へ送信される要求としては、動作モードの切り替え要求や、PLC開発環境51内の編集機能(例:検索ダイアログ、置換ダイアログ)などの起動要求、PLC開発環境51におけるダイアログの表示要求、入力文字列候補のリストを取得するための要求、PLC開発環境51により管理されている設定情報を取得するための要求、設定情報の更新要求、入力文字列の構文解析(入力エラーチェック)を求めるための要求などがある。
【0044】
●フローチャート
図8はPLC開発環境51からWebHMI開発環境61に対してモードの切り替えを要求する方法を示している。具体的には、エディタモードからモニタモードへの切り替えを要求する方法を示している。ここで、PLC開発環境51のUIに設けられたモード切替ボタンがユーザにより押されたことが仮定されている。また、上述したSSEが利用され、PLC開発環境51からWebHMI開発環境61に対して要求を送信できるものとする。
【0045】
S11でCPU11(PLC開発環境51)は、WebHMI開発環境61に対して操作禁止を要求する。ここでは、SSEにより操作禁止要求が送信される。WebHMI開発環境61は操作禁止要求を受信すると、操作禁止状態に遷移する。
【0046】
S12でCPU11(PLC開発環境51)は、WebHMI開発環境61に対してWebHMI開発環境61の状態を取得する。WebHMI開発環境61は、自身の状態を示す状態情報をレスポンスとしてPLC開発環境51に送信する。
【0047】
S13でCPU11(PLC開発環境51)は、WebHMI開発環境61のレスポンスとして受信したWebHMI開発環境61の状態がダイアログの表示中であるかどうかを判定する。つまり、CPU11(PLC開発環境51)は、WebHMI開発環境61の状態を示す状態情報に基づいてWebHMI開発環境61の状態がダイアログの表示中であるかどうかを判定する。ダイアログの表示中であれば、CPU11はS14に進む。ダイアログの表示中でなければ、CPU11はS16に進む。
【0048】
S14でCPU11(PLC開発環境51)は、エラーダイアログを表示部7に表示する。エラーダイアログは、WebHMI開発環境61でダイアログが表示中であるためにモードの切り替えを実行できないことを示すメッセージを含む。
【0049】
S15でCPU11(PLC開発環境51)は、WebHMI開発環境61に対して操作禁止の解除を要求する。たとえば、SSEにより操作禁止解除要求が送信される。WebHMI開発環境61は、操作禁止解除要求にしたがって操作禁止を解除し、解除完了を示すレスポンスを送信する。これにより、本方法は終了する。
【0050】
S16でCPU11(PLC開発環境51)は、WebHMI開発環境61において編集中データがあるかどうかを判定する。PLC開発環境51(連携部56a)は、編集中データの有無を回答するようWebHMI開発環境61に対して要求する。WebHMI開発環境61(連携部56b)は、編集中データの有無を示すレスポンスをPLC開発環境51に送信する。これにより、連携部56aは、WebHMI開発環境61において編集中データがあるかどうかを判定する。編集中データがあれば、CPU11はS17に進む。編集中データがなければ、CPU11はS19に進む。
【0051】
S17でCPU11(PLC開発環境51)は、編集中データのアップロードをWebHMI開発環境61に要求する。WebHMI開発環境61の連携部56は、編集中データ(例:編集中表示部品75)をPLC開発環境51にアップロードする。PLC開発環境51のプロジェクト管理部54は、編集中表示部品75をプロジェクトデータ70に保存する。
【0052】
S18でCPU11(PLC開発環境51)は、プロジェクトデータ70をPLC1に対して転送する。
【0053】
S19でCPU11(PLC開発環境51のモード切替部53a)は、PLC開発環境51の動作モードをユーザ指示にしたがって切り替える。上述されたように、モード切替部53aは、連携部56a、56bを介して、WebHMI開発環境61のモード切替部53bに対してモード切替を要求する。モード切替部53bは、モード切替要求にしたがってWebHMI開発環境61の動作モードを切り替える。モード切替部53bは、連携部56b、56aを介して、モード切替完了を示すレスポンスをモード切替部53aに対して送信する。
【0054】
S20でCPU11(PLC開発環境51)は、WebHMI開発環境61に対して操作禁止の解除を要求する。連携部56bは、解除要求にしたがって操作禁止を解除し、解除完了を示すレスポンスをWebHMI開発環境61に対して送信する。
【0055】
図9はPLC開発環境51からWebHMI開発環境61に対してモードの切り替えを要求する方法のうち、WebHMI開発環境61において実行される方法を示している。
【0056】
S21でCPU11(WebHMI開発環境61の連携部56b)は、操作禁止要求にしたがって操作禁止状態に遷移する。操作禁止状態への遷移が完了すると、CPU11は完了を示すレスポンスをPLC開発環境51に対して送信する。
【0057】
S22でCPU11(連携部56b)は、WebHMI開発環境61の状態を示す状態情報をPLC開発環境51に送信する。連携部56bは、状態取得要求に対するレスポンスとして状態情報を送信する。
【0058】
S23でCPU11(連携部56b)は、操作禁止の解除要求を受信したかどうかを判定する。操作禁止の解除要求は、WebHMI開発環境61が動作モードを切り替えられない状態である場合に、受信される。操作禁止の解除要求を受信した場合、CPU11は、S24に進む。操作禁止の解除要求を受信していない場合、CPU11はS25に進む。
【0059】
S24でCPU11(連携部56b)は、操作禁止を解除する。連携部56bは、操作禁止の解除が完了したことを示すレスポンスをPLC開発環境51に送信する。
【0060】
S25でCPU11(連携部56b)は、編集中データの有無をPLC開発環境51に対して報告する。連携部56bは、PLC開発環境51から有無の問い合わせ要求を受信すると、有無を示すレスポンスをPLC開発環境51に送信する。
【0061】
S26でCPU11(連携部56b)は、編集中データのアップロード要求を受信したかどうかを判定する。編集中データのアップロード要求を受信した場合、CPU11はS27に進む。編集中データのアップロード要求を受信していない場合、CPU11はS28に進む。
【0062】
S27でCPU11(連携部56b)は、編集中データ(例:編集中表示部品75)をPLC開発環境51に対してアップロードする。
【0063】
S28でCPU11(連携部56b)は、PLC開発環境51からモード切替要求を受信したかどうかを判定する。モード切替要求を受信した場合、連携部56bは、モード切替要求をモード切替部53bに渡す。その後、CPU11はS29に進む。モード切替要求を受信していない場合、CPU11はS30に進む。
【0064】
S29でCPU11(モード切替部53b)は、モード切替要求にしたがって動作モードを切り替える。モード切替部53bは、連携部56bを通じて、動作モードの切り替えが完了したことを示すレスポンスをPLC開発環境51に送信する。このレスポンスは、連携部56aを介して、モード切替部53aに転送される。
【0065】
S30でCPU11(連携部56b)は、操作禁止を解除する。連携部56bは、操作禁止解除要求にしたがって操作禁止状態を解除し、解除完了を示すレスポンスをPLC開発環境51に送信する。
【0066】
図10はWebHMI開発環境61からPLC開発環境51に対してモードの切り替えを要求する方法を示している。ここで、WebHMI開発環境61のUIに設けられたモード切替ボタンがユーザにより押されたことが仮定されている。
【0067】
S31でCPU11(モード切替部53b)は、連携部56bを介してPLC開発環境51に対してモード切替を要求する。ここで、PLC開発環境51の連携部56aは、PLC開発環境51がビジー状態かどうかを判定する。PLC開発環境51がビジー状態である場合は、モード切替を実行できないため、連携部56aはモード切替失敗を示すレスポンスをWebHMI開発環境61に対して送信する。
【0068】
S32でCPU11(連携部56b)は、PLC開発環境51からのレスポンに基づきPLC開発環境51でモード切替が失敗したかどうかを判定する。切替が失敗した場合、CPU11はS45に進み、失敗メッセージを表示部7に表示する。切替が失敗していない場合、CPU11はS33に進む。
【0069】
S33でCPU11(連携部56b)は、編集中データ(例:編集中表示部品75)があるかどうかを判定する。編集中データがある場合、CPU11は、S34に進む。編集中データがない場合、CPU11は、S35に進む。
【0070】
S34でCPU11(連携部56b)は、確認ダイアログを表示部7に表示する。確認ダイアログは、たとえば、編集中表示部品75を含むプロジェクトデータ70をPLC1に対して転送することを示すメッセージを含む。
【0071】
S35でCPU11(連携部56b)は、WebHMI開発環境61に対するユーザによる操作を禁止する。
【0072】
S36でCPU11(連携部56b)は、WebHMI開発環境61の動作状態を示す状態情報をPLC開発環境51に対して送信する。
【0073】
S37でCPU11(連携部56b)は、操作禁止の解除要求を受信したかどうかを判定する。解除要求を受信した場合、CPU11は、S47に進み、操作禁止を解除する。一方、解除要求を受信していない場合、CPU11は、S38に進む。
【0074】
S38でCPU11(連携部56b)は、編集中データ(例:編集中表示部品75)をPLC開発環境51に対してアップロードする。
【0075】
S39でCPU11(連携部56b)は、PLC開発環境51から受信された情報(例:モード切替失敗通知)に基づき動作モードの切り替えがPLC開発環境51において失敗したかどうかを判定する。PLC開発環境51において動作モードの切り替えが失敗した場合、CPU11は、S49に進み、表示部7に失敗メッセージを表示する。連携部56bは、モード切替失敗の確認が完了したことを示すレスポンスをPLC開発環境51に送信する。一方、CPU11(連携部56b)は、動作モードの切り替えがPLC開発環境51において失敗していない場合、CPU11はS40に進む。
【0076】
S40でCPU11(連携部56b)は、PLC開発環境51からモード切替要求を受信したかどうかを判定する。PLC開発環境51からモード切替要求を受信した場合、CPU11はS41に進む。連携部56bはモード切替要求をモード切替部53bに転送する。PLC開発環境51からモード切替要求を受信していない場合、CPU11は、S42に進む。
【0077】
S41でCPU11(モード切替部53b)は、モード切替要求にしたがってWebHMI開発環境61の動作モードを切り替える。ここで、受信されるモード切替要求は、S31で送信されたモード切替要求の許可信号として機能する。モード切替が完了すると、モード切替部53bは連携部56bを介して完了を示すレスポンスをPLC開発環境51に送信する。
【0078】
S42でCPU11(連携部56b)は、WebHMI開発環境61の操作禁止を解除する。解除が完了すると、連携部56bは、解除完了を示すレスポンスをPLC開発環境51に送信する。
【0079】
図11はWebHMI開発環境61からPLC開発環境51に対してモードの切り替えを要求する方法のうち、PLC開発環境51において実行される方法を示している。
【0080】
S51でCPU11(連携部56a)は、PLC開発環境51の状態がビジー状態であるかどうかを判定する。たとえば、PLC開発環境51のモーダルウインドウが開いている場合、PLC開発環境51の状態はビジー状態であると判定される。PLC開発環境51の状態がビジー状態であれば、CPU11はS63に進み、モード切替が失敗したことを示す失敗メッセージをWebHMI開発環境61に対して送信する。WebHMI開発環境61の連携部56bは、受信した失敗メッセージを、描画部63を通じて表示部7に表示する。一方、PLC開発環境51の状態がビジー状態でなければ、CPU11はS52に進む。
【0081】
S52でCPU11(連携部56a)は、PLC開発環境51またはWebHMI開発環境61において編集中データがあるかどうかを判定する。編集中データがなければ、CPU11はS54に進む。編集中データがあれば、CPU11はS53に進む。
【0082】
S53でCPU11(連携部56a)は、確認ダイアログを表示することをWebHMI開発環境61に対して要求する。この確認ダイアログは、編集中データの転送が必要であること、ひいてはプロジェクトデータ70をPLC1へ転送することが必要であることを示すメッセージを含む。ユーザはWebHMI開発環境61において表示された確認ダイアログのOKボタンを操作部8により押す。
【0083】
S54でCPU11(連携部56a)は、WebHMI開発環境61における操作を禁止する。上述されたように、操作禁止要求がWebHMI開発環境61に対して送信され、WebHMI開発環境61から操作禁止完了レスポンスが受信される。
【0084】
S55でCPU11(連携部56a)は、WebHMI開発環境61の状態を取得する。上述されたように、WebHMI開発環境61に対して状態取得要求が送信され、状態情報を含むレスポンスが返信される。
【0085】
S56でCPU11(連携部56a)は、状態情報に基づきWebHMI開発環境61においてダイアログが表示中であるかどうかを判定する。ダイアログが表示中である場合、CPU11はS65に進み、PLC開発環境51においてエラーダイアログを表示する。さらに、CPU11は、WebHMI開発環境61に対して、操作禁止解除要求を送信することで、WebHMI開発環境61の操作禁止を解除する。一方、ダイアログが表示中でない場合、CPU11は、S57に進む。
【0086】
S57でCPU11(連携部56a)は、WebHMI開発環境61に対してアップロード要求を送信することで、WebHMI開発環境61に編集中データのアップロードを要求する。これにより、WebHMI開発環境61は編集中データをPLC開発環境51に対してアップロードし、アップロード完了レスポンスを送信する。
【0087】
S58でCPU11(エディタ部52a)は、プロジェクトデータ70のうち変換が必要となる一部のデータを変換し、変換が成功したかどうかを判定する。この変換に使用される変換ルールはエディタ部52aに実装されているが、変換部はエディタ部52aの外部に設けられてもよい。変換が失敗すると、CPU11は、S67に進み、モード切替が失敗したことを示す失敗メッセージをWebHMI開発環境61に表示させ、WebHMI開発環境61における操作禁止を解除する。たとえば、CPU11(エディタ部52a)がWebHMI開発環境61に操作禁止解除要求を送信する。操作禁止解除要求を受信したWebHMI開発環境61は操作禁止を解除する。一方、変換が成功すると、CPU11は、S59に進む。
【0088】
S59でCPU11(転送部55)は、PLC1に対してプロジェクトデータ70を転送する。
【0089】
S60でCPU11(モード切替部53a)は、モード切替を実行する。つまり、モード切替部53aは、PLC開発環境51の動作モードを、WebHMI開発環境61から指定された他の動作モードへ切り替える。たとえば、モード切替部53aは、PLC開発環境51の動作モードを、エディタモードからモニタモードへ切り替える。
【0090】
S61でCPU11(連携部56a)は、WebHMI開発環境61に対してモード切替を要求するとともに、WebHMI開発環境61の操作禁止を解除する。たとえば、CPU11(連携部56a)は、WebHMI開発環境61に操作禁止の解除要求を送信し、WebHMI開発環境61は受信した操作禁止の解除要求に従い操作禁止を解除する。WebHMI開発環境61は、モード切替要求を受信すると、モード切替を実行し、モード切替完了レスポンスを返信する。また、WebHMI開発環境61は、操作禁止解除要求を受信すると、操作禁止を解除して、解除完了を示すレスポンスを返信する。
【0091】
●モニタモード
モニタモードにおいて、WebHMI開発環境61は、PLC開発環境51を介してPLC1のWebサーバ60bからWebHMIのUIを表示するためのHTMLデータ、CSSデータおよびJavaScript(R)スクリプトを受信してWebHMIのUIを表示部7に表示する。ここでの通信ルートは、上述されたように、通信処理部58b<=>Webサーバ60a<=>プロトコル変換部59a<=>通信処理部58a<=>通信処理部58c<=>プロトコル変換部59b<=>Webサーバ60bといったルートである。ここで、PLC1とPC2aとの間の物理層のインタフェースは、イーサネット(R)、USB(ユニバーサルシリアルバス)IF(インタフェース)、シリアル通信IFなどである。また、より上位層の通信プロトコルは、PLC1を製造するメーカーによる独自プロトコルであることもある。そこで、PC2a側のWebサーバ60aとPLC1側のWebサーバ60bとの間ではTCP透過通信が実現されるように、プロトコル変換部59a、59bが設けられている。ここでTCP透過通信とは、イーサネット(R)とは異なる物理層を介した通信においてイーサネット(R)をエミュレートして、TCPを透過的に扱うものである。要するに、Webサーバ60aは通信処理部58bからプロトコル変換部59aに、通信を受け流すように動作する。たとえば、プロトコル変換部59aは、Webサーバ60aから受信されたWebAPIによるフレームに対して独自プロトコルのヘッダを付与することで、フレームをカプセル化する。さらに、通信処理部58aがUSBなどのヘッダを付与して通信フレームを作成して、通信処理部58cへ送信する。通信処理部58cは、受信された通信フレームからUSBなどのヘッダを除去してプロトコル変換部59bに渡す。プロトコル変換部59bは、独自プロトコルのヘッダを除去してWebサーバ60bに渡す。Webサーバ60bからWebサーバ60aへの通信手順は、この逆の手順となる。
【0092】
このように、プロトコル変換部59a、59bが設けられているため、PC2aとPLC1との間の通信インタフェースはイーサネット(R)などの有線LANや無線LANに限定されることはない。つまり、PC2aとPLC1との間の通信インタフェースは、USB IFなどIPアドレスを割り当てられない通信回路により実現されてもよい。
【0093】
<開発補助機能>
●WebHMI開発環境の起動
図12はPLC開発環境51のUI100を示している。モード選択メニュー101は、統合開発環境50の動作モードを選択可能に表示する。プログラム表示領域104は、編集対象となるラダープログラムを編集可能に表示する。プロジェクト表示領域102は、プロジェクトを構成する情報を表示する。この情報としては、PLC1を構成している基本ユニット3および拡張ユニット4の仕様情報および設定情報、シンボル定義、データ活用プログラム、ラダープログラムなどがある。
【0094】
ユーザがポインタ103を操作して、プロジェクト表示領域102から"WebHMI"を選択すると、PLC開発環境51は、メニュー105を表示する。ユーザがメニュー105から"新規作成"を選択すると、PLC開発環境51は、メニュー106を表示する。ユーザがメニュー106から"画面"をポインタ103により選択すると、PLC開発環境51は、WebHMI開発環境61を起動する。
【0095】
図13はWebHMI開発環境61の画面新規作成のためのUI110を示している。UI110は、WebHMI開発環境61の組み込み型ブラウザ62によって表示される。UI110は、各画面を識別するための識別番号、名前、URLおよび画面サイズなどの設定を受け付ける。
【0096】
このように表示画面を編集するためのUI110は、PCアプリケーションであるPLC開発環境51のUI100からシームレスに起動可能である。そのため、ユーザは、PLC開発環境51とWebHMI開発環境61とを別のアプリケーションと認識することなく、統合開発環境50内でPLC開発環境51とWebHMI開発環境61とを利用できる。
【0097】
●シンボルのメタ情報
図14は、WebHMI開発環境61において表示部品に表示されるシンボル値などを格納している参照先シンボルの設定UI111を示している。参照先シンボルとは、表示部品により値が参照されるシンボルのことである。設定UI111は、シンボルの種別の設定部112a、シンボル名の設定部112b、コメント表示領域113aおよびデータ形式表示領域113bを有している。連携部56bは、シンボル名の設定部112bに入力されたシンボル(デバイス、変数)についてPLC開発環境51の連携部56aに問い合わせる。連携部56aは、検索部57に検索を実行させ、シンボル名に対応するコメントとデータ形式などのメタ情報を抽出し、連携部56aを介して連携部56bに送信する。連携部56bは、コメントとデータ形式を描画部63に渡し、描画部63がコメントをコメント表示領域113aに表示し、データ形式をデータ形式表示領域113bに表示する。
【0098】
シンボル定義72はPLC開発環境51において入力されて設定されるため、PLC開発環境51はシンボル定義72を表示することができる。しかし、WebHMI開発環境61で表示部品に対して参照先シンボルを設定する際に、PLC開発環境51に戻ってシンボル定義72を表示させることはユーザの利便性を低下させるであろう。本実施形態であれば、WebHMI開発環境61は、シンボル定義72をUI111に表示できるため、ユーザはPLC開発環境51に戻ることなく、シンボル定義72を容易に確認できるようになる。
【0099】
●シンボルの入力補助
図15はシンボルの入力補助を説明する図である。上述されたように、連携部56bは、PLC開発環境51の検索部57を利用してプロジェクトデータ70を検索して検索結果を取得できる。図15では、シンボル名の設定部112bに入力された"DM"という文字列とシンボルの種別の情報とに基づく検索結果を表示する候補選択部114が例示されている。連携部56bが検索結果を描画部63に渡すと、描画部63は、検索結果を列挙した候補選択部114を表示する。候補選択部114は、DMを含むデバイスの候補と、そのデバイスに対して設定または定義されているコメントなどのメタ情報を表示する。ユーザが候補選択部114からいずれかの候補を選択すると、エディタ部52bは、選択された候補を設定部112bに入力する。描画部63は、入力された候補を設定部112bに表示する。なお、このような候補の検索および選択機能(検索部57)はPLC開発環境51に搭載されており、WebHMI開発環境61が連携部56bを通じて、PLC開発環境51の機能を利用している。
【0100】
このように、WebHMI開発環境61はWebAPIを介して要求を送信することでPLC開発環境51の機能を利用できるため、WebHMI開発環境61とPLC開発環境51とで同一の機能を個別に実装する必要がなくなる。また、PLC開発環境51が管理しているシンボル定義72をWebHMI開発環境61が参照できるため、WebHMI開発環境61が個別にシンボル定義72を作成して保持する必要がない。また、複数の異なるシンボル定義72が競合または乱立してしまうこともない。
【0101】
●検索置換機能
図16は検索部57のダイアログ120を示している。検索部57はPLC開発環境51とWebHMI開発環境61とのどちらからも呼出し可能である。検索部57は、統合開発環境50の全体にわたって検索と置換を実行できる。そのため、ユーザは、PLC開発環境51とWebHMI開発環境61とを横断して検索と置換とを実行できる。ダイアログ120は、検索対象を限定するための複数のタブ121を有している。検索対象設定部122は、検索対象となる文字列の入力を受け付ける。範囲設定部123は、検索範囲の設定を受け付ける。ここでは、プロジェクト全体と現在のウインドウとのどちらかが検索範囲として設定される。このように、検索部57は、常に統合開発環境50の全体で検索を実行するわけではなく、ダイアログ120を呼び出したPLC開発環境51またはWebHMI開発環境61(つまり、現在のウインドウ)に限定して検索を実行してもよい。これは、検索に要する時間を短縮する効果をもたらすであろう。
【0102】
●表示言語とコメントセットの一括切替
PLC開発環境51またはWebHMI開発環境61の一方で表示言語の設定が変更されると、PLC開発環境51またはWebHMI開発環境61の他方の表示言語の設定も変更される。PLC開発環境51で表示言語の設定変更がユーザによって指示されると、連携部56aは、連携部56bに対して、表示言語の設定変更を指示する。連携部56bはこの指示に従ってWebHMI開発環境61の表示言語の設定を変更する。逆に、WebHMI開発環境61で表示言語の設定変更がユーザによって指示されると、連携部56bは、連携部56aに対して、表示言語の設定変更を要求する。連携部56aはこの要求に従ってPLC開発環境51の表示言語の設定を変更する。コメントセットの変更も表示言語の変更と同様の手順で実行される。
【0103】
●入力された文字列のエラー検出と通知
図17は、WebHMI開発環境61において入力された文字列のエラー検出と通知を説明する図である。上述されたようにWebHMI開発環境61の連携部56bは、設定部112bに入力された文字列(例:varHoge)の検索結果を検索部57から取得できる。検索部57は、設定部112bに入力された文字列を発見できなかった場合、または、設定部112bに入力された文字列は存在するが、参照元として指定不可のデータ形式のシンボルの場合、そのことを示すレスポンスを連携部56bに送信する。連携部56bは、レスポンスに応じた警告メッセージ115を、描画部63を介してUI111に表示してもよい。このように未定義のシンボルが入力された場合、警告メッセージ115が表示される。描画部63は、警告メッセージ115を表示する代わりに、設定部112bを強調表示してもよい。たとえば、設定部112bの入力フィールドの枠の色が通常の色とは異なる色に変更されてもよい。これにより、ユーザは、入力ミスに容易に気が付くことができるであろう。
【0104】
●プロジェクト転送前の変換チェック
転送部55は、PLC開発環境51により作成されたデータとWebHMI開発環境61において作成されたデータとの両方を含むプロジェクトデータ70をPLC1に転送する。ここで、転送部55は、プロジェクトデータ70の検査を実行する。ここで、検査とは、プロジェクトデータ70の全体におけるシンボルなどの設定の整合性をチェックすることを含む。さらに、転送部55は、WebHMI開発環境61において作成された表示部品73の変換を実行して変換結果にエラーが無いかどうかをチェックする。転送部55は、エラーを見つけるとエラーの原因となった表示部品73の編集画面を表示するようWebHMI開発環境61に要求してもよい。WebHMI開発環境61の描画部63は、当該要求に従ってエラーの原因となった表示部品73の編集画面を表示する。これにより、ユーザは容易にエラーを解消できるようになる。
【0105】
●プロジェクトの保存、オープン、転送および照合
本実施形態ではWebHMI開発環境61により作成された表示部品73がPLC開発環境51により作成された制御プログラム71aなどとともに一括して保存、オープン、転送および照合される。そのため、PLC開発環境51とWebHMI開発環境61とでそれぞれ別個にプロジェクトを管理する場合と比較して、ユーザのプロジェクト管理に関する負担が大幅に軽減される。
【0106】
なお、転送部55は、プロジェクトデータ70のうち転送対象となるデータをユーザに選択させるためのダイアログを表示部7に表示して、ユーザによる選択を受け付けてもよい。ここで、ダイアログには、WebHMI開発環境61により作成されたデータと、PLC開発環境51により作成されたデータとが転送候補の一覧として表示される。これらのデータはそれぞれチェックボックスなどにより、個別に選択可能に表示される。つまり、ユーザは、一つの選択画面で、転送対象となるデータを指定または解除することが可能となる。
【0107】
●インポート/エクスポート
図18はプロジェクトデータ70のインポートおよびエクスポート機能を説明する図である。プロジェクト管理部54は、プロジェクトデータ70を構成する複数のデータのうち一部または全部を指定してインポートやエクスポートを実行する。たとえば、エクスポートが指示されると、プロジェクト管理部54は、エクスポートの対象となるデータの選択画面を表示部7に表示してもよい。図18において、プロジェクトデータ70は、PLCプログラム71c、71d、71e、表示部品73a、73b、73c、および、シンボル定義72を含んでいる。プロジェクト管理部54は、ユーザによる選択にしたがって、PLCプログラム71c、表示部品73a、73bおよびシンボル定義72を含むようにエクスポート単位140aを作成している。さらに、プロジェクト管理部54は、ユーザによる選択にしたがって、PLCプログラム71c、71d、71e、表示部品73aおよびシンボル定義72を含むようにエクスポート単位140bを作成している。
【0108】
なお、図18のエクスポート単位140a、140bはインポート単位として理解されてもよい。つまり、プロジェクト管理部54は、インポート対象となるプロジェクトデータ70をオープンし、プロジェクトデータ70から他のプロジェクトデータにインポートされるプログラムやデータ群からなるインポート単位を設定してもよい。
【0109】
これにより、PLC1に関するプログラムや表示部品73を他のプロジェクトでも流用できるため、プロジェクトデータの開発効率が向上するであろう。
【0110】
●編集作業の連動
WebHMI開発環境61とPLC開発環境51とで同一のシンボルを参照している場合がある。さらに、WebHMI開発環境61とPLC開発環境51とのうちの一方の環境において、参照されるシンボルが変更されてしまうことがある。この場合、一方の環境でのシンボルの変更が、WebHMI開発環境61とPLC開発環境51とのうちの他方の環境にも自動的に反映されれば、ユーザの編集負担が軽減されるであろう。
【0111】
たとえば、WebHMI開発環境61において、ある表示部品73の参照先として拡張ユニット4aのバッファメモリが設定されることがある。通常、複数の拡張ユニット4には、それぞれ固有のユニット番号が付与されており、バッファメモリも拡張ユニット4のユニット番号に紐づけられている。たとえば、バッファメモリは、ユニット番号とバッファメモリ番号とによって識別される。ここで、PLC1の構成が変更されると、ユニット番号は割り当て直される。たとえば、基本ユニット3の隣に拡張ユニット4aが接続されている場合、基本ユニット3のユニット番号には"0"が設定され、拡張ユニット4aには"1"が設定される。基本ユニット3と拡張ユニット4aとの間に拡張ユニット4bが追加的に接続されると、拡張ユニット4bのユニット番号には"1"が設定され、拡張ユニット4aのユニット番号には"2"が設定される。このように、PLC1のユニット構成が変更されると、拡張ユニット4aのユニット番号が変更されてしまう。そのため、ある表示部品の参照先として拡張ユニット4a(ユニット番号=1)のバッファメモリ(バッファメモリ番号=16)が指定されている場合、ある表示部品の参照先を拡張ユニット4a(ユニット番号=2)のバッファメモリ(バッファメモリ番号=16)に変更する必要がある。
【0112】
PLC開発環境51は、構成情報74に基本ユニット3のユニット番号、拡張ユニット4a、4bのユニット番号を保持している。また、PLC開発環境51のエディタ部52aは、拡張ユニット4aの接続位置が変更されたり、他の拡張ユニット4が追加されたりすると、ユニット番号を振り直す。検索部57は、変更前のユニット番号に紐づけられているシンボルを検索し、抽出されたシンボルのユニット番号を、変更後のユニット番号に変更する。また、検索部57は、WebHMI開発環境61により生成された表示部品73が、変更前のユニット番号に紐づけられているシンボルを抽出すると、抽出されたシンボルについてユニット番号が変更されたことを示す通知を、連携部56aを通じてWebHMI開発環境61の連携部56bに通知する。連携部56bは、変更前のユニット番号に紐づけられているシンボルを編集中表示部品75内のシンボルの参照情報76bから検索して抽出し、抽出されたシンボルのユニット番号を、変更後のユニット番号に書き換える。これにより、ユーザの負担が軽減される。
【0113】
●エクスポート側のPLCの構成とインポート側のPLCの構成とが異なる場合
プロジェクトデータ70をエクスポートしようとするエクスポート側のPLC1が基本ユニット3と3つの拡張ユニット4から構成されており、プロジェクトデータ70をインポートしようとしているインポート側のPLC1が基本ユニット3と4つの拡張ユニット4から構成されていることがある。このような場合、ユーザは、インポートしたプロジェクトデータ70を、インポート側のPLC1の構成に応じて適切に編集しなければならない。プロジェクト管理部54は、エクスポート側のPLC1における拡張ユニットと、インポート側のPLC1における拡張ユニットと関係をユーザに問い合わせるためのダイアログを表示部7に表示してもよい。
【0114】
図19は、ユニット割り当てのためのダイアログ150を示している。ダイアログ150は、エクスポート側の拡張ユニットと、インポート側の拡張ユニットとの対応関係についてユーザの指定を受け付けるユニット割り当て部151を有している。この例では、エクスポート側のPLC1でユニット番号が2番である拡張ユニットが、インポート側のPLC1においてユニット番号が3番に割り当てられることがユーザにより指定されている。プロジェクト管理部54は、このユニット割り当てに基づき、インポート対象のプロジェクトデータ70を検索し、変更前のユニット番号(=2)に紐づけられているすべてのシンボルを抽出し、抽出されたシンボルに対して変更後のユニット番号(=3)に書き換える。この際に、ユニット番号以外にも、構成情報にもとづくシンボル名があれば書き換えられる。たとえばユニット番号0から連番で割り付けたリレーをWebHMI開発環境が参照していれば、そのシンボル名も変更される。また、シンボルに紐づけられているバッファメモリ番号は変更されないが、シンボル名が変更される。たとえば、ユニット番号が変更されると、シンボル名がR35000からR39000に変更されるようにしてもよい。プロジェクト管理部54は、ユニット番号の変更に基づきシンボル名を変更する。
【0115】
●PLC開発環境でイメージデータ付きの表示部品をインポートした場合
WebHMI開発環境61は、WebHMIを実現するWebページのためのイメージデータに識別情報を付与して管理する。イメージデータは画像ファイルとして保存されているため、ファイル名に対して識別情報(例:識別番号)が紐づけられる。上述したインポート/エクスポート機能によりプロジェクト管理部54が、あるPLC1のためのプロジェクトデータ70の一部を他のPLC1のプロジェクトデータ70に取り込むことができる。このとき、エクスポート側(ソース)となるプロジェクトデータ70に含まれるイメージデータの識別情報が、インポート側(ディスティネーション)である他のPLC1のプロジェクトデータ70において使用済みであることがある。たとえば、エクスポート側のプロジェクトデータ70において"AAA.png"というファイル名のイメージデータに対して識別番号として"0"が割り当てられており、インポート側のプロジェクトデータ70において"BBB.png"というファイル名のイメージデータに対して識別番号として"0"が割り当てられていることがある。つまり、識別番号が重複してしまう。
【0116】
そこで、プロジェクト管理部54は、ソースのプロジェクトデータ70においてイメージデータに割り当てられている識別番号が、ディスティネーションのプロジェクトデータ70においてイメージデータに割り当てられている識別番号と重複しているかどうかを判定する。重複した識別番号が発見されると、プロジェクト管理部54は、ソースのプロジェクトデータ70のイメージデータの識別番号を、ディスティネーションのプロジェクトデータ70において未使用の識別番号に置換する。さらに、プロジェクト管理部54は、ソースのプロジェクトデータ70において置換前の識別番号を参照している表示部品73を検索し、抽出された表示部品73におけるイメージデータの識別番号を、当該未使用の識別番号に置換する。これにより、イメージデータの識別情報の重複が自動で回避されるようになり、ユーザによる識別情報の変更の負担が軽減される。ここでは、識別情報として識別番号が例示されているが、識別情報はファイル名など任意の文字列であってもよい。この場合もプロジェクト管理部54は、ソースにおいて重複した識別情報を、ディスティネーションにおいて未使用の識別情報に置換する。また、イメージデータは静止画の他、映像データであってもよい。イメージデータに代えて、または、加えて、音声データであってもよい。その後、プロジェクト管理部54は、ソースとなるプロジェクトデータ70を、ディスティネーションとなるプロジェクトデータ70にマージまたは取り込む。
【0117】
●WebHMI開発環境のUI
図20および図21はWebHMI開発環境61の描画ツールのUI160を示している。モード切替スイッチ161は、WebHMI開発環境61の動作モード(例:エディットモード、オンラインエディットモード)を切り替えるためのスイッチである。モード切替部53bは、モード切替スイッチ161を介してユーザによるモード切替の指示を受け付ける。図20ではエディットモードが選択されている。
【0118】
作画エリア162は、WebHMIを構成する一つ以上の表示部品が配置される表示領域である。ユーザは、部品一覧表示部164に表示されている表示部品をポインタ103によりドラックアンドドロップすることで、作画エリア162における任意の位置に表示部品を配置する。部品一覧表示部164には、様々な表示部品が選択可能に表示される。テキスト表示部品は、予め定められた固のテキスト(例:文字や数字)を表示する表示部品である。文字表示部品は、所定のシンボルに保持されている文字を参照して表示する表示部品である。文字表示部品により参照されるシンボルの種別は文字列に制限される。数値表示部品は、所定のシンボルに保持されている数値を表示する表示部品である。数値表示部品により参照されるシンボルの種別は数値に制限される。ランプ表示部品は、ビットデバイス等のシンボルに保持される二値(オン/オフ)を示す表示部品である。Nステートランプ表示部品は、所定のシンボルに保持されるN個の状態のうちいずれの状態であるかを色の違いにより示す表示部品である。チャート表示部品は、所定のシンボルに保持される数値をグラフ化して表示する表示部品である。チャート表示部品としては、折れ線グラフ、棒グラフ、扇型メータ、バー型メータ、円グラフなどが含まれてもよい。また、アラームの履歴データを一覧表示する表示部品、ヒストグラムを表示する表示部品、パレート図を表示する表示部品、ガントチャートなどを表示する統計図の表示部品が選択可能な候補として提示されてもよい。また、参照されるシンボルの値を書き換えるコントロール部品が選択可能に提示されてもよい。さらに、イメージデータ、カメラデータ、作画図形などのメディアデータを表示する表示部品が選択可能に表示されてもよい。
【0119】
図20の作画エリア162にはランプ表示部品165、文字表示部品166、テキスト表示部品167、数値表示部品168、および、チャート表示部品169などがすでに配置されている。図20では数値表示部品168がポインタ103により選択されているため、数値表示部品のためのプロパティ設定ウインドウ163も表示されている。プロパティ設定ウインドウ163は、数値を表示するために必要となる各種の設定を受け付ける。たとえば、参照されるシンボルの名称、表示桁数、ゼロサプレス表示の有効/無効、小数点以下桁数などが設定項目としてプロパティ設定ウインドウ163に提示される。チャート部品のプロパティ設定ウインドウ163は、参照されるシンボルとして時系列データを取り扱えるシンボルの設定項目を有する。
【0120】
図21はモード切替スイッチ161によって動作モードがオンラインエディットモードに切り替えられたUI160を示している。上述されたように、オンラインエディットモードで、通信処理部58bは、作画エリア162に配置された表示部品によって参照されているシンボルの値をリアルタイムでPLC1から取得する。描画部63は、取得された値を表示部品に表示する。オンラインエディットモードにおいては、定期的に値がPLC1から取得されるため、表示部品に表示される情報も定期的に更新される。値の更新タイミングは、定期的であることは必須ではなく、所定の条件が満たされることであってもよい。
【0121】
●数値表示形式の連動
PLCシステムにおいて、小数の表示形式には、固定小数点数と浮動小数点数とがある。固定小数点数とは、小数点が置かれる桁を固定して数を表現する方式をいう。たとえば、10進数で「下から1桁目を小数点以下」と定義した場合、「123」は「12.3」を意味し、「-12345」は「-1234.5」を意味する。浮動小数点数とは、符号部と、固定長の仮数部と、固定長の指数部とにより数を表現する方式をいう。C言語では浮動小数点はfloat型やdouble型の変数として扱われる。PLCシステムでは浮動小数点はREAL型やLREAL型という形式で扱われる。
【0122】
連携部56bは、図20に示された数値表示部品168の表示対象として指定されたシンボルの定義を連携部56aに対して問い合わせる。つまり、定義の取得要求が送信される。連携部56aは、指定されたシンボルの定義(データ形式(データ種別)など)を検索して取得して、取得された定義をレスポンスとして連携部56bに送信する。連携部56bは、シンボルが浮動小数点型の変数である場合、その変数の表示形式を浮動小数点数に設定する。連携部56bは、シンボルが整数型の変数である場合、その変数の表示形式を固定小数点数に設定する。エディタ部52bは、プロパティファイル設定ウインドウ163において小数点以下桁数(例:2)についてユーザの指定を受け付けて、連携部56bに渡す。シンボルが浮動小数点型の変数であり、その表現形式が浮動小数点数である場合、連携部56bは、ユーザにより指定された小数点以下桁数にしたがって、シンボルの値を四捨五入または切り捨てて、数値表示部品168に値を表示する。たとえば、シンボルの値が123.45678である場合、指定された小数点以下桁数(=2)にしたがって切り捨てが実行されて、数値表示部品168には123.45が表示される。一方で、シンボルが整数型であり、表現形式が固定小数点数である場合、連携部56bは、指定された小数点以下桁数にしたがって値に小数点を付与する。たとえば、シンボルの値が54321であり、小数点以下桁数が2であった場合、数値表示部品168には、543.21が表示される。このように、連携部56bは、数値表示部品168により参照されるシンボルのデータ形式をPLC開発環境51から取得するとともに、ユーザにより指定された表示形式にしたがって、シンボルの表示形式を自動で調整する。また、WebHMI開発環境61は、浮動小数点型のシンボルの値を浮動小数点数として扱い、整数型のシンボルを固定小数点数として扱ってもよい。前者では、ユーザにより指定された小数点以下桁数にしたがって四捨五入または切り捨てが適用される。後者では、ユーザにより指定された小数点以下桁数にしたがって、小数点が適用される。
【0123】
このように、WebHMI開発環境61は、PLC開発環境51における変数の型を参照することで、WebHMIにおける表現形式を自動で設定できる。そのため、ユーザは、PLC開発環境51において型の情報を検索し、検索結果を理解して、WebHMI開発環境61において手動で表示形式(表現形式)を設定する必要がない。せいぜい、ユーザは小数点以下桁数を指定すればよい。また、条件付き書式機能など、WebHMIでの演算機能で、ユーザは追加の設定を行うことなく、浮動小数点数と固定小数点数を混在することができる。条件付き書式機能とは、シンボルと基準値との比較に基づきその表示部品の表示色を変更したり、フォントを変更したりする機能である。条件付き書式機能においても、表示対象のシンボルの型に応じて、条件式におけるデータ形式が自動的に決定されるため、ユーザは、データ形式を手動で変更する必要がなくなる。とりわけ、浮動小数点数と固定小数点数が混在しても、それぞれデータ形式が統一されるため、ユーザは手動でそれぞれのデータ形式を設定する必要がない。
【0124】
PLC開発環境51においてシンボルのデータ形式が浮動小数点型から整数型に変更さるか、整数型から浮動小数点型に変更されたとしても、ユーザは、小数点以下桁数を変更するだけ、型の変更にシンボルの表示を追従させることができる。
【0125】
<まとめ>
[観点1]
通信部13はPLC1と通信する通信手段の一例である。CPU11は、統合開発環境50を提供する提供手段として機能する。統合開発環境50は、第一開発環境(例:PLC開発環境51)と、第二開発環境(例:WebHMI開発環境61)とを含む。第一開発環境は、通信手段を介してPLC1に転送されて実行されるユーザプログラム(例:制御プログラム71a、データ活用プログラム71b)の開発を支援する非Webアプリケーションベースの開発環境である。非Webアプリケーションとは、Webアプリケーションと区別される用語であり、PCアプリケーションやOS依存アプリケーションと呼ばれてもよい。OS依存アプリケーションとは、OSが異なることに実行コードも異なるアプリケーションである。第二開発環境は、PLC1においてユーザプログラムにしたがって使用されるシンボル(例:デバイスや変数)から収集されるシンボル値を表示する表示画面(例:WebHMI)の開発を支援するWebアプリケーションベースの開発環境である。表示画面は、たとえば、構造を記述するデータと、装飾を記述するデータと、動的な処理を記述するコードとにより記述されるWebページとして生成される。WebアプリケーションとはWebブラウザにより実行または表示されるアプリケーションであり、OSに依存しないアプリケーションであってもよい。WebブラウザはOS依存アプリケーションであるが、Webブラウザで実行されるWebアプリケーションはOSに依存しないアプリケーションであってもよい。表示画面は、たとえば、HTMLとCSSとにより記述されるWebページであってもよい。これにより、PLC1で実行されるユーザプログラムを開発するための開発環境と、表示画面の開発環境とを統合した統合開発環境を備えたプログラム作成支援装置が提供される。これにより、ユーザは、ユーザプログラムの開発環境と表示画面の開発環境をシームレスに利用できるようになる。Webアプリケーションベースの開発環境が提供されるため、ユーザにとっては、表示画面の開発効率や将来の機能拡張性が上がるであろう。たとえば、世の中のWebのフレームワーク(骨組み)を流用することが可能となるため、ユーザは開発基盤をゼロから用意する必要がなくなるであろう。また、ユーザは、表示画面の描画ロジックを独自に開発する必要がなくなるであろう。たとえば、表示画面に配置されるテキスト、スイッチ、グラフなどの各表示部品として、世の中で普及しているWeb技術が流用されてもよい。それにより、ユーザにとって、リッチなUI/UX(ユーザエクスペリエンス)を容易に作成可能となろう。さらに、表示画面のために作成したWeb要素(コンポーネント)を他の表示画面のために再利用することが可能となる。また、世の中に普及しているコンポーネントを表示画面に流用することも容易になろう。Webページの構造や見た目だけでなく、挙動(クリック時の動作やデータの解釈など)も表示画面に流用しやすくなるであろう。また、表示画面における表示部品のコンポーネント化によって、あるコンポーネントと他のコンポーネント間でスタイルや挙動の干渉が生じにくくなるであろう。また、コンポーネントごとの開発と保守とが可能となるため、開発効率と保守効率が改善するであろう。
【0126】
[観点2]
CPU11(提供手段)は、ユーザプログラムと、表示画面を描画するための表示部品とを単一のプロジェクトとして管理するように構成されていてもよい。従来は、ユーザプログラムのプロジェクトと、WebHMIの表示画面のプロジェクトは分離されており、ユーザの管理負担が重かった。本実施形態では、これらが単一のプロジェクトにより管理可能となっているため、ユーザの負担が軽減される。
【0127】
[観点3]
プロジェクトは、第一開発環境を通じて作成されたユーザプログラム、シンボルの定義情報(例:シンボル定義72)、および、プログラマブルロジックコントローラの構成情報(構成情報74)を含みうる。さらに、プロジェクトは、第二開発環境を通じて作成された表示画面の表示部品(例:表示部品73)を含みうる。ここで、表示部品は、当該表示画面に表示される情報を保持しているシンボルを参照するための参照情報を含んでもよい。
【0128】
[観点4]
検索部57は、第一開発環境および第二開発環境から呼び出され、プロジェクトの全体にわたって検索を実行する共通検索手段として機能してもよい。これにより、ユーザは、プロジェクトの全体にわたり単一の検索機能により検索を実行できるようになる。これにより、ユーザは、ユーザプログラムの開発環境と表示画面の開発環境をさらにシームレスに利用できるようになる。
【0129】
[観点5]
第一開発環境および第二開発環境は、共通検索手段による検索結果を用いてユーザ入力の補助(例:シンボルの名称の入力補助)またはユーザにより入力された情報(例:シンボルの名称)のエラーチェックを実行してもよい。これにより、ユーザは、シンボルなどの入力に関する負担が軽減されるであろう。また、これにより、ユーザは、ユーザプログラムの開発環境と表示画面の開発環境をさらにシームレスに利用できるようになる。
【0130】
[観点6]
CPU11(提供手段)は、通信手段を介してプログラマブルロジックコントローラからシンボル値を取得し、第一開発環境においてユーザプログラムと関連付けてシンボル値を表示してもよい。たとえば、動作モードがモニタモードに設定されると、PLC開発環境51は、ラダープログラムに記述されているデバイスに、PLC1から取得されたデバイス値(例:オン/オフ、アナログ値)を表示してもよい。CPU11(提供手段)は、表示画面にシンボル値を表示してもよい。たとえば、CPU11は、WebHMIの表示部品により参照されているシンボルのシンボル値をPLC1から取得して、デバイス値をWebHMIの表示部品により表示してもよい。このように、ユーザは、表示画面の開発中に実運用時の表示画面の見え方をすぐに確認できるようになる。たとえば、WebHMIのデバッグ中に、いちいち汎用のWebブラウザを起動することなく、WebHMIの開発環境においてそのままWebHMIの見え方を確認できるようになる。
【0131】
[観点7]
第一開発環境は、WebAPIにしたがって第二開発環境と通信する第一Webサーバ(例:Webサーバ60a)を有してもよい。第二開発環境は、表示画面を構成する表示部品に紐づけられているシンボルの定義情報であって、第一開発環境において作成された定義情報を、第一Webサーバを介して、取得してもよい。さらに、第二開発環境は、表示画面を描画するための表示部品に定義情報を反映させてもよい。たとえば、PLC開発環境51においてあるデバイスのデバイスコメントが作成済みであり、WebHMI開発環境61がそのデバイスを表示部品により参照した場合に、WebHMI開発環境61はデバイスコメントをPLC開発環境51から取得して表示部品と関連付けて表示してもよい。これにより、ユーザは、ユーザプログラムの開発環境と表示画面の開発環境をさらにシームレスに利用できるようになる。
【0132】
[観点8]
PLC1は、第二開発環境により作成された表示画面に、シンボルに格納されている情報を反映して提供する第二Webサーバ(例:Webサーバ60b)を有してもよい。第二開発環境は、第一Webサーバを介して第二Webサーバにアクセスして、表示画面を表示するWebブラウザ(例:組み込み型ブラウザ62、Webブラウザ64)を含む。これにより、ユーザは、表示画面の開発中に実運用時の表示画面の見え方をすぐに確認できるようになる。
【0133】
[観点9]
第一開発環境およびPLC1は、Webブラウザと第二WebサーバとにTCP透過通信を提供してもよい。TCP透過通信は、たとえば、プロトコル変換部59a、59bおよび通信処理部58a、58b、58cによる通信フレームのカプセル化により実現される。
【0134】
[観点10]
統合開発環境50は、第一開発環境においてユーザプログラムの編集を受け付け、第二開発環境において表示画面の編集を受け付けるエディタモードを有してもよい。統合開発環境50は、第一開発環境においてユーザプログラムに紐づけられているシンボルからシンボル値をプログラマブルロジックコントローラから取得して表示し、第二開発環境において表示画面に紐づけられているシンボルのシンボル値をプログラマブルロジックコントローラから取得して当該表示画面に表示するモニタモードを有してもよい。第一開発環境および第二開発環境はそれぞれ、エディタモードとモニタモードとの切り替えを指示する指示手段を有してもよい。たとえば、モード選択メニュー101は、指示手段の一例である。これにより、ユーザは、ユーザプログラムの開発環境と表示画面の開発環境をさらにシームレスに利用できるようになる。また、ユーザは、表示画面の開発中に実運用時の表示画面の見え方をすぐに確認できるようになる。
【0135】
[観点11]
第一開発環境に設けられたWebサーバと、第二開発環境に設けられた組み込み型ブラウザにおいて実行されるWebアプリケーションとは、WebAPIを介して通信してもよい。これにより、第一開発環境と第二開発環境とが、ユーザプログラムと表示画面の表示部品を含むプロジェクトの作成または管理について連携してもよい。これにより、ユーザは、ユーザプログラムの開発環境と表示画面の開発環境をさらにシームレスに利用できるようになる。
【0136】
[観点12]
第一開発環境と第二開発環境とは、WebAPIを介した連携により第一開発環境の動作モードと第二開発環境の動作モードとを一致させてもよい。たとえば、WebHMI開発環境61の動作モードがエディタモードからモニタモードに切り替えられると、PLC開発環境51の動作モードもエディタモードからモニタモードに切り替えられる。これにより、ユーザは、動作モードの切り替えに関する負担を軽減される。
【0137】
[観点13]
図8ないし図11を用いて説明されたように、第一開発環境と第二開発環境とは、動作モードを切り替える際に、第一開発環境に対するユーザ操作と第二開発環境に対するユーザ操作とを禁止してもよい。これによりユーザは安全に動作モードを切り替えることが可能となる。
【0138】
[観点14]
第一開発環境と第二開発環境とは、動作モードの切り替えが指示されたときに、第一開発環境と第二開発環境との少なくとも一方がビジー状態またはダイアログの表示中である場合に、動作モードの切り替えを禁止してもよい。これによりユーザは安全に動作モードを切り替えることが可能となる。
【0139】
[観点15]
図12に関連して説明されたように、第一開発環境は、第二開発環境の起動指示を受け付けて、第二開発環境を起動するように構成されていてもよい。これにより、ユーザは統合開発環境のメリットをさらに享受できるようになろう。
【0140】
[観点16、17]
第一開発環境と第二開発環境とは、WebAPIを介した連携により第一開発環境の言語設定と第二開発環境の言語設定とを一致させてもよい。第一開発環境と第二開発環境とは、WebAPIを介した連携により第一開発環境のコメントセットと第二開発環境のコメントセットとを一致させてもよい。言語設定とは、統合開発環境50の表示言語(日本語、英語、フランス語、中国語・・・)の設定を意味する。コメントセットとは、たとえば、WebHMIに適用される複数の表示部品のコメントを一つのグループ(セット)にまとめたものである。たとえば、英語のコメントセット、日本語のコメントセットなど、言語ごとに異なるコメントセットが用意されることがある。第一開発環境と第二開発環境とで異なる表示言語が適用されていたり、異なるコメントセットが適用されていたりすると、ユーザは混乱するであろう。そこで、これらを一致させることで、ユーザが言語設定またはコメントセットを切り替える負担が軽減される。
【0141】
[観点18]
転送部55は、統合開発環境において作成されたプロジェクトをプログラマブルロジックコントローラに転送する転送手段の一例である。転送部55は、プロジェクトに含まれるユーザプログラムに記述されたシンボルと表示画面の表示部品により参照されるシンボルの整合性の検査を実行してもよい。なお、プロジェクトデータ70の変換機能と検査機能は、転送部55の内部に設けられていてもいし、転送部55の外部に設けられてもよい。
【0142】
[観点19~23]
プロジェクト管理部54は、プロジェクトのインポートを実行するインポート手段として機能してもよい。プロジェクト管理部54は、第一プロジェクトを第二プロジェクトにインポートする際に、第一プロジェクトにおけるユニット構成に依存した記述を第二プロジェクトのユニット構成に整合するように第一プロジェクトを更新し、更新された第一プロジェクトを第二プロジェクトにインポートするように構成されていてもよい。ここで、ユニット構成に依存した記述は、ユニット構成に依存して変化するシンボルの識別情報(例:バッファメモリ番号)の記述を含んでもよい。
【0143】
ここでは、インポートに関連して、ユニット構成の違いに伴うプロジェクトの自動修正が説明されている。しかし、これは、他の場面でも有効である。たとえば、PLC開発環境51においてユニット構成を定義する構成情報74が変更されたときに、WebHMI開発環境61において、ユニット構成に依存したシンボルの参照情報76a、76bを修正する必要がある。この場合にも、PLC開発環境51がシンボルの参照情報76aを修正するとともに、シンボルの参照情報76bの変更要求をWebHMI開発環境61に送信することで、WebHMI開発環境61は、シンボルの参照情報76bを適切に修正できるようになる。ここで、変更要求は、変更前のユニット番号と変更後のユニット番号とを示してもよい。これにより、WebHMI開発環境61は、容易にシンボルの参照情報76bを修正できるようになろうである。
【0144】
図19に関連して説明されたように、プロジェクト管理部54は、第一プロジェクトのユニット構成に含まれる拡張ユニットの第一識別情報と、第二プロジェクトのユニット構成に含まれる当該拡張ユニットの第二識別情報との対応関係を示すユーザ入力にしたがって、第一プロジェクトにおいて第一識別情報に紐づけられているシンボルの記述を第二識別情報に紐づけてもよい。これにより、ユーザは、識別情報の修正作業に関する負担を軽減されるであろう。
【0145】
プロジェクト管理部54は、第一プロジェクトに含まれるイメージデータ、映像データ、音声データ等の一元管理されたデータの識別情報が第二プロジェクトにおいてすでに使用されている場合に、当該イメージデータの識別情報を、第二プロジェクトにおいて未使用の識別情報に変更してもよい。これにより、ユーザは、識別情報の修正作業に関する負担を軽減されるであろう。
【0146】
[観点24~26]
第二開発環境(例:WebHMI開発環境61)は、表示画面を構成する表示部品に紐づけられているシンボルの種別を第一開発環境から取得してもよい。第二開発環境は、種別に応じて表示部品におけるシンボル値の表示形式を設定してもよい。たとえば、第二開発環境は、シンボルの種別が浮動小数点型である場合に表示部品におけるシンボル値の表示形式を浮動小数点数に設定してもよい。第二開発環境は、シンボルの種別が整数型である場合に表示部品におけるシンボル値の表示形式を固定小数点数に設定してもよい。第二開発環境は、シンボル値に対する小数点以下桁数の指定を受け付け、当該小数点以下桁数に応じて小数点を付加してシンボル値を表示部品に表示してもよい。第一開発環境と第二開発環境とが独立している場合、ユーザは、第一開発環境においてシンボルの種別を定義または宣言し、第二開発環境でそのシンボルについて手動で表示形式を設定しなければならず、非常に面倒であった。それに対して、本実施形態では、第一開発環境と第二開発環境とが統合されており、相互に連携できる。そのため、第二開発環境は、第一開発環境に対してシンボルの種別を要求し、この種別に応じて表示形式を設定できる。そのため、ユーザの負担が軽減される。
【0147】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21