JP2022182160A - 制御システム、システムプログラムおよびデバッグ方法 - Google Patents

制御システム、システムプログラムおよびデバッグ方法 Download PDF

Info

Publication number
JP2022182160A
JP2022182160A JP2021089544A JP2021089544A JP2022182160A JP 2022182160 A JP2022182160 A JP 2022182160A JP 2021089544 A JP2021089544 A JP 2021089544A JP 2021089544 A JP2021089544 A JP 2021089544A JP 2022182160 A JP2022182160 A JP 2022182160A
Authority
JP
Japan
Prior art keywords
value
input
address
function block
user program
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.)
Pending
Application number
JP2021089544A
Other languages
English (en)
Inventor
嘉英 田村
Yoshihide Tamura
康裕 安達
Yasuhiro Adachi
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 JP2021089544A priority Critical patent/JP2022182160A/ja
Priority to PCT/JP2022/014417 priority patent/WO2022249713A1/ja
Publication of JP2022182160A publication Critical patent/JP2022182160A/ja
Pending legal-status Critical Current

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/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

Figure 2022182160000001
【課題】ファンクションブロックを含むユーザプログラムをより効率的にデバッグするための手段を提供する。
【解決手段】制御システムは、ファンクションブロックを含むユーザプログラムを実行する演算処理部と、ユーザプログラムが参照するデータを保持するデータ保持部と、ユーザ操作に応じて、演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部と、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するアドレス特定部と、データ保持部の特定されたアドレスに保持されている値を指示された値に変更する変更部とを含む。
【選択図】図1

Description

