JP2019096210A - 制御装置、制御方法、およびプログラム - Google Patents

制御装置、制御方法、およびプログラム Download PDF

Info

Publication number
JP2019096210A
JP2019096210A JP2017226972A JP2017226972A JP2019096210A JP 2019096210 A JP2019096210 A JP 2019096210A JP 2017226972 A JP2017226972 A JP 2017226972A JP 2017226972 A JP2017226972 A JP 2017226972A JP 2019096210 A JP2019096210 A JP 2019096210A
Authority
JP
Japan
Prior art keywords
server
memory
opc
function
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017226972A
Other languages
English (en)
Other versions
JP6996257B2 (ja
Inventor
雄大 永田
Yudai Nagata
雄大 永田
弘太郎 岡村
Kotaro Okamura
弘太郎 岡村
仁太郎 出来
Jintaro Deki
仁太郎 出来
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2017226972A priority Critical patent/JP6996257B2/ja
Priority to CN201811050048.8A priority patent/CN109839890B/zh
Priority to EP18193428.2A priority patent/EP3489777B1/en
Priority to US16/132,497 priority patent/US20190166202A1/en
Publication of JP2019096210A publication Critical patent/JP2019096210A/ja
Application granted granted Critical
Publication of JP6996257B2 publication Critical patent/JP6996257B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/045Programme control other than numerical control, i.e. in sequence controllers or logic controllers using logic state machines, consisting only of a memory or a programmable logic device containing the logic for the controlled machine and in which the state of its outputs is dependent on the state of its inputs or part of its own output states, e.g. binary decision controllers, finite state controllers
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/048Monitoring; Safety
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/4185Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by the network communication
    • G05B19/4186Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by the network communication by protocol, e.g. MAP, TOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25343Real time multitasking
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25347Multitasking machine control
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34263OLE object linking and embedding, OPC ole for process control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Programmable Controllers (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】メモリの使用容量が多くなった場合に駆動機器に影響を与えずにサーバー機能を制約するための技術が望まれている。【解決手段】コントローラ100は、メモリ106と、制御プログラム112に従って駆動機器200を制御するプログラム実行部103と、外部機器300と通信するOPC−UAサーバー150とを備える。OPC−UAサーバー150は、外部機器300からの要求に応答して、メモリ106上の記憶領域を利用する機能を実行する機能実行部152と、メモリ106の使用容量を監視する監視部154と、使用容量が所定閾値を超えたことに基づいて、OPC−UAサーバー150の上記機能を停止する制約部156とを含む。【選択図】図1

Description

本開示は、産業用の制御装置におけるサーバー機能をメモリの使用容量に応じて停止するための技術に関する。
様々な生産現場において、生産工程を自動化するFA(Factory Automation)システムが普及している。FAシステムは、種々の産業用の駆動機器によって構成される。産業用の駆動機器は、たとえば、ワークを移動するための移動テーブルや、ワークを搬送するためのコンベアや、予め定められた目的の場所までワーク移動するためのアームロボットなどを含む。これらの駆動機器は、PLC(Programmable Logic Controller)やロボットコントローラなどの産業用の制御装置(以下、「コントローラ」ともいう。)によって制御される。
産業用の駆動機器の状態を監視するために、コントローラ内のデータにアクセスする必要がある。コントローラ内のデータにアクセスするための技術に関し、特開2012−018541号公報(特許文献1)は、「外部機器の種類や接続に関係なく、外部機器のデータを容易に収集することが可能な」表示装置を開示している。
特開2012−018541号公報
近年、サーバー機能を備えたコントローラが普及しつつある。コントローラは、外部機器からのアクセス要求に応答して、メモリの記憶領域の一部を利用して、外部機器とデータをやり取りする。外部からのアクセス要求が多くなると、メモリの使用容量が意図するよりも多くなることがある。このとき、コントローラは、その機能の全てを停止すると外部からのアクセス要求を拒否することができるが、この場合には、FAシステム自体も停止してしまう。FAシステムが停止すると多大な機会損失が生じるため、FAシステムを極力停止しないことが望まれている。
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、メモリの使用容量が多くなった場合に駆動機器に影響を与えずにサーバー機能を制約するための技術を提供することである。
本開示の一例では、1つ以上の外部機器と通信するためのサーバー部を有し、駆動機器を制御するための制御装置は、メモリと、駆動機器の制御プログラムの実行命令を受け付けたことに基づいて、当該制御プログラムの実行に必要なデータをメモリに展開し、当該制御プログラムに従って駆動機器を制御するためのプログラム実行部と、1つ以上の外部機器からの要求に応答して、メモリ上の記憶領域を利用する、サーバー部の機能を実行するための機能実行部と、メモリの使用容量を監視するための監視部と、使用容量が所定の第1閾値を超えたことに基づいて、サーバー部の機能を制約するための処理を実行する制約部とを備える。
この開示によれば、制御装置は、メモリの使用容量が第1閾値を超えたことに基づいて、サーバー部の機能を制約する。このとき、サーバー部の機能が制約されるだけであるので、駆動機器の制御プログラムについては実行が停止されない。これにより、制御装置は、メモリの使用容量が多くなった場合に駆動機器に影響を与えずにサーバー部の機能を制約することができる。
本開示の一例では、上記制約部は、上記使用容量が上記第1閾値を超えた場合に、上記制御プログラムの実行を維持した状態で上記サーバー部の上記機能を制約する。
この開示によれば、制御装置は、サーバー部の機能の制約時に、制御プログラムの実行については維持するので、駆動機器を停止することなく、サーバー部の機能を制約することができる。
本開示の一例では、上記制約部は、上記サーバー部が使用している上記メモリ上の記憶領域を解放した上で、上記サーバー部の上記機能を制約する。
この開示によれば、これにより、制御装置は、メモリの使用容量を減らすことができる。
本開示の一例では、上記制御装置は、外部記憶媒体に電気的に接続可能に構成されている。上記制約部は、上記サーバー部の上記機能を制約したことをログとして上記外部記憶媒体に書き込む。
この開示によれば、外部記憶装置にサーバー機能の停止のログが書き込まれることで、制御装置は、メモリの使用を抑えることができる。
本開示の一例では、上記制約部は、上記使用容量が上記第1閾値よりも小さい第2閾値を超えたことに基づいて、警告を出力する。
この開示によれば、メモリの使用容量が上限に達する前に警告が出力されるので、ユーザは、メモリの使用量が上限に達しそうなことを事前に把握することができる。
本開示の一例では、上記サーバー部は、OPC−UA(Object Linking and Embedding for Process Control Unified Architecture)に従った通信プロトコルを利用して上記1つ以上の外部機器と通信する。
この開示によれば、OPC−UAに従った通信プロトコルが利用されることで、制御装置と外部機器とのデータ交換がOSやベンダに依存せずに実現され得る。
本開示の一例では、上記制約部は、上記サーバー部の上記機能の制約を解除する指示を受け付けたことに基づいて、当該制約を解除する。
この開示によれば、制御装置は、サーバー機能の制約状態から復帰することができる。
本開示の他の例では、駆動機器の制御装置の制御方法が提供される。上記制御装置は、1つ以上の外部機器と通信するためのサーバー部を備える。上記制御方法は、上記駆動機器の制御プログラムの実行命令を受け付けたことに基づいて、当該制御プログラムの実行に必要なデータを上記制御装置のメモリに展開し、当該制御プログラムに従って上記駆動機器を制御するステップと、上記1つ以上の外部機器からの要求に応答して、上記メモリ上の記憶領域を利用する、上記サーバー部における機能を実行するステップと、上記メモリの使用容量を監視するステップと、上記使用容量が所定の第1閾値を超えたことに基づいて、上記サーバー部の上記機能を制約するための処理を実行するステップとを備える。
この開示によれば、制御装置の制御方法は、メモリの使用容量が第1閾値を超えたことに基づいて、サーバー部の機能を制約する。このとき、サーバー部の機能が制約されるだけであるので、駆動機器の制御プログラムについては実行が停止されない。これにより、制御装置は、メモリの使用容量が多くなった場合に駆動機器に影響を与えずにサーバー部の機能を制約することができる。
本開示の他の例では、駆動機器の制御装置によって実行されるプログラムが提供される。上記制御装置は、1つ以上の外部機器と通信するためのサーバー部を備える。上記プログラムは、上記制御装置に、上記駆動機器の制御プログラムの実行命令を受け付けたことに基づいて、当該制御プログラムの実行に必要なデータを上記制御装置のメモリに展開し、当該制御プログラムに従って上記駆動機器を制御するステップと、上記1つ以上の外部機器からの要求に応答して、上記制御装置のメモリ上の記憶領域を利用する、上記サーバー部における機能を実行するステップと、上記メモリの使用容量を監視するステップと、上記使用容量が所定の第1閾値を超えたことに基づいて、上記サーバー部の上記機能を制約するための処理を実行するステップとを実行させる。
この開示によれば、制御装置のプログラムは、メモリの使用容量が第1閾値を超えたことに基づいて、サーバー部におけるメモリ上の記憶領域を利用する機能を制約する。このとき、サーバー部の機能が制約されるだけであるので、駆動機器の制御プログラムについては実行が停止されない。これにより、制御装置は、メモリの使用容量が多くなった場合に駆動機器に影響を与えずにサーバー部の機能を制約することができる。
ある局面において、メモリの使用容量が多くなった場合に駆動機器に影響を与えずにサーバー機能を制約することができる。
実施の形態に従うFAシステムの構成例を示す図である。 制御プログラムに含まれる変数の一覧と、公開が許可された変数の一覧とを示す図である。 Subscription処理を実現するためのデータフローを示すシーケンス図である。 Subscription処理を実現するためのオブジェクト群の一例を示す図である。 OPC−UAサーバーおよびOPC−UAクライアントのシステムフローを表わす図である。 メモリの使用容量の推移の一例を示す図である。 実施の形態に従うコントローラの機能構成の一例を示す図である。 実施の形態に従うコントローラのハードウェア構成の一例を示す模式図である。 実施の形態に従うコントローラ内のOPC−UAサーバーによって実現される処理の一部を表わすフローチャートである。
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
<A.適用例>
図1を参照して、本発明の適用例について説明する。図1は、FAシステム1の構成例を示す図である。
FAシステム1は、生産工程を自動化するためのシステムである。図1の例では、FAシステム1は、コントローラ100と、駆動機器200と、外部機器300とで構成されている。
コントローラ100および駆動機器200は、フィールドネットワークNW1に接続されている。フィールドネットワークNW1には、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、登録商標)、CompoNet(登録商標)などが知られている。
駆動機器200は、生産工程を自動化するための種々の産業用機器を含む。一例として、駆動機器200は、アームロボット201Aを制御するロボットコントローラ200Aや、サーボモータ201Bを制御するサーボドライバ200Bや、ワークを撮影するための視覚センサ200Cや、生産工程で利用されるその他の機器などを含む。
コントローラ100および外部機器300は、フィールドネットワークNW2に接続されている。フィールドネットワークNW2には、たとえば、ベンダやOS(Operating System)の種類などに依存することなくデータ交換を実現することができる通信規格に従ったネットワークを採用することが望ましい。このような通信規格としては、たとえば、OPC−UAなどが知られている。以下では、OPC−UAを前提として説明を行うが、フィールドネットワークNW2に採用される通信規格は、OPC−UAに限定されるわけではない。
OPC−UAに従った通信を実現するためには、コントローラ100をサーバーとして機能させるとともに、外部機器300をクライアントとして機能させる必要がある。より具体的には、コントローラ100には、サーバー機能を有するOPC−UAサーバー150(サーバー部)がインストールされている。ここでいう「OPC−UAサーバー」とは、通信ドライバとして機能するアプリケーション(プログラム)である。また、OPC−UAサーバーの「サーバー機能」とは、コントローラ100のメモリ106上の記憶領域を利用する機能のこといい、特に、外部機器300と通信し、外部機器300とのデータのやり取りを実現するための機能のことをいう。
また、外部機器300には、OPC−UAサーバー150との通信機能を有するOPC−UAクライアント350A〜350Cがインストールされている。ここでいう「OPC−UAクライアント」とは、OPC−UAサーバー150に通信要求(アクセス要求)を送信するアプリケーションである。以下では、OPC−UAクライアント350A〜350Cを総称して、OPC−UAクライアント350ともいう。
OPC−UAクライアント350は、OPC−UAサーバー150にアクセス要求を送信することで、コントローラ100内で管理される変数111をOPC−UAサーバー150から取得し、当該変数に基づいて、コントローラ100や駆動機器200の状態をグラフィカルに表示する。OPC−UAクライアント350として機能する外部機器300は、たとえば、HMI(Human Machine Interface)、PC(Personal Computer)、スマートフォン、タブレット端末、または、表示機能を有するその他の情報処理装置を含む。
コントローラ100は、OPC−UAサーバー150の他に、プロセッサ102と、メモリ106とを含む。プロセッサ102は、機能構成として、プログラム実行部103を含む。OPC−UAサーバー150は、機能構成として、機能実行部152と、監視部154と、制約部156とを含む。
プログラム実行部103は、制御プログラム112の実行命令を受け付けたことに基づいて、制御プログラム112の実行に必要な各種データをメモリ106に展開し、制御プログラム112に従って駆動機器200を制御する。このように、メモリ106は、ワーキングメモリとして機能し、制御プログラム112の実行に必要な各種データを一時的に格納する。
コントローラ100と駆動機器200との間で遣り取りされる信号(典型的には、入力信号および出力信号)を制御プログラム112内では、それぞれ変数111として取り扱う。すなわち、これらの現実の信号と制御プログラム112内の対応する変数111とは本質的に同じものである。
機能実行部152は、外部機器300のいずれかからの要求に応答して、メモリ106上の記憶領域を利用する機能(すなわち、サーバー機能)を実行する。一例として、サーバー機能は、アクセス要求によって指定された変数111の読み書き機能などを含む。サーバー機能の実行によりメモリ106に展開されるデータは、たとえば、アクセス要求によって指定された制御プログラム112の変数111や、変数111を取得するための命令(プログラム)などを含む。
監視部154は、メモリ106の使用容量を監視し、当該使用容量を定期的に制約部156に出力する。外部機器300からのアクセス要求を受けるとメモリ106の記憶領域の一部が利用されるため、アクセス要求が多くなるほど、メモリ106の使用容量は多くなる。
制約部156は、メモリ106の使用容量が所定の閾値(第1閾値)を超えたことに基づいて、OPC−UAサーバー150のサーバー機能を制約するための処理(以下、「制約処理」ともいう。)を実行する。当該制約処理は、OPC−UAサーバー150のサーバー機能を直接的に制限する処理だけでなく、当該サーバー機能を間接的に制限する処理も含む。一例として、制約部156の制約処理は、OPC−UAサーバー150の状態を異常状態にすることや、外部機器300からOPC−UAサーバー150へのアクセス要求に対してエラー応答を行うことや、OPC−UAサーバー150によるサーバー機能を停止する処理などを含む。制約部156は、OPC−UAサーバー150のサーバー機能を制約するだけであるので、制御プログラム112の実行は停止されない。これにより、コントローラ100は、駆動機器200の駆動に影響を与えずにサーバー機能を制約することができる。
なお、上述では、FAシステム1が1つのコントローラ100(OPC−UAサーバー150)で構成されている例について説明を行ったが、FAシステム1は、2つ以上のコントローラ100(OPC−UAサーバー150)で構成されてもよい。
また、上述では、FAシステム1が3つの外部機器300(OPC−UAクライアント350)で構成されている例について説明を行ったが、FAシステム1は、1つ以上の外部機器300(OPC−UAクライアント350)で構成されればよい。
また、上述では、外部機器300との通信を実現するためのサーバーとして、OPC−UAサーバー150を例に挙げて説明を行ったが、OPC−UAサーバー150は、外部機器300との通信を実現することが可能なサーバーであれば任意の種類のサーバーで代用され得る。一例として、OPC−UAサーバー150は、SQL(Structured Query Language)サーバーなどのDB(Data Base)サーバー、FTP(File Transfer Protocol)サーバー、または、HTTPサーバーなどのWebサーバーで代用されてもよい。
また、図1には、監視部154および制約部156がOPC−UAサーバー150に実装されている例について説明を行ったが、監視部154および制約部156は、OPC−UAサーバー150外に実装されてもよい。このように実装されることで、監視部154は、複数のサーバー部のそれぞれについてメモリ106の使用容量を個々に監視することができる。また、制約部156は、メモリ106の使用容量が所定の閾値を超えたサーバー部に対して機能の制約処理を個々に実行することができる。
<B.公開変数の設定>
図2を参照して、制御プログラム112に含まれる変数の内から外部機器300に公開する変数(以下、「公開変数」ともいう。)を設定する方法について説明する。図2は、制御プログラム112に含まれる変数の一覧と、公開が許可された変数の一覧とを示す図である。
制御プログラム112の設計者は、OPC−UAクライアント350に対する公開変数の設定をサポート装置400上で予め行うことができる。サポート装置400は、たとえば、PC、タブレット端末、または、表示機能を有するその他の情報処理装置である。サポート装置400には、制御プログラム112の開発ツールがインストールされ得る。設計者は、当該開発ツール上で制御プログラム112を設計し、設計した制御プログラム112をコントローラ100にインストールする。制御プログラム112の開発ツールは、たとえば、オムロン社製の「Sysmac Studio」である。
図2には、公開変数の設定画面401が示されている。設計者は、設定画面401上において、制御プログラム112に規定される各変数について属性を設定することができる。設定可能な属性は、たとえば、変数名と、変数の型と、変数の初期値と、OPC−UAクライアント350への公開属性とを含む。公開属性としては、「公開のみ」、「入力」、「出力」、「非公開」のいずれかが設定され得る。「公開のみ」、「入力」、「出力」と設定された変数はOPC−UAクライアント350に公開され、「非公開」と設定された変数はOPC−UAクライアント350に公開されない。
図2の例では、公開属性として「公開のみ」と設定された変数「Var1」と、公開属性として「入力」と設定された変数「Var2」と、公開属性として「出力」と設定された変数「Var3」とがOPC−UAクライアント350上に表示されている。公開属性として「非公開」と設定された変数「Var4」は、OPC−UAクライアント350上で表示されていない。
「公開のみ」と設定された変数「Var1」については、OPC−UAクライアント350は、変数名のみを特定でき、変数の値を取得することはできない。「入力」と設定された変数「Var2」については、OPC−UAクライアント350は、変数の値を読み込むことができるが、変数の値を書き換えることはできない。「出力」と設定された変数「Var3」については、OPC−UAクライアント350は、変数の値を読み込むことも書き換えることもできる。
<C.公開変数の取得処理>
外部機器300のユーザは、公開変数を参照することで、コントローラ100や駆動機器200の状態を監視するための様々なプログラムを設計することができる。一例として、外部機器300のユーザは、監視対象の変数が異常値を示す場合に、当該変数に係る駆動機器200を表示する監視プログラムなどを設計することができる。
監視プログラムの実行により公開変数へのアクセス処理が実行されたことに基づいて、OPC−UAクライアント350は、公開変数のアクセス要求をOPC−UAサーバー150に送信する。アクセス要求は、たとえば、Read要求、Write要求、または、Subscription要求である。アクセス要求がRead要求である場合、OPC−UAサーバー150は、アクセス対象の公開変数の値をOPC−UAクライアント350に1回送信する。アクセス要求がWrite要求である場合、OPC−UAサーバー150は、アクセス対象の公開変数を指定された値に書き換える。アクセス要求がSubscription要求である場合、OPC−UAサーバー150は、アクセス対象の公開変数の値を定期的に送信する。
以下では、図3および図4を参照して、指定された公開変数を定期的に送信するSubscription処理について説明する。図3は、Subscription処理を実現するためのデータフローを示すシーケンス図である。図4は、Subscription処理を実現するためのオブジェクト群の一例を示す図である。
ステップS10において、OPC−UAクライアント350は、Subscriptionオブジェクトの生成命令が実行されたことに基づいて、当該生成命令をOPC−UAサーバー150に送信する。ここでいう「オブジェクト」とは、クラスから生成されたインスタンスを意味する。当該生成命令には、たとえば、OPC−UAクライアント350に公開変数の値を通知する周期が規定されている。
ステップS12において、OPC−UAサーバー150は、OPC−UAクライアント350から当該生成命令を受信したことに基づいて、Subscriptionオブジェクト352を生成する。Subscriptionオブジェクト352は、指定された通知周期に従って、後述のキュー354A〜354C内のデータをOPC−UAクライアント350に送信する機能を有する。
ステップS14において、OPC−UAサーバー150は、Subscriptionオブジェクトの生成結果として、Subscriptionオブジェクト352の識別情報(たとえば、ID(Identification))をOPC−UAクライアント350に送信する。
ステップS20において、OPC−UAクライアント350は、MoniteredItemオブジェクトの生成命令が実行されたことに基づいて、当該生成命令をOPC−UAサーバー150に送信する。当該生成命令は、Subscriptionオブジェクト352のIDと、監視対象の公開変数と、公開変数のサンプリング周期と、キューオブジェクトのサイズとを含む。
ステップS22において、OPC−UAサーバー150は、OPC−UAクライアント350から当該生成命令を受信したことに基づいて、当該生成命令で指定されたSubscriptionオブジェクト352に関連付けて、Queueオブジェクト354Aと、MoniteredItemオブジェクト356Aとを生成する。
MoniteredItemオブジェクト356Aは、上記の生成命令で指定された監視対象の変数111を、当該生成命令で指定されたサンプリング周期ごとに取得し、当該変数111をQueueオブジェクト354Aに格納する機能を有する。Queueオブジェクト354Aは、上記の生成命令で指定されたサイズを有し、格納された公開変数をFIFO(First In First Out)形式でSubscriptionオブジェクト352に出力する機能を有する。
ステップS24において、OPC−UAサーバー150は、MoniteredItemオブジェクト356Aの生成結果をOPC−UAクライアント350に送信する。当該生成結果は、MoniteredItemオブジェクト356Aが正常に生成されたか否か(True/False)を示す。
OPC−UAサーバー150は、MoniteredItemオブジェクトの生成命令をOPC−UAクライアント350から受信する度に、ステップS20,S22,S24と同様の処理を実行する。すなわち、当該生成命令が発行される度に、MoniteredItemオブジェクトおよびQueueオブジェクトが生成される。図4の例では、結果的に、3つのQueueオブジェクト354A〜354Cと、3つのMoniteredItemオブジェクト356A〜356Cとが生成されている。
ステップS30において、OPC−UAクライアント350は、監視対象の公開変数の取得命令が実行されたことに基づいて、当該取得命令をOPC−UAサーバー150に送信する。
ステップS32において、OPC−UAサーバー150は、監視対象の公開変数の取得命令をOPC−UAクライアント350から受信したことに基づいて、Subscriptionオブジェクト352の機能を実行する。これにより、Subscriptionオブジェクト352は、設定されている通知周期ごとに、Queueオブジェクト354A〜354Cから公開変数を取得し、当該公開変数をOPC−UAクライアント350に送信する。
<D.OPC−UAサーバー150の制約処理>
図1で説明したように、OPC−UAサーバー150は、メモリ106の使用容量が所定の閾値を超えたことに基づいて、OPC−UAサーバー150のサーバー機能の制約処理を実行する。このような制約処理の例としては、OPC−UAサーバー150の状態を正常状態から異常状態に遷移させる処理や、外部機器300からOPC−UAサーバー150へのアクセス要求に対してエラー応答を行う処理や、OPC−UAサーバー150によるサーバー機能を停止する処理などが挙げられる。
以下では、図5を参照して、これらの制約処理が実行されるタイミングの一例について説明する。図5は、OPC−UAサーバー150およびOPC−UAクライアント350のシステムフローを表わす図である。
ステップS50において、OPC−UAサーバー150は、起動指示を受けたとする。この起動指示は、たとえば、コントローラ100の制御エンジンから発せられる。
ステップS52において、OPC−UAサーバー150は、上述の機能実行部152(図1参照)として、上述の公開変数をコントローラ100のメモリ106に展開する。このとき、OPC−UAサーバー150は、メモリ106の空き領域の範囲内で可能な限り多くの公開変数をメモリ106に展開する。
また、OPC−UAサーバー150は、上述の監視部154(図1参照)として、メモリ106の使用容量をチェックする。メモリ106の使用容量が所定の閾値を超えていない場合、OPC−UAサーバー150は、自身の状態を正常状態とする。メモリ106の使用容量が所定の閾値を超えている場合、OPC−UAサーバー150は、上述の制約部156(図1参照)として、サーバー機能の制約処理を実行する。本ステップS52における制約処理では、OPC−UAサーバー150は、自身の状態を異常状態とする。このとき、OPC−UAサーバー150は、自身のサーバー機能の一部または全部を停止してもよい。
ステップS60において、OPC−UAクライアント350は、OPC−UAサーバー150に通信接続要求を送信したとする。
ステップS62において、OPC−UAサーバー150は、OPC−UAクライアント350からの通信接続要求を受信したことに基づいて、OPC−UAクライアント350との通信接続処理を実行する。このとき、OPC−UAサーバー150は、上述の監視部154として、メモリ106の使用容量をチェックする。
ステップS64において、メモリ106の使用容量が所定の閾値を超えていない場合、OPC−UAサーバー150は、ステップS60での通信接続要求の応答として正常を示す応答をOPC−UAクライアント350に送信する。メモリ106の使用容量が所定の閾値を超えている場合、OPC−UAサーバー150は、上述の制約部156として、サーバー機能の制約処理を実行する。本ステップS64における制約処理では、OPC−UAサーバー150は、ステップS60での通信接続要求の応答として異常を示す応答をOPC−UAクライアント350に送信する。
ステップS70において、OPC−UAクライアント350は、公開変数のRead要求またはWrite要求をOPC−UAサーバー150に送信したとする。
ステップS72において、OPC−UAサーバー150は、上述の監視部154として、OPC−UAクライアント350からRead要求を受信した場合、メモリ106の使用容量をチェックする。メモリ106の使用容量が所定の閾値を超えていない場合、OPC−UAサーバー150は、上述の機能実行部152として、指定された公開変数を読み出すための処理を実行する。一方で、OPC−UAクライアント350の要求がWrite要求であるとき、OPC−UAサーバー150は、上述の機能実行部152として、指定された公開変数を指定された値に書き換えるための処理を実行する。
ステップS74において、メモリ106の使用容量が所定の閾値を超えていない場合、OPC−UAサーバー150は、ステップS70でのRead要求またはWrite要求の応答として正常を示す応答をOPC−UAクライアント350に送信する。メモリ106の使用容量が所定の閾値を超えている場合、OPC−UAサーバー150は、上述の制約部156として、サーバー機能の制約処理を実行する。本ステップS74における制約処理では、OPC−UAサーバー150は、ステップS70でのRead要求またはWrite要求の応答として異常を示す応答をOPC−UAクライアント350に送信する。
ステップS80において、OPC−UAクライアント350は、公開変数のSubscription要求をOPC−UAサーバー150に送信したとする。
ステップS82において、OPC−UAサーバー150は、OPC−UAクライアント350からSubscription要求を受信した場合、上述の監視部154として、メモリ106の使用容量をチェックする。メモリ106の使用容量が所定の閾値を超えていない場合、OPC−UAサーバー150は、上述の図3および図4で説明したSubscription処理を実行する。
ステップS84において、メモリ106の使用容量が所定の閾値を超えていない場合、OPC−UAサーバー150は、ステップS80でのSubscription要求の応答として正常を示す応答をOPC−UAクライアント350に送信する。一方で、メモリ106の使用容量が所定の閾値を超えている場合、OPC−UAサーバー150は、上述の制約部156として、サーバー機能の制約処理を実行する。本ステップS84における制約処理では、OPC−UAサーバー150は、ステップS80でのSubscription要求の応答として異常を示す応答をOPC−UAクライアント350に送信する。
ステップS90において、OPC−UAサーバー150は、上述の機能実行部152として、公開変数の再ダウンロード指示を受けたとする。この再ダウンロード指示は、公開変数が変更された場合などに、コントローラ100の制御エンジンから発せられる。
ステップS92において、OPC−UAサーバー150は、再ダウンロード指示を受けたことに基づいて、上述の監視部154として、メモリ106の使用容量をチェックする。メモリ106の使用容量が所定の閾値を超えていない場合、OPC−UAサーバー150は、自身の状態を正常状態とする。メモリ106の使用容量が所定の閾値を超えている場合、OPC−UAサーバー150は、上述の制約部156として、サーバー機能の制約処理を実行する。本ステップS92における制約処理では、OPC−UAサーバー150は、自身の状態を異常状態とする。このとき、OPC−UAサーバー150は、自身のサーバー機能の一部または全部を停止してもよい。
<E.メモリ106の使用容量の監視処理>
OPC−UAサーバー150は、公開変数のアクセス要求をOPC−UAクライアント350から受信したことに基づいて、当該公開変数にアクセスするための処理を実行する。このとき、OPC−UAサーバー150は、公開変数にアクセスするために必要な各種データをメモリ106に展開することで、公開変数の読み書きを行う。たとえば、アクセス要求が上述のSubscription要求である場合には、OPC−UAサーバー150は、公開変数の定期的な読み込みを実現するために、上述のSubscriptionオブジェクト、上述のQueueオブジェクト、上述のMoniteredItemオブジェクトをメモリ106上に生成する。
このように、OPC−UAクライアント350からの公開変数のアクセス要求が多いほど、メモリ106の使用容量が多くなる。特に、OPC−UAサーバー150が意図しない悪意のアクセス要求を外部機器300から受けた場合には、あらゆる変数にアクセスされるため、メモリ106の使用容量が多くなる。メモリ106の使用容量が上限値を超えると、駆動機器200を駆動するための制御プログラム112が予期せず停止してしまう可能性がある。そのため、OPC−UAサーバー150は、制御プログラム112が停止しないように、メモリ106の使用容量を監視する。
以下では、図6を参照して、OPC−UAサーバー150によるメモリ106の監視処理について説明する。図6は、メモリ106の使用容量の推移の一例を示す図である。
図6に示されるように、メモリ使用容量に対して、閾値th1,th2が設定されている。閾値th1は、上限値であり、閾値th2よりも大きい。閾値th1,th2は、予め設定されていてもよいし、ユーザによって任意に設定されてもよい。
時刻T1において、メモリ106の使用容量が閾値th2を超えたとする。OPC−UAサーバー150は、メモリ106の使用容量が閾値th2(第2閾値)を超えたことに基づいて、メモリ106の使用容量が上限の閾値th1に近付いていることを示す警告を出力する。警告の出力方法は、任意である。一例として、OPC−UAサーバー150は、ログとして警告を出力してもよいし、後述のLED(Light Emitting Diode)138(図7参照)を発光させることで警告を出力してもよいし、音声で警告を出力してもよい。
時刻T2において、メモリ106の使用容量が閾値th1を超えたとする。OPC−UAサーバー150は、メモリ106の使用容量が閾値th1(第1閾値)を超えたことに基づいて、OPC−UAサーバー150のサーバー機能を制約するための制約処理を実行する。このような制約処理の例としては、OPC−UAサーバー150の状態を正常状態から異常状態に遷移させる処理や、外部機器300からOPC−UAサーバー150へのアクセス要求に対してエラー応答を行う処理や、OPC−UAサーバー150によるサーバー機能を停止する処理(シャットダウン処理)などが挙げられる。このとき、OPC−UAサーバー150は、駆動機器200の制御プログラム112の実行については維持する。これにより、OPC−UAサーバー150は、自身のサーバー機能のみを制約することができ、駆動機器200の駆動を阻害せずに済む。
好ましくは、OPC−UAサーバー150は、自身が使用しているメモリ106上の記憶領域を解放した上でサーバー機能を制約する。これにより、OPC−UAサーバー150は、メモリ106の使用容量を減らすことができ、駆動機器200の制御プログラム112の実行が停止されることを確実に防止することができる。図6の例では、メモリ106上の記憶領域が解放された時刻T2において、メモリ106の使用容量が大幅に減っている。
好ましくは、OPC−UAサーバー150は、サーバー機能を制約したことをログとして後述のメモリカード140(図7参照)などの外部記憶媒体に書き込む。外部記憶装置にログが書き込まれることで、OPC−UAサーバー150は、メモリ106の使用容量を削減することができる。また、OPC−UAクライアント350は、サーバー機能を制約したことをOPC−UAクライアント350に通知する。
<F.コントローラ100の機能構成>
図7を参照して、コントローラ100の機能について説明する。図7は、コントローラ100の機能構成の一例を示す図である。
コントローラ100は、外部通信インターフェイス101と、プログラム実行部103と、リソースマネージャ130と、イベント管理部132と、ツールインターフェイス135と、不揮発性メモリ136と、ドライバ137と、LED138と、メモリカードインターフェイス139と、OPC−UAサーバー150とを含む。OPC−UAサーバー150は、通信スタック151と、メインプログラム153と、メモリ監視プログラム155とを含む。
外部通信インターフェイス101は、外部機器300であるOPC−UAクライアント350A,350Bとの通信を行う。外部通信インターフェイス101には、たとえば、EtherNet(登録商標)が採用される。また、外部通信インターフェイス101は、サポート装置400との通信を行う。サポート装置400には、たとえば、制御プログラム112の開発ツールである「Sysmac Studio」がインストールされている。当該開発ツール上で設計された制御プログラム112は、外部通信インターフェイス101を介してコントローラ100にインストールされる。また、コントローラ100のエラー情報やログデータは、外部通信インターフェイス101を介してサポート装置400に送られる。
リソースマネージャ130は、コントローラ100内の各変数のアドレス情報を保持しており、各変数の管理や、各変数の読み書きなどを担う。一例として、リソースマネージャ130は、変数の読取命令(取得命令)を受けた場合には、読取対象の変数にアクセスし、当該変数を読取命令の発信元に送る。また、リソースマネージャ130は、変数の書込命令を受けた場合には、書込対象の変数にアクセスし、当該変数を指定された値に書き換える。リソースマネージャ130によって管理される変数は、制御プログラム112内の変数、コントローラ100の状態を示すシステム変数131などを含む。
イベント管理部132は、コントローラ100内で発生したイベントに応じた処理を実行する。ある局面において、イベント管理部132は、メモリ106の使用容量が上限に達しそうなことを示すイベントを検知した場合、警告を出力する。当該イベントは、メモリ106の使用容量が閾値th2(図6参照)を超えたことに基づいて発せられる。警告の出力態様は任意である。一例として、警告の内容が不揮発性メモリ136にログとして書き込まれることで、警告が出力される。あるいは、警告の内容がドライバ137を介してメモリカード140にログとして書き込まれることで、警告が出力される。あるいは、ドライバ137介してLED138が発光することにより、警告が出力される。あるいは、システム変数131が警告状態に書き換えられることで、警告が出力される。
他の局面において、イベント管理部132は、メモリ106の使用容量が上限に達したことを示すイベントを検知した場合、メモリ異常を出力する。当該イベントは、メモリ106の使用容量が閾値th1(図6参照)を超えたことに基づいて発せられる。メモリ異常の出力態様は任意である。一例として、メモリ異常が不揮発性メモリ136にログとして書き込まれることで、異常が出力される。あるいは、メモリ異常がドライバ137を介してメモリカード140にログとして書き込まれることで、メモリ異常が出力される。あるいは、ドライバ137介してLED138が発光することにより、メモリ異常が出力される。システム変数131がメモリ異常状態に書き換えられることで、メモリ異常が出力される。
ドライバ137は、LED138やメモリカードインターフェイス139を正常に動作させるためのソフトウェアである。メモリカードインターフェイス139は、メモリカード140を脱着するためのソケットである。
OPC−UA通信スタック151は、OPC−UAクライアント350への送信データや、OPC−UAクライアント350からの受信データを一時的に保持する。メインプログラム153は、上述の機能実行部152(図1参照)による通信制御機能や制約部156(図1参照)によるサーバー停止機能を実現するためのソフトウェアである。メモリ監視プログラム155は、上述の監視部154によるメモリ106の使用容量の監視機能を実現するためのソフトウェアである。
<G.コントローラ100のハードウェア構成>
図8を参照して、コントローラ100のハードウェア構成について説明する。図8は、コントローラ100のハードウェア構成の一例を示す模式図である。
コントローラ100は、外部通信インターフェイス101と、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、メインメモリとしてのメモリ106と、フラッシュメモリ108と、内部バスコントローラ122と、フィールドバスコントローラ124と、メモリカードインターフェイス139とを含む。
プロセッサ102は、フラッシュメモリ108に格納された制御プログラム112を読み出して、メモリ106に展開して実行することで、駆動機器200の一例であるサーボドライバ200Bなどに対する任意の制御を実現する。制御プログラム112は、コントローラ100を制御するための各種プログラムを含む。一例として、制御プログラム112は、システムプログラム109およびユーザプログラム110などを含む。システムプログラム109は、データの入出力処理や実行タイミング制御などの、コントローラ100の基本的な機能を提供するための命令コードを含む。ユーザプログラム110は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム110Aおよびモーション制御を実行するためのモーションプログラム110Bとを含む。制御プログラム112は、たとえば、ラダー言語やST(Structured Text)言語で記述されているPLCプログラムである。
チップセット104は、各コンポーネントを制御することで、コントローラ100全体としての処理を実現する。
内部バスコントローラ122は、コントローラ100と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、I/Oユニット126が接続されている。
フィールドバスコントローラ124は、コントローラ100とフィールドバスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、サーボドライバ200Bが接続されている。他にも、ロボットコントローラ200A(図1参照)や視覚センサ200C(図1参照)などが接続されてもよい。
内部バスコントローラ122およびフィールドバスコントローラ124は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータ(測定値を含む)を取得することができる。また、内部バスコントローラ122および/またはフィールドバスコントローラ124は、サーボドライバ200Bとの間でデータを遣り取りするためのインターフェイスとしても機能する。
外部通信インターフェイス101は、各種の有線/無線ネットワークを通じたデータの遣り取りを制御する。メモリカードインターフェイス139は、外部記憶媒体の一例であるメモリカード140(たとえば、SDカード)を着脱可能に構成されており、メモリカード140に対してデータを書き込み、メモリカード140からデータを読出すことが可能になっている。
<H.コントローラ100の制御構造>
図9を参照して、コントローラ100の制御構造について説明する。図9は、コントローラ100内のOPC−UAサーバー150によって実現される処理の一部を表わすフローチャートである。図9に示される処理は、コントローラ100のプロセッサ102がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
ステップS108において、プロセッサ102は、OPC−UAサーバー150に対する初期化処理を実行する。当該初期化処理は、たとえば、公開変数をメモリ106に展開し、外部機器300から公開変数にアクセス可能な状態にする処理などを含む。
ステップS110において、プロセッサ102は、上述の機能実行部152(図1参照)として、外部機器300のいずれかから公開変数に対するアクセス要求を受信したか否かを判断する。プロセッサ102は、外部機器300のいずれかから公開変数に対するアクセス要求を受信したと判断した場合(ステップS110においてYES)、制御をステップS112に切り替える。そうでない場合には(ステップS110においてNO)、プロセッサ102は、制御をステップS120に切り替える。
ステップS112において、プロセッサ102は、ステップS110で受信したアクセス要求で指定される公開変数を取得するために必要な各種データをメモリ106に展開し、当該公開変数にアクセスする。一例として、プロセッサ102は、「Subscription要求」を受信した場合には、アクセス要求の送信元の外部機器300に指定された公開変数を定期的に送信する機能を有するオブジェクトをメモリ106に準備する。Subscription処理については図3および図4で説明した通りであるので、その説明については繰り返さない。
ステップS120において、プロセッサ102は、上述の監視部154(図1参照)として、メモリ106の使用容量が所定の閾値th2(図6参照)を超えたか否かを判断する。閾値th2は、予め設定されていてもよいし、ユーザによって任意に設定されてもよい。プロセッサ102は、メモリ106の使用容量が所定の閾値th2を超えたと判断した場合(ステップS120においてYES)、制御をステップS122に切り替える。そうでない場合には(ステップS120においてNO)、プロセッサ102は、制御をステップS130に切り替える。
ステップS122において、プロセッサ102は、メモリ106の使用容量が上限に達しそうなことを示す警告を出力する。警告の出力方法は、任意である。一例として、プロセッサ102は、メモリカード140(図7参照)などにログとして警告を出力してもよいし、LED138(図7参照)などを発光させることで警告を出力してもよいし、音声で警告を出力してもよい。また、プロセッサ102は、外部機器300に警告を通知してもよい。
ステップS130において、プロセッサ102は、メモリ106の使用容量が所定の閾値th1(図6参照)を超えたか否かを判断する。閾値th1は、閾値th2よりも大きい。閾値th1は、予め設定されていてもよいし、ユーザによって任意に設定されてもよい。プロセッサ102は、メモリ106の使用容量が所定の閾値th1を超えたと判断した場合(ステップS130においてYES)、制御をステップS132に切り替える。そうでない場合には(ステップS130においてNO)、プロセッサ102は、制御をステップS110に戻す。
ステップS132において、プロセッサ102は、上述の制約部156(図1参照)として、OPC−UAサーバー150のサーバー機能を制約する。このような制約処理の例としては、OPC−UAサーバー150の状態を正常状態から異常状態に遷移させる処理や、外部機器300からOPC−UAサーバー150へのアクセス要求に対してエラー応答を行う処理や、OPC−UAサーバー150によるサーバー機能を停止する処理(シャットダウン処理)などが挙げられる。このとき、プロセッサ102は、駆動機器200の制御プログラム112の実行については停止しない。好ましくは、プロセッサ102は、OPC−UAサーバー150が使用しているメモリ106上の記憶領域を解放した上で、OPC−UAサーバー150におけるサーバー機能を停止する。
ステップS140において、プロセッサ102は、サーバー機能の終了指示を受け付けたか否かを判断する。プロセッサ102は、サーバー機能の終了指示を受け付けたと判断した場合(ステップS140においてYES)、OPC−UAサーバー150を停止し、図9に示される処理を終了する。プロセッサ102は、サーバー機能の終了指示を受け付けたと判断しなかった場合(ステップS140においてNO)、制御をステップS142に切り替える。
ステップS142において、プロセッサ102は、上述の制約部156として、復帰指示を受け付けたか否かを判断する。当該復帰指示は、たとえば、サポート装置400がコントローラ100に設定を再転送したことなどに基づいて発せられる。プロセッサ102は、復帰指示を受け付けたと判断した場合(ステップS142においてYES)、制御をステップS108に戻す。ステップS108で再び初期化処理が実行されることで、サーバー機能の制約が解除される。当該解除処理は、たとえば、OPC−UAサーバー150の状態を異常状態から正常状態に遷移させる処理などを含む。プロセッサ102は、復帰指示を受け付けたと判断しなかった場合(ステップS142においてNO)、制御をステップS140に戻す。
<I.まとめ>
以上のようにして、コントローラ100は、OPC−UAクライアント350として機能する外部機器300との通信を実現するためのOPC−UAサーバー150を含む。OPC−UAサーバー150は、制御プログラム112の変数に対するアクセス要求を外部機器300のいずれから受信したことに基づいて、アクセス要求で指定された公開変数の取得処理をメモリ106の記憶領域の一部を利用して実行し、当該アクセス要求の送信元の外部機器300に当該変数の値を送信する。そのため、外部機器300からのアクセス要求が多いほど、メモリ106の使用容量は多くなる。
OPC−UAサーバー150は、メモリ106の使用容量を監視し、当該使用容量が所定の閾値を超えたことに基づいて、メモリ106を利用するサーバー機能を制約するための処理を実行する。これにより、OPC−UAサーバー150のサーバー機能が制約され、コントローラ100は、OPC−UAサーバー150のサーバー機能を制約するだけであるので、制御プログラム112の実行は停止されない。これにより、コントローラ100は、メモリ106の使用容量が多くなった場合に駆動機器200に影響を与えずにサーバー機能を制約することができる。
<J.付記>
以上のように、本実施形態は以下のような開示を含む。
[構成1]
1つ以上の外部機器と通信するためのサーバー部(150)を有し、駆動機器(200)を制御するための制御装置(100)であって、
メモリ(106)と、
前記駆動機器(200)の制御プログラム(112)の実行命令を受け付けたことに基づいて、当該制御プログラム(112)の実行に必要なデータを前記メモリに展開し、当該制御プログラム(112)に従って前記駆動機器(200)を制御するためのプログラム実行部(103)と、
前記1つ以上の外部機器(300)からの要求に応答して、前記メモリ(106)上の記憶領域を利用する、前記サーバー部の機能を実行するための機能実行部(152)と、
前記メモリ(106)の使用容量を監視するための監視部(154)と、
前記使用容量が所定の第1閾値を超えたことに基づいて、前記サーバー部(150)の前記機能を制約するための処理を実行する制約部(156)とを備える、制御装置。
[構成2]
前記制約部(156)は、前記使用容量が前記第1閾値を超えた場合に、前記制御プログラム(112)の実行を維持した状態で前記サーバー部(150)の前記機能を制約する、構成1に記載の制御装置。
[構成3]
前記制約部(156)は、前記サーバー部(150)が使用している前記メモリ(106)上の記憶領域を解放した上で、前記サーバー部(150)の前記機能を制約する、構成1または2に記載の制御装置。
[構成4]
前記制御装置は、外部記憶媒体(140)に電気的に接続可能に構成されており、
前記制約部(156)は、前記サーバー部(150)の前記機能を制約したことをログとして前記外部記憶媒体(140)に書き込む、構成1〜3のいずれか1項に記載の制御装置。
[構成5]
前記制約部(156)は、前記使用容量が前記第1閾値よりも小さい第2閾値を超えたことに基づいて、警告を出力する、構成1〜4のいずれか1項に記載の制御装置。
[構成6]
前記サーバー部(156)は、OPC−UAに従った通信プロトコルを利用して前記1つ以上の外部機器(300)と通信する、構成1〜5のいずれか1項に記載の制御装置。
[構成7]
前記制約部(156)は、前記サーバー部(150)の前記機能の制約を解除する指示を受け付けたことに基づいて、当該制約を解除する、構成1〜6のいずれか1項に記載の制御装置。
[構成8]
駆動機器(200)の制御装置(100)の制御方法であって、
前記制御装置(100)は、1つ以上の外部機器(300)と通信するためのサーバー部(150)を備え、
前記制御方法は、
前記駆動機器(200)の制御プログラム(112)の実行命令を受け付けたことに基づいて、当該制御プログラム(112)の実行に必要なデータを前記制御装置(100)のメモリ(106)に展開し、当該制御プログラム(112)に従って前記駆動機器(200)を制御するステップと、
前記1つ以上の外部機器(300)からの要求に応答して、前記メモリ(106)上の記憶領域を利用する、前記サーバー部(150)における機能を実行するステップと、
前記メモリ(106)の使用容量を監視するステップと、
前記使用容量が所定の第1閾値を超えたことに基づいて、前記サーバー部(150)の前記機能を制約するための処理を実行するステップとを備える、制御方法。
[構成9]
駆動機器(200)の制御装置(100)によって実行されるプログラムであって、
前記制御装置(100)は、1つ以上の外部機器(300)と通信するためのサーバー部(150)を備え、
前記プログラムは、前記制御装置(100)に、
前記駆動機器(200)の制御プログラム(112)の実行命令を受け付けたことに基づいて、当該制御プログラム(112)の実行に必要なデータを前記制御装置(100)のメモリ(106)に展開し、当該制御プログラム(112)に従って前記駆動機器(200)を制御するステップと、
前記1つ以上の外部機器(300)からの要求に応答して、前記制御装置(100)のメモリ(106)上の記憶領域を利用する、前記サーバー部(150)における機能を実行するステップと、
前記メモリ(106)の使用容量を監視するステップと、
前記使用容量が所定の第1閾値を超えたことに基づいて、前記サーバー部(150)の前記機能を制約するための処理を実行するステップとを実行させる、プログラム。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
100 コントローラ、101 外部通信インターフェイス、102 プロセッサ、103 プログラム実行部、104 チップセット、106 メモリ、108 フラッシュメモリ、109 システムプログラム、110 ユーザプログラム、110A シーケンスプログラム、110B モーションプログラム、111 変数、112 制御プログラム、122 内部バスコントローラ、124 フィールドバスコントローラ、126 I/Oユニット、130 リソースマネージャ、131 システム変数、132 イベント管理部、135 ツールインターフェイス、136 不揮発性メモリ、137 ドライバ、139 メモリカードインターフェイス、140 メモリカード、150 OPC−UAサーバー、151 通信スタック、152 通信制御部、153 メインプログラム、154 監視部、155 メモリ監視プログラム、156 停止部、200 駆動機器(200)、200A ロボットコントローラ、200B サーボドライバ、200C 視覚センサ、201A アームロボット、201B サーボモータ、300 外部機器、350A,350B,350C OPC−UAクライアント、352 Subscriptionオブジェクト、354A〜354C Queueオブジェクト、356A〜356C MoniteredItemオブジェクト、400 サポート装置、401 設定画面。

Claims (9)

  1. 1つ以上の外部機器と通信するためのサーバー部を有し、駆動機器を制御するための制御装置であって、
    メモリと、
    前記駆動機器の制御プログラムの実行命令を受け付けたことに基づいて、当該制御プログラムの実行に必要なデータを前記メモリに展開し、当該制御プログラムに従って前記駆動機器を制御するためのプログラム実行部と、
    前記1つ以上の外部機器からの要求に応答して、前記メモリ上の記憶領域を利用する、前記サーバー部の機能を実行するための機能実行部と、
    前記メモリの使用容量を監視するための監視部と、
    前記使用容量が所定の第1閾値を超えたことに基づいて、前記サーバー部の前記機能を制約するための処理を実行する制約部とを備える、制御装置。
  2. 前記制約部は、前記使用容量が前記第1閾値を超えた場合に、前記制御プログラムの実行を維持した状態で前記サーバー部の前記機能を制約する、請求項1に記載の制御装置。
  3. 前記制約部は、前記サーバー部が使用している前記メモリ上の記憶領域を解放した上で、前記サーバー部の前記機能を制約する、請求項1または2に記載の制御装置。
  4. 前記制御装置は、外部記憶媒体に電気的に接続可能に構成されており、
    前記制約部は、前記サーバー部の前記機能を制約したことをログとして前記外部記憶媒体に書き込む、請求項1〜3のいずれか1項に記載の制御装置。
  5. 前記制約部は、前記使用容量が前記第1閾値よりも小さい第2閾値を超えたことに基づいて、警告を出力する、請求項1〜4のいずれか1項に記載の制御装置。
  6. 前記サーバー部は、OPC−UAに従った通信プロトコルを利用して前記1つ以上の外部機器と通信する、請求項1〜5のいずれか1項に記載の制御装置。
  7. 前記制約部は、前記サーバー部の前記機能の制約を解除する指示を受け付けたことに基づいて、当該制約を解除する、請求項1〜6のいずれか1項に記載の制御装置。
  8. 駆動機器の制御装置の制御方法であって、
    前記制御装置は、1つ以上の外部機器と通信するためのサーバー部を備え、
    前記制御方法は、
    前記駆動機器の制御プログラムの実行命令を受け付けたことに基づいて、当該制御プログラムの実行に必要なデータを前記制御装置のメモリに展開し、当該制御プログラムに従って前記駆動機器を制御するステップと、
    前記1つ以上の外部機器からの要求に応答して、前記メモリ上の記憶領域を利用する、前記サーバー部における機能を実行するステップと、
    前記メモリの使用容量を監視するステップと、
    前記使用容量が所定の第1閾値を超えたことに基づいて、前記サーバー部の前記機能を制約するための処理を実行するステップとを備える、制御方法。
  9. 駆動機器の制御装置によって実行されるプログラムであって、
    前記制御装置は、1つ以上の外部機器と通信するためのサーバー部を備え、
    前記プログラムは、前記制御装置に、
    前記駆動機器の制御プログラムの実行命令を受け付けたことに基づいて、当該制御プログラムの実行に必要なデータを前記制御装置のメモリに展開し、当該制御プログラムに従って前記駆動機器を制御するステップと、
    前記1つ以上の外部機器からの要求に応答して、前記制御装置のメモリ上の記憶領域を利用する、前記サーバー部における機能を実行するステップと、
    前記メモリの使用容量を監視するステップと、
    前記使用容量が所定の第1閾値を超えたことに基づいて、前記サーバー部の前記機能を制約するための処理を実行するステップとを実行させる、プログラム。
JP2017226972A 2017-11-27 2017-11-27 制御装置、制御方法、およびプログラム Active JP6996257B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017226972A JP6996257B2 (ja) 2017-11-27 2017-11-27 制御装置、制御方法、およびプログラム
CN201811050048.8A CN109839890B (zh) 2017-11-27 2018-09-10 控制装置、控制方法以及计算机可读存储介质
EP18193428.2A EP3489777B1 (en) 2017-11-27 2018-09-10 Control device, control method, and program
US16/132,497 US20190166202A1 (en) 2017-11-27 2018-09-17 Control device, control method, and non-transitory computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017226972A JP6996257B2 (ja) 2017-11-27 2017-11-27 制御装置、制御方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2019096210A true JP2019096210A (ja) 2019-06-20
JP6996257B2 JP6996257B2 (ja) 2022-01-17

Family

ID=63557242

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017226972A Active JP6996257B2 (ja) 2017-11-27 2017-11-27 制御装置、制御方法、およびプログラム

Country Status (4)

Country Link
US (1) US20190166202A1 (ja)
EP (1) EP3489777B1 (ja)
JP (1) JP6996257B2 (ja)
CN (1) CN109839890B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021036392A (ja) * 2019-08-30 2021-03-04 株式会社安川電機 データ収集システム、データ収集方法、及びプログラム
CN112445189A (zh) * 2019-08-30 2021-03-05 株式会社安川电机 数据收集系统、数据收集方法和程序

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3806422A4 (en) * 2018-08-01 2022-01-26 Siemens Aktiengesellschaft INTERCONNECTING DEVICE, COMMUNICATION METHOD AND SYSTEM INCLUDING A ROBOT
US20240118671A1 (en) * 2022-10-10 2024-04-11 Schneider Electric Systems Usa, Inc. Systems and methods for using memory-mapped memories in a microcontroller-based instrument

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293386A (ja) * 1999-04-12 2000-10-20 Hitachi Ltd メモリ管理方式
JP2013535730A (ja) * 2010-07-23 2013-09-12 サウジ アラビアン オイル カンパニー データ収集および制御のための統合ノードを提供する機械、コンピュータプログラム製品、およびコンピュータで実施する方法
JP2015109020A (ja) * 2013-12-05 2015-06-11 三菱電機株式会社 リソース配分装置、リソース配分システム、リソース配分方法及びプログラム
JP2016081301A (ja) * 2014-10-16 2016-05-16 株式会社キーエンス プログラマブル・ロジック・コントローラ、システム、制御方法およびプログラム
JP2017157219A (ja) * 2016-03-04 2017-09-07 シーメンス アクチエンゲゼルシヤフトSiemens Aktiengesellschaft 制御データのコントロールされた提供

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799080B1 (en) * 2003-06-12 2004-09-28 The Boc Group, Inc. Configurable PLC and SCADA-based control system
US8875040B2 (en) * 2005-06-07 2014-10-28 Rockwell Automation Technologies, Inc. Universal web-based reprogramming method and system
CN1798141A (zh) * 2004-12-22 2006-07-05 中国科学院沈阳自动化研究所 符合opc标准的远程组态监控系统
JP4760481B2 (ja) * 2006-03-29 2011-08-31 富士通株式会社 記憶装置容量閾値管理プログラム及び記憶装置容量閾値管理方法
JP2012018541A (ja) 2010-07-07 2012-01-26 Hakko Denki Kk 表示装置
US20120198464A1 (en) * 2011-01-31 2012-08-02 Toyota Jidosha Kabushiki Kaisha Safety controller and safety control method
KR101276745B1 (ko) * 2012-01-10 2013-06-19 쓰리코주식회사 이기종 피엘씨 시스템과 에이치엠아이 시스템 간의 통신을 수행하는 범용 오피씨 통신드라이브
US9641431B1 (en) * 2012-04-18 2017-05-02 Google Inc. System and methods for utilization-based balancing of traffic to an information retrieval system
CN104350724B (zh) * 2012-05-31 2017-09-22 西门子公司 客户端借助于opc‑ua对服务的访问的方法
US9223544B2 (en) * 2012-09-07 2015-12-29 Intel Corporation Number representation and memory system for arithmetic
JP6357770B2 (ja) * 2013-12-26 2018-07-18 オムロン株式会社 制御装置および通信制御方法
CN104780190A (zh) * 2014-01-13 2015-07-15 北京兆维电子(集团)有限责任公司 数据读写控制方法及装置
CN103716251B (zh) * 2014-01-14 2017-06-27 三星电子(中国)研发中心 用于内容分发网络的负载均衡方法及设备
US9958860B2 (en) * 2014-05-01 2018-05-01 Rockwell Automation Technologies, Inc. Systems and methods for broadcasting data and data tags associated with an industrial automation system
CN106716372B (zh) * 2014-09-16 2018-08-24 三菱电机株式会社 可编程逻辑控制器
US10348812B2 (en) * 2015-06-22 2019-07-09 Vmware Inc. Sticky session data migration
RO131815A2 (ro) * 2015-09-29 2017-04-28 Bristol, Inc., D/B/A/ Remote Automation Solutions Monitorizarea dispozitivelor în câmp printr-o reţea de comunicaţii
DK3151152T3 (en) * 2015-09-30 2020-06-15 Secure Nok Tech As Non-intrusive software agent for monitoring and detection of cyber security events and cyber-attacks in an industrial control system
EP3200034B1 (de) * 2016-01-28 2019-10-30 Siemens Aktiengesellschaft Zugriff auf daten oder funktionen einer speicherprogrammierbaren steuerung mittels eines webdienstes
US20170288705A1 (en) * 2016-04-05 2017-10-05 Alibaba Group Holding Limited Shared memory with enhanced error correction
JP6705266B2 (ja) * 2016-04-07 2020-06-03 オムロン株式会社 制御装置、制御方法およびプログラム
CN106255154B (zh) * 2016-08-03 2020-04-10 上海斐讯数据通信技术有限公司 一种基于资源利用率的负载均衡系统及方法
CN106774220A (zh) * 2017-01-20 2017-05-31 上海电力学院 一种火电厂分布式控制系统在线运行状态监测平台

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293386A (ja) * 1999-04-12 2000-10-20 Hitachi Ltd メモリ管理方式
JP2013535730A (ja) * 2010-07-23 2013-09-12 サウジ アラビアン オイル カンパニー データ収集および制御のための統合ノードを提供する機械、コンピュータプログラム製品、およびコンピュータで実施する方法
JP2015109020A (ja) * 2013-12-05 2015-06-11 三菱電機株式会社 リソース配分装置、リソース配分システム、リソース配分方法及びプログラム
JP2016081301A (ja) * 2014-10-16 2016-05-16 株式会社キーエンス プログラマブル・ロジック・コントローラ、システム、制御方法およびプログラム
JP2017157219A (ja) * 2016-03-04 2017-09-07 シーメンス アクチエンゲゼルシヤフトSiemens Aktiengesellschaft 制御データのコントロールされた提供

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021036392A (ja) * 2019-08-30 2021-03-04 株式会社安川電機 データ収集システム、データ収集方法、及びプログラム
CN112445189A (zh) * 2019-08-30 2021-03-05 株式会社安川电机 数据收集系统、数据收集方法和程序
US11340590B2 (en) 2019-08-30 2022-05-24 Kabushiki Kaisha Yaskawa Denki Data collection system, data collection method, and information storage medium

Also Published As

Publication number Publication date
EP3489777A1 (en) 2019-05-29
JP6996257B2 (ja) 2022-01-17
US20190166202A1 (en) 2019-05-30
CN109839890A (zh) 2019-06-04
EP3489777B1 (en) 2021-06-09
CN109839890B (zh) 2022-05-24

Similar Documents

Publication Publication Date Title
CN109839890B (zh) 控制装置、控制方法以及计算机可读存储介质
JP6171386B2 (ja) コントローラ、情報処理装置およびプログラム
US9984244B2 (en) Controller, information processing apparatus, and recording medium
US20020124011A1 (en) Methods, systems, and computer program products for communicating with a controller using a database interface
US20120089239A1 (en) Intelligent interface for a distributed control system
JP2017187993A (ja) 制御装置、制御方法およびプログラム
EP3489776B1 (en) Control device, control method, and program
CN111966465B (zh) 一种实时修改宿主机配置参数的方法、系统、设备及介质
US10877803B2 (en) Control apparatus, control method and non-transitory storage medium
CN111090562A (zh) 一种边缘智能网关的业务进程监控方法、设备及存储介质
WO2019150970A1 (ja) 制御装置、監視方法、および監視プログラム
JP7099352B2 (ja) 制御システム
US10627784B2 (en) Control system and control device
JP2005346257A (ja) 情報処理装置及びデバイス
JP2020190765A (ja) 転送装置、情報処理装置、および、データ転送方法
CN112105997B (zh) 控制装置、监视方法及存储介质
CN116627868A (zh) 一种控制器间转发方式的控制方法及装置
JP2024000664A (ja) 制御システム、中継装置および通信方法
JPWO2012056930A1 (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211129

R150 Certificate of patent or registration of utility model

Ref document number: 6996257

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150