本発明は、制御システム、システムプログラムおよびデバッグ方法に関する。
FA(Factory Automation)分野においては、各種設備や各種機械を制御するための制御装置として、PLC(プログラマブルロジックコントローラ)が多く使用されている。
通常、PLCで実行されるユーザプログラム(制御ロジックを記述したプログラム)は、開発支援装置において開発される。そして、開発支援装置からPLCに対してユーザプログラムが送信される。さらに、開発支援装置を操作して、PLCで実行されるユーザプログラムに対してデバッグなどが可能になっている。
また、PLCで実行されるユーザプログラムは、国際電気標準会議(IEC:International Electrotechnical Commission)が定めるIEC61131-3で規定されるいずれかの言語で記述されることが一般的である。IEC61131-3においては、POU(プログラム構成ユニット)として、メインプログラム、ファンクションブロック、ファンクションが規定されている。また、IEC61131-3においては、POUで利用できる変数についても規定されている。
ファンクションブロックに関して、特開2009-104227号公報(特許文献1)は、呼び出し階層上位のプログラム部分だけ、或いは中間のファンクションブロックだけを抽出して任意の単位で部品化でき、再利用の利便性を向上させる方法などを開示する。
特開2009-104227号公報
上述したようなファンクションブロックを含むユーザプログラムのデバッグをより効率的に行うための方法が要望されている。
本発明は、ファンクションブロックを含むユーザプログラムをより効率的にデバッグするための手段を提供することを目的とする。
ある実施の形態に係る制御システムは、ファンクションブロックを含むユーザプログラムを実行する演算処理部と、ユーザプログラムが参照するデータを保持するデータ保持部と、ユーザ操作に応じて、演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部と、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するアドレス特定部と、データ保持部の特定されたアドレスに保持されている値を指示された値に変更する変更部とを含む。
この構成によれば、ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するので、入出力変数に実値が格納されていなくても、入出力変数が示す値を変更できる。入出力変数を任意の値に変更する手段を提供することで、ファンクションブロックを含むユーザプログラムをより効率的にデバッグできる。
アドレス特定部は、ファンクションブロックの前回実行時の情報を収集することで、アドレスを特定するようにしてもよい。この構成によれば、ファンクションブロックの実行において実際に利用されたアドレスを特定できる。
アドレス特定部は、ユーザプログラムが実行完了している状態において、アドレスを特定するようにしてもよい。この構成によれば、ユーザプログラムが実行中においては、入出力変数が変更される可能性があるので、ユーザプログラムが実行完了している状態を維持することで、確実に入出力変数を変更できる。
制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、アドレス特定部は、プログラマブルロジックコントローラに実装されてもよい。この構成によれば、ユーザプログラムの実行状態を容易に取得できるので、入出力変数に対応付けられたデータ保持部のアドレスを容易に特定できる。
制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、アドレス特定部は、開発支援装置に実装されてもよい。この構成によれば、開発支援装置が入出力変数に対応付けられたデータ保持部のアドレスを特定するので、プログラマブルロジックコントローラの負荷の上昇を抑制できる。
別の実施の形態によれば、ファンクションブロックを含むユーザプログラムを実行する実行環境を提供するシステムプログラムが提供される。システムプログラムは、コンピュータに、ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたアドレスを特定するステップと、特定されたアドレスに保持されている値を指示された値に変更するステップとを実行させる。
さらに別の実施の形態によれば、ファンクションブロックを含むユーザプログラムをデバッグするデバッグ方法が提供される。デバッグ方法は、ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたアドレスを特定するステップと、特定されたアドレスに保持されている値を指示された値に変更するステップとを含む。
本発明によれば、ファンクションブロックを含むユーザプログラムをより効率的にデバッグできるようになる。
本実施の形態に係る開発支援装置の主たる機能を示す模式図である。 本実施の形態に係る制御システムのシステム構成を概略する模式図である。 本実施の形態に係る制御システムを構成するPLCのハードウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成する開発支援装置のハードウェア構成例を示す模式図である。 本実施の形態に係る開発支援装置が提供するオンラインデバッグの一例を説明するための図である。 本実施の形態に係る開発支援装置が提供するファンクションブロックに対するデバッグの一例を説明するための図である。 図6に示すオンラインデバッグに係る処理手順を示すフローチャートである。 本実施の形態に係る開発支援装置が提供するファンクションブロックに対するデバッグの別の一例を説明するための図である。 図8に示すオンラインデバッグに係る処理手順を示すフローチャートである。 本実施の形態に係る開発支援装置が提供するオンラインデバッグに係るユーザインターフェイス画面の一例を示す模式図である。
本技術の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御システム1の概要を示す模式図である。図1を参照して、制御システム1は、ファンクションブロック150を含むユーザプログラム114を実行する演算処理部50を有している。演算処理部50は、典型的には、PLCのプロセッサ102によって実現されてもよい。制御システム1は、演算処理部50に関連付けて、ユーザプログラム114が参照するデータを保持するデータ保持部140を有している。データ保持部140は、典型的には、PLCのメインメモリ104によって実現されてもよい。
指示発行部260は、ユーザ操作に応じて、演算処理部50が実行するユーザプログラム114が参照するデータの値を変更するための指示を発行する。典型的には、指示発行部260は、PLCに接続される開発支援装置に実装されてもよい。
アドレス特定モジュール170は、ファンクションブロック150に関連付けられた入出力変数156の値の変更が指示されると、ファンクションブロック150の過去の実行状態を参照することで、入出力変数156に対応付けられたデータ保持部140のアドレスを特定する。変更モジュール180は、データ保持部140の特定されたアドレスに保持されている値を指示された値に変更する。
このような構成を採用することで、ファンクションブロック150に関連付けられた入出力変数の値を任意に変更することで、ファンクションブロック150およびファンクションブロック150を含むユーザプログラム114の挙動を異ならせて、必要なデバッグを容易に行うことができる。
<B.制御システム構成>
次に、本実施の形態に係る開発支援装置を含む制御システム1の構成について説明する。
(b1:全体構成)
図2は、本実施の形態に係る制御システム1のシステム構成を概略する模式図である。図2を参照して、制御システム1は、PLC100と、PLC100に接続される開発支援装置200とを含む。
PLC100は、ユーザプログラムを実行することで、フィールドネットワーク10に接続されたデバイスからデータの収集、収集したデータを利用した制御演算の実行、制御演算の実行結果の一部または全部のフィールドネットワーク10に接続されたデバイスへの出力、などの制御演算を実行する。
図2に示す例では、PLC100は、フィールドネットワーク10を介して、リモートI/Oデバイス12、ロボットコントローラ20およびモータドライバ30と接続されている。
フィールドネットワーク10には、産業用ネットワーク用のプロトコルである、EtherCAT(登録商標)やEtherNet/IPなどを用いることができる。
リモートI/Oデバイス12は、センサやアクチュエータなどのフィールドデバイス14が接続されており、センサなどにより計測されたデータをPLC100へ送信し、PLC100から受信したデータをアクチュエータなどを介して出力する。ロボットコントローラ20は、ロボット22を制御する。モータドライバ30は、モータ32を制御する。
PLC100は、上位ネットワーク16を介して、HMI300およびサーバ装置400に接続されてもよい。上位ネットワーク16には、産業用ネットワーク用のプロトコルであるやEtherNet/IPなどを用いることができる。
(b2:PLC100)
図3は、本実施の形態に係る制御システム1を構成するPLC100のハードウェア構成例を示す模式図である。図3を参照して、PLC100は、プロセッサ102と、メインメモリ104と、ストレージ110と、メモリカードインターフェイス120と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116と、USB(Universal Serial Bus)インターフェイスを提供するUSBコントローラ124とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
プロセッサ102は、ユーザプログラムを実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたシステムプログラム112およびユーザプログラム114を読み出して、メインメモリ104に展開して実行することで、制御対象に対する制御演算を実現する。
メインメモリ104は、ユーザプログラム114が参照するデータ保持部140に相当し、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。ストレージ110には、基本的な機能を実現するためのシステムプログラム112、および、制御対象に応じて作成されたユーザプログラム114などが格納される。
システムプログラム112は、ユーザプログラム114を実行する実行環境を提供するための命令を含む。
ユーザプログラム114は、制御演算を実現するための命令が記述されたものであり、典型的には、シーケンス命令およびモーション命令を含み得る。ユーザプログラム114は、IEC61131-3で規定されるいずれかの言語で記述されてもよい。但し、ユーザプログラム114は、IEC61131-3で規定される言語以外のメーカ独自言語で記述されるプログラムを含んでいてもよい。
メモリカードインターフェイス120は、着脱可能な記憶媒体の一例であるメモリカード122を受け付ける。メモリカードインターフェイス120は、メモリカード122に対して任意のデータの読み書きが可能になっている。
上位ネットワークコントローラ106は、上位ネットワーク16を介して、任意の情報処理装置(図2に示されるHMI300およびサーバ装置400など)との間でデータをやり取りする。
フィールドネットワークコントローラ108は、フィールドネットワーク10を介して、それぞれのデバイスとの間でデータをやり取りする。
ローカルバスコントローラ116は、ローカルバス126を介して、PLC100に含まれる任意の機能ユニット130との間でデータをやり取りする。機能ユニット130は、例えば、アナログ信号の入力および/または出力を担当するアナログI/Oユニット、デジタル信号の入力および/または出力を担当するデジタルI/Oユニット、エンコーダなどからのパルスを受け付けるカウンタユニットなどからなる。
USBコントローラ124は、USB接続を介して、任意の情報処理装置(開発支援装置200など)との間でデータをやり取りする。
(b2:開発支援装置200)
図4は、本実施の形態に係る制御システム1を構成する開発支援装置200のハードウェア構成例を示す模式図である。図4を参照して、開発支援装置200は、CPUやMPUなどのプロセッサ202と、メインメモリ204と、ストレージ210と、ネットワークコントローラ220と、USBコントローラ224と、入力部226と、表示部228とを含む。これらのコンポーネントは、バス208を介して接続される。
プロセッサ202は、ストレージ210に格納された各種プログラムを読み出して、メインメモリ204に展開して実行することで、開発支援装置200で必要な処理を実現する。
ストレージ210は、例えば、HDDやSSDなどで構成される。ストレージ210には、典型的には、OS212と、開発プログラム214とが格納される。開発プログラム214は、ユーザプログラム114の作成や編集、ソースコードのユーザプログラム114から実行形式のユーザプログラム114の生成、後述するようなデバッグなどの処理を実現する。なお、ストレージ210には、図4に示すプログラム以外の必要なプログラムが格納されてもよい。
ネットワークコントローラ220は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。
USBコントローラ224は、USB接続を介して、任意の情報処理装置との間でデータをやり取りする。
入力部226は、マウス、キーボード、タッチパネルなどで構成され、ユーザからの指示を受け付ける。表示部228は、ディスプレイ、各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。
開発支援装置200は、光学ドライブ206を有していてもよい。光学ドライブ206は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体207(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムを読み取って、ストレージ210などに格納する。
開発支援装置200で実行される各種プログラムは、コンピュータ読取可能な記録媒体207を介してインストールされてもよいが、ネットワーク上の任意のサーバからダウンロードする形でインストールするようにしてもよい。
図3および図4には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
開発支援装置200は、単一の情報処理装置として実現してもよいし、必要な機能の一部または全部を複数のプロセッサリソースを用いて実現してもよい。
<C.オンラインデバッグ>
次に、本実施の形態に係る開発支援装置200が提供するオンラインデバッグについて説明する。
図5は、本実施の形態に係る開発支援装置200が提供するオンラインデバッグの一例を説明するための図である。図5を参照して、PLC100においては、ユーザプログラム114が実行されている。ユーザプログラム114は、POUとして、メインプログラム1142と、ファンクションブロック1146と、ファンクション1148とを含み得る。
PLC100の実行環境は、データ保持部140を有している。データ保持部140は、典型的には、メインメモリ104が提供する。ユーザプログラム114は、データ保持部140に保持されているデータ(値)を参照して、記述された命令を実行するとともに、命令の実行により算出されたデータ(値)をデータ保持部140に格納する。
なお、ユーザプログラム114のソースコードにおいては、変数を用いて命令が記述されており、ソースコードから実行形式(あるいは、オブジェクト形式)のプログラムを生成する際に、各変数が格納されるアドレスなどが適宜割り当てられる。
開発支援装置200からのオンラインデバッグは、メインプログラム1142、ファンクションブロック1146およびファンクション1148のうち、いずれかに対する記述を変更する操作を含む。記述を変更することで、ユーザプログラム114の実行時の挙動および実行結果などを変化させることができる。
また、開発支援装置200からのオンラインデバッグは、データ保持部140に格納されているデータの値を変更する操作を含む。データ保持部140に格納されているデータの値を変更することで、ユーザプログラム114の実行や実行結果などを変化させることができる。
このように、ユーザは、開発支援装置200を操作することで、PLC100で実行されるユーザプログラム114に対するデバッグを行うことができる。
<D.ファンクションブロックに対するデバッグ>
次に、ユーザプログラム114に含まれるファンクションブロックに対するデバッグについて説明する。
ファンクションブロックは、入出力変数を有するブロックであり、メインプログラム1142から読み出されてインスタンス化されることで実行される。入出力変数としては、入力変数、出力変数、入出力変数、外部変数、グローバル変数などを含む。
入力変数は、ファンクションブロックに渡される値である。ファンクションブロックは、入力変数の値を変更できない。出力変数は、ファンクションブロックから出力される値である。ファンクションブロックは、出力変数の値を変更可能である。入出力変数は、入力変数および出力変数を併せたような変数である。ファンクションブロックは、入出力変数の値を変更できる。
本実施の形態に係る開発支援装置200は、ユーザ操作に応じて、PLC100で実行されるユーザプログラム114に含まれるファンクションブロックの入出力変数の値を変更できる。入出力変数は、入力変数とは異なり、ファンクションブロック自体が値を変更できるようになっている。そのため、開発支援装置200からの指令によって、ファンクションブロックの入出力変数の値を変更できるように、以下のような処理を採用する。
(d1:参照渡し)
まず、ファンクションブロックに入出力変数を参照渡しする場合の構成例について説明する。
図6は、本実施の形態に係る開発支援装置200が提供するファンクションブロックに対するデバッグの一例を説明するための図である。図6を参照して、PLC100でユーザプログラム114が実行されることで、インスタンス化されたファンクションブロック150が生成される。
ファンクションブロック150には、入力変数152および入出力変数156が入力値として与えられる。また、ファンクションブロック150からは、実行結果として、入出力変数156および出力変数160が出力される。
入力変数152は、値渡しであり、入力変数152に設定された値(実引数)がファンクションブロック150の入力内部パラメータ154にコピーされる。出力変数160についても値渡しであり、ファンクションブロック150の実行により算出された出力内部パラメータ162の値が出力変数160にコピーされる。
これに対して、入出力変数156は、参照渡しであり、入出力変数156に設定されたアドレス(仮引数)が入出力内部パラメータ158にコピーされる。入出力内部パラメータ158には、指定されたアドレス(図6に示す例では、アドレスA)により特定されたデータ保持部140上の値が参照される。また、ファンクションブロック150の実行により入出力内部パラメータ158の値が変更されると、変更後の入出力内部パラメータ158の値は、データ保持部140上の指定されたアドレス(図6に示す例では、アドレスA)に書き込まれる。
すなわち、入力変数152のように値渡しで値が入力される場合には、開発支援装置200から入力変数152の値をそのまま変更すればよい。一方、入出力変数156のように参照渡しで値が入力される場合には、入出力変数156の値(すなわち、アドレス)ではなく、入出力変数156の値(アドレス)によって特定される値を変更する必要がある。
そこで、本実施の形態に係る制御システム1は、ファンクションブロック150の過去の実行状態を参照することで、ファンクションブロック150の入出力変数156に設定された値(アドレス)を取得するアドレス特定モジュール170を有している。
アドレス特定モジュール170は、ファンクションブロック150に関連付けられた入出力変数156の値の変更が指示されると、ファンクションブロック150の過去の実行状態を参照することで、入出力変数156に対応付けられたデータ保持部140のアドレスを特定する。より具体的には、アドレス特定モジュール170は、ファンクションブロック150の前回実行時の情報を収集することで、入出力変数156に設定されたアドレス(仮引数)を特定するアドレス特定モジュール170を有している。
そして、開発支援装置200から入出力変数156の値を変更する指示を受けると、PLC100は、アドレス特定モジュール170により特定されたアドレスにより指定されたデータ保持部140上の値を変更する。すなわち、PLC100は、データ保持部140の特定されたアドレスに保持されている値を指示された値に変更する。
図7は、図6に示すオンラインデバッグに係る処理手順を示すフローチャートである。図7に示す各ステップは、典型的には、PLC100のプロセッサ102がシステムプログラム112を実行することで実現される。
図7を参照して、PLC100は、ユーザプログラム114が参照するデータの値を変更するための指示を受け付ける。より具体的には、PLC100は、開発支援装置200からファンクションブロック150に含まれる入出力変数156の値の変更指示を受けたか否かを判断する(ステップS100)。ファンクションブロック150の入出力変数156の値の変更指示を受けていなければ(ステップS100においてNO)、ステップS100の処理が繰り返される。
ファンクションブロック150の入出力変数156の値の変更指示を受ければ(ステップS100においてYES)、PLC100は、現在実行中のユーザプログラム114の実行完了を待つ(ステップS102)。そして、PLC100は、実行完了したユーザプログラム114の実行状態を参照することで、対象のファンクションブロック150の入出力変数156に設定されたアドレスを特定する(ステップS104)。すなわち、PLC100は、ユーザプログラム114が実行完了している状態において、アドレスを特定する。
このように、PLC100は、ファンクションブロックに関連付けられた入出力変数156の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数156に対応付けられたアドレスを特定する。
さらに、PLC100は、特定されたアドレスにより指定されたデータ保持部140上の値を指示された値に変更する(ステップS106)。このように、PLC100は、特定されたアドレスに保持されている値を指示された値に変更する。すると、次の実行周期が到来すると、ユーザプログラム114が再度実行される。
以上のような処理手順によって、ファンクションブロック150を含むユーザプログラム114をデバッグする処理の実行が完了する。
このように、本実施の形態に係る制御システム1は、ファンクションブロック150の入出力変数156に任意の値を書き込み場合には、ファンクションブロック150が前回実行された際に指定されたアドレス(仮引数)を特定して、当該特定されたアドレスに対応する領域に当該任意の値を書き込む。これによって、参照渡しの形で実装されたファンクションブロックの入出力変数を任意に値に変更することができる。
上述の説明においては、アドレス特定モジュール170がPLC100に実装される形態について説明した。但し、開発支援装置200がアドレス特定モジュール170に相当する機能を有していてもよい。すなわち、アドレス特定モジュール170は、開発支援装置200に実装されてもよい。この場合には、開発支援装置200がPLC100からファンクションブロック150の前回実行時の情報を収集することで、入出力変数156に設定されたアドレス(仮引数)を特定する。
さらに、特定されたアドレスにより指定されたデータ保持部140上の値の変更についても、PLC100が実行主体になってもよいし、開発支援装置200が実行主体になってもよい。
(d2:値渡し)
まず、ファンクションブロックに入出力変数を値渡しする場合の構成例について説明する。
図8は、本実施の形態に係る開発支援装置200が提供するファンクションブロックに対するデバッグの別の一例を説明するための図である。図8を参照して、PLC100でユーザプログラム114が実行されることで、インスタンス化されたファンクションブロック150が生成される。
ファンクションブロック150には、入力変数152および入出力変数156が入力値として与えられる。また、ファンクションブロック150からは、実行結果として、入出力変数156および出力変数160が出力される。
入力変数152は、値渡しであり、入力変数152に設定された値(実引数)がファンクションブロック150の入力内部パラメータ154にコピーされる。出力変数160についても値渡しであり、ファンクションブロック150の実行により算出された出力内部パラメータ162の値が出力変数160にコピーされる。
入出力変数156についても参照渡しである。入出力変数156の値は、ファンクションブロック150の外部から変更されるとともに、ファンクションブロック150自身が変更する。そのため、ファンクションブロック150は、入出力変数156を入力変数として受け付けるための入出力内部パラメータ158Aと、入出力変数156を出力変数として出力するための入出力内部パラメータ158Bとを有している。
入出力変数156に設定された値(実値)がファンクションブロック150の入出力内部パラメータ158Aにコピーされる。ファンクションブロック150は、入出力内部パラメータ158Aの値を参照して演算を実行し、実行結果を入出力内部パラメータ158Bに反映する。さらに、入出力内部パラメータ158Bの値が入出力変数156にコピーされる。
ファンクションブロック150が入出力変数156の値を変更するため、入出力変数156の値が変更対象に設定されていない環境もある。このような場合には、開発支援装置200からファンクションブロック150の入出力内部パラメータ158Aの値を変更することになる。しかしながら、ファンクションブロック150が実行されるたびに、入出力内部パラメータ158Aには入出力変数156に設定された値がコピーされることになる。そのため、入出力内部パラメータ158Aを実質的に変更することにはならない。
そのため、本実施の形態に係る制御システム1は、入出力内部パラメータ158Aの値を変更する指示に応答して、ファンクションブロック150に渡される入出力変数156の値を変更する処理を実行する。
より具体的には、ユーザから入出力内部パラメータ158Aの値を変更する指示が与えられると(ステップS2)、メインプログラム1142に記述されたファンクションブロック150を呼び出すためのコールツリーを参照することで、対応する入出力変数156を特定する(ステップS4)。そして、制御システム1は、特定された入出力変数156の値を指示された値に変更する(ステップS6)。
このように、制御システム1は、ファンクションブロック150の入出力内部パラメータ158Aへ値を書き込む処理をファンクションブロック150の入出力内部パラメータ158Aにリダイレクトする。
なお、ステップS4の処理は、PLC100および開発支援装置200のいずれが実行するようにしてもよい。
図9は、図8に示すオンラインデバッグに係る処理手順を示すフローチャートである。図9に示す各ステップは、典型的には、PLC100のプロセッサ102がシステムプログラム112を実行することで実現される。
図9を参照して、PLC100は、開発支援装置200からファンクションブロック150の入出力内部パラメータ158Aの値の変更指示を受けたか否かを判断する(ステップS200)。ファンクションブロック150の入出力内部パラメータ158Aの値の変更指示を受けていなければ(ステップS200においてNO)、ステップS200の処理が繰り返される。
ファンクションブロック150の入出力内部パラメータ158Aの値の変更指示を受ければ(ステップS200においてYES)、PLC100は、現在実行中のユーザプログラム114の実行完了を待つ(ステップS202)。
PLC100は、メインプログラム1142に記述されたファンクションブロック150を呼び出すためのコールツリーを参照することで、対象の入出力内部パラメータ158Aに対応する入出力変数156を特定する(ステップS204)。さらに、PLC100は、特定された入出力変数156の値を指示された値に変更する(ステップS206)。すると、次の実行周期が到来すると、ユーザプログラム114が再度実行される。
このように、本実施の形態に係る制御システム1は、ファンクションブロック150の入出力内部パラメータ158Aに任意の値を書き込み場合には、ファンクションブロック150を呼び出すためのコールツリーを参照することで、対象の入出力内部パラメータ158Aに対応する入出力変数156を特定し、当該特定した入出力変数156に当該任意の値を書き込む。これによって、値渡しの形で実装されたファンクションブロックの入出力変数を任意に値に変更することができる。
上述したように、入出力内部パラメータ158Aに対応する入出力変数156を特定する処理は、PLC100および開発支援装置200のいずれに実装されてもよい。
さらに、特定されたアドレスにより指定されたデータ保持部140上の値の変更についても、PLC100が実行主体になってもよいし、開発支援装置200が実行主体になってもよい。
<E.ユーザインターフェイス>
次に、開発支援装置200が提供するオンラインデバッグに係るユーザインターフェイス画面の一例について説明する。
図10は、本実施の形態に係る開発支援装置200が提供するオンラインデバッグに係るユーザインターフェイス画面の一例を示す模式図である。図10を参照して、開発支援装置200が提供するユーザインターフェイス画面250は、変更対象の変数を示す対象変数欄252と、対象の変数の現在値を示す現在値欄254と、対象の変数の変更を希望する値を示す変更指示値欄256とを含む。
ユーザは、対象変数欄252で任意の変数を選択あるいは登録するとともに、現在値欄254に表示される現在値を参照して、希望する新たな値を変更指示値欄256に入力する。すると、開発支援装置200からPLC100に対して、対象変数欄252に選択された変数の値を変更指示値欄256に入力された値に変更する旨の指示が与えられる。
このように、開発支援装置200は、ユーザ操作に応じて、PLC100が実行するユーザプログラム114が参照するデータの値を変更するための指示を発行する指示発行部を有している。
ユーザは、図10に示すようなユーザインターフェイス画面を利用して、PLC100で実行されるユーザプログラム114に対するオンラインデバッグを行うことができる。
<F.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
ファンクションブロック(150)を含むユーザプログラム(114)を実行する演算処理部(50:102)と、
前記ユーザプログラムが参照するデータを保持するデータ保持部(140:104)と、
ユーザ操作に応じて、前記演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部(260:200)と、
前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられた前記データ保持部のアドレスを特定するアドレス特定部(170)と、
前記データ保持部の前記特定されたアドレスに保持されている値を指示された値に変更する変更部(180)とを備える、制御システム。
[構成2]
前記アドレス特定部は、前記ファンクションブロックの前回実行時の情報を収集することで、前記アドレスを特定する、構成1に記載の制御システム。
[構成3]
前記アドレス特定部は、前記ユーザプログラムが実行完了している状態において、前記アドレスを特定する、構成1または2に記載の制御システム。
[構成4]
前記制御システムは、プログラマブルロジックコントローラ(100)と、開発支援装置(200)とを含み、
前記アドレス特定部は、前記プログラマブルロジックコントローラに実装される、構成1~3のいずれか1項に記載の制御システム。
[構成5]
前記制御システムは、プログラマブルロジックコントローラ(100)と、開発支援装置(200)とを含み、
前記アドレス特定部は、前記開発支援装置に実装される、構成1~3のいずれか1項に記載の制御システム。
[構成6]
ファンクションブロック(150)を含むユーザプログラム(114)を実行する実行環境を提供するシステムプログラム(112)であって、コンピュータ(100)に、
前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップ(S100)と、
前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップ(S102,S104)と、
前記特定されたアドレスに保持されている値を指示された値に変更するステップ(S106)とを実行させる、システムプログラム。
[構成7]
ファンクションブロック(150)を含むユーザプログラム(114)をデバッグするデバッグ方法であって、
前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップ(S100)と、
前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップ(S102,S104)と、
前記特定されたアドレスに保持されている値を指示された値に変更するステップ(S106)とを備える、デバッグ方法。
<G.利点>
本実施の形態に係る制御システムは、ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するので、入出力変数に実値が格納されていなくても、入出力変数が示す値を変更できる。入出力変数を任意の値に変更する手段を提供することで、ファンクションブロックを含むユーザプログラムをより効率的にデバッグできる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、10 フィールドネットワーク、12 デバイス、14 フィールドデバイス、16 上位ネットワーク、20 ロボットコントローラ、22 ロボット、30 モータドライバ、32 モータ、50 演算処理部、100 PLC、102,202 プロセッサ、104,204 メインメモリ、106 上位ネットワークコントローラ、108 フィールドネットワークコントローラ、110,210 ストレージ、112 システムプログラム、114 ユーザプログラム、116 ローカルバスコントローラ、118 プロセッサバス、120 メモリカードインターフェイス、122 メモリカード、124,224 USBコントローラ、126 ローカルバス、130 機能ユニット、140 データ保持部、150,1146 ファンクションブロック、152 入力変数、154 入力内部パラメータ、156 入出力変数、158,158A,158B 入出力内部パラメータ、160 出力変数、162 出力内部パラメータ、170 アドレス特定モジュール、180 変更モジュール、200 開発支援装置、206 光学ドライブ、207 記録媒体、208 バス、212 OS、214 開発プログラム、220 ネットワークコントローラ、226 入力部、228 表示部、250 ユーザインターフェイス画面、252 対象変数欄、254 現在値欄、256 変更指示値欄、260 指示発行部、300 HMI、400 サーバ装置、1142 メインプログラム、1148 ファンクション。

Claims (7)

  1. ファンクションブロックを含むユーザプログラムを実行する演算処理部と、
    前記ユーザプログラムが参照するデータを保持するデータ保持部と、
    ユーザ操作に応じて、前記演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部と、
    前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられた前記データ保持部のアドレスを特定するアドレス特定部と、
    前記データ保持部の前記特定されたアドレスに保持されている値を指示された値に変更する変更部とを備える、制御システム。
  2. 前記アドレス特定部は、前記ファンクションブロックの前回実行時の情報を収集することで、前記アドレスを特定する、請求項1に記載の制御システム。
  3. 前記アドレス特定部は、前記ユーザプログラムが実行完了している状態において、前記アドレスを特定する、請求項1または2に記載の制御システム。
  4. 前記制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、
    前記アドレス特定部は、前記プログラマブルロジックコントローラに実装される、請求項1~3のいずれか1項に記載の制御システム。
  5. 前記制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、
    前記アドレス特定部は、前記開発支援装置に実装される、請求項1~3のいずれか1項に記載の制御システム。
  6. ファンクションブロックを含むユーザプログラムを実行する実行環境を提供するシステムプログラムであって、コンピュータに、
    前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、
    前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップと、
    前記特定されたアドレスに保持されている値を指示された値に変更するステップとを実行させる、システムプログラム。
  7. ファンクションブロックを含むユーザプログラムをデバッグするデバッグ方法であって、
    前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、
    前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップと、
    前記特定されたアドレスに保持されている値を指示された値に変更するステップとを備える、デバッグ方法。
JP2021089544A 2021-05-27 2021-05-27 制御システム、システムプログラムおよびデバッグ方法 Pending JP2022182160A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021089544A JP2022182160A (ja) 2021-05-27 2021-05-27 制御システム、システムプログラムおよびデバッグ方法
PCT/JP2022/014417 WO2022249713A1 (ja) 2021-05-27 2022-03-25 制御システム、システムプログラムおよびデバッグ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021089544A JP2022182160A (ja) 2021-05-27 2021-05-27 制御システム、システムプログラムおよびデバッグ方法

Publications (1)

Publication Number Publication Date
JP2022182160A true JP2022182160A (ja) 2022-12-08

Family

ID=84228675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021089544A Pending JP2022182160A (ja) 2021-05-27 2021-05-27 制御システム、システムプログラムおよびデバッグ方法

Country Status (2)

Country Link
JP (1) JP2022182160A (ja)
WO (1) WO2022249713A1 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3876959B2 (ja) * 2000-01-25 2007-02-07 オムロン株式会社 シーケンスプログラムのシミュレーション装置
JP4973867B2 (ja) * 2007-10-19 2012-07-11 オムロン株式会社 Plc制御プログラム開発装置及びプログラム
JP2016045712A (ja) * 2014-08-22 2016-04-04 株式会社日立産機システム プログラマブルロジックコントローラ

Also Published As

Publication number Publication date
WO2022249713A1 (ja) 2022-12-01

Similar Documents

Publication Publication Date Title
JP2019053459A (ja) 制御装置および制御方法
JP6299064B2 (ja) 制御装置、制御方法、およびプログラム
JP2019061467A (ja) サポート装置およびサポートプログラム
JP6362821B2 (ja) 制御装置、制御方法および命令セット
JP6874706B2 (ja) アプリケーションプログラムを生成する方法、装置、プログラム
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
JP7327225B2 (ja) ロボット制御システムおよび制御方法
WO2020246097A1 (ja) サポート装置およびサポートプログラム
WO2022249713A1 (ja) 制御システム、システムプログラムおよびデバッグ方法
JP7077848B2 (ja) 制御装置
JP2002507303A (ja) プログラミング装置
EP3457239A1 (en) Control device and control method
JP7247808B2 (ja) 制御システム、解析方法およびプログラム
JP7375632B2 (ja) 制御システムおよびサポート装置
JP7151161B2 (ja) 制御システム、サポート装置、サポートプログラム
JP2002073120A (ja) プログラマブルコントローラのプログラミング装置とその方法
JP2008033572A (ja) 画面作成装置、画面作成プログラムおよびそれを記録した記録媒体
JP2020144594A (ja) 制御装置およびソフトウェアのデプロイ方法
JP7241982B1 (ja) 画像生成プログラム、画像生成装置、プログラマブルコントローラシステム及び画像生成方法
WO2022168336A1 (ja) 制御装置、制御方法および制御プログラム
WO2021065033A1 (ja) プログラム開発装置およびプログラム開発装置を実現するためのプログラム
JP7234810B2 (ja) サポート装置およびサポートプログラム
JP2023151876A (ja) 制御装置、制御方法、開発支援装置、及びプログラム
US20220291903A1 (en) Information processing device, recording medium, and support system
van der Linden et al. Towards evolvable state machines for automation systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240315