JP2023034569A - コントローラ及びプログラムのファイル構造 - Google Patents
コントローラ及びプログラムのファイル構造 Download PDFInfo
- Publication number
- JP2023034569A JP2023034569A JP2021140871A JP2021140871A JP2023034569A JP 2023034569 A JP2023034569 A JP 2023034569A JP 2021140871 A JP2021140871 A JP 2021140871A JP 2021140871 A JP2021140871 A JP 2021140871A JP 2023034569 A JP2023034569 A JP 2023034569A
- Authority
- JP
- Japan
- Prior art keywords
- program
- variable
- local
- controller
- held
- 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
Links
- 230000006870 function Effects 0.000 abstract description 10
- 238000003466 welding Methods 0.000 description 17
- 238000000034 method Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000007257 malfunction Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
【課題】複数のプログラム間でローカル変数の値の受け渡しを簡便に行えるコントローラを提供する。【解決手段】ロボット制御システム110のコントローラ20には、1または複数の機器が接続されている。コントローラ20には、1または複数の機器との間でデータまたは命令の受け渡しを行うための複数のプログラム200が保存されている。複数のプログラム200には、ローカル変数LAを参照して所定の関数を実行するプログラムAとローカル変数LBを参照して所定の関数を実行するプログラムBとが少なくとも含まれる。コントローラ20は、プログラムAに保持されたローカル変数LAの値をプログラムBに保持されたローカル変数LBに直接代入可能に構成されている。【選択図】図4
Description
本開示は、コントローラ及びプログラムのファイル構造に関する。
従来、産業用ロボット(以下、単にロボットと言う)を含むシステム(以下、ロボットシステムと言う)の制御において、種々のコンピュータプログラム(以下、単にプログラムと言う)が使用されている。通常、プログラムは、C言語等の高級プログラミング言語で記述され、システム内のコンパイラで変換された後、システム内の各種機器で利用可能となる。また、ロボットシステムにおいては、実行対象となるプログラムが記載されたファイルを指定してプログラムの実行を開始する方法が一般的に採用されている。
また、複数のプログラムを実行させるにあたって、共通した変数(例えば、グローバル変数)は、プログラムの外部で定義され、複数のプログラムで利用される。一方、それぞれのプログラムの内部で独自に定義された変数(例えば、ローカル変数)は、定義されたプログラムの関数の内部でしか使用できない。なお、通常、グローバル変数は、ロボットシステムのコントローラに設けられた記憶領域に保存される。
しかし、ロボットシステムで使用されるプログラムの数が多くなると、共通した変数を使用するプログラムも多くなる。この場合、グローバル変数の数が増えてしまうため、その編集管理作業、つまり、内容や数値範囲の変更、削除、あるいはグローバル変数自体の追加が増加してしまう。
このような課題に対して、例えば、特許文献1には、変数名と、その範囲である変数値、また変数値の保存先アドレスと、のそれぞれの記憶領域を設けた構成が開示されている。指定された変数名及び変数値を登録する場合に、既に同じ変数名がある場合は、当該変数名に対応する変数値を保存先アドレスの記憶領域からサーチし、当該変数値を指定された値に書き換える。同じ変数名が無い場合は、前述した記憶領域のそれぞれに、新たに変数名と変数値とアドレスとを書き込んで保存する。
また、特許文献2には、プログラムで使用されているローカル変数ワークシートとグローバル変数ワークシートとが予め作成、保存されたプログラム編集装置が開示されている。プログラムを分割する場合、複数のプログラム構成要素で共用されているローカル変数をグローバル変数ワークシートに追加し、当該ローカル変数は、ローカル変数ワークシートに外部参照変数として登録される。また、プログラムを結合する場合、結合前のプログラム構成要素でのみ外部参照変数として共用されていたグローバル変数をローカル変数に変えて、結合後のローカル変数ワークシートに登録するとともに、グローバル変数ワークシートから削除する。
ところで、近年、ロボットシステムに接続される機器、例えば、センサやPC(Personal Computer)の数が大幅に増加してきている。このことに伴い、ロボットシステム内で使用されるプログラムの数やプログラムのファイル間でのデータのやり取りが大幅に増加してきている。このため、複数のプログラムにおいて、共通に使用される変数の種類や数も増加している。
一方、例えば、特許文献2に開示された構成では、複数のプログラムで共通に使用される変数は、一旦、ローカル変数からグローバル変数に定義し直して使用する必要がある。
しかし、コントローラに保存されたグローバル変数のみを用いて、共通に使用される変数、ひいては、複数のプログラムの編集管理を行うことは煩雑であり、また、プログラム間での変数の値の受け渡しが難しくなるおそれがあった。
本開示はかかる点に鑑みてなされたもので、その目的は、複数のプログラム間でローカル変数の値の受け渡しを簡便に行えるコントローラ及びプログラムのファイル構造を提供することにある。
上記目的を達成するため、本開示に係るコントローラは、制御システムが備えるコントローラであって、前記コントローラには、1または複数の機器が接続されるとともに、前記1または複数の機器との間でデータまたは命令の受け渡しを行うための複数のプログラムが保存されており、複数の前記プログラムには、ローカル変数を参照して所定の関数を実行する第1プログラム及び第2プログラムが少なくとも含まれ、前記コントローラは、前記第1プログラムに保持されたローカル変数の値を前記第2プログラムに保持されたローカル変数に直接代入可能に、または、前記第2プログラムに保持されたローカル変数の値を前記第1プログラムに保持されたローカル変数に直接代入可能に構成されていることを特徴とする。
本開示に係るファイル構造は、コントローラに1または複数の機器が接続された制御システムで実行されるプログラムのファイル構造であって、前記プログラムは、変数テーブル部を含んでおり、前記変数テーブル部は、前記プログラムに記述された関数の内部で定義されるローカル変数を少なくとも1つ含んでおり、前記ローカル変数は、変数名と変数情報とが互いに関連付けられた形式で前記変数テーブル部に保存されており、前記変数情報には、少なくとも前記ローカル変数の型情報が含まれることを特徴とする。
本開示によれば、複数のプログラム間でローカル変数の値の受け渡しを簡便に行うことができる。このことにより、プログラムの編集管理作業を高速化でき、また、作業者にとっての利便性が向上する。
以下、本開示の実施形態を図面に基づいて説明する。なお、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本開示、その適用物或いはその用途を制限することを意図するものではない。
(実施形態1)
[ロボットシステムの構成]
図1は、本実施形態に係るロボットシステムの概略構成図を示し、図2は、ロボットシステムの機能ブロック図を示す。
[ロボットシステムの構成]
図1は、本実施形態に係るロボットシステムの概略構成図を示し、図2は、ロボットシステムの機能ブロック図を示す。
図1に示すように、ロボットシステム100は、ロボット10とロボット制御システム110と溶接制御部40とを備えている。
ロボット10は、アーク溶接に用いられる溶接ロボットである、ロボット10は、複数のサーボモータ12を有する多軸の多関節型ロボット10で構成されている。ロボットアーム11の先端部には、溶接用のトーチ13や図示しないワイヤ送給装置が取り付けられている。なお、関節軸数や水平多関節型、垂直多関節型等のロボット10の構成は、用途に合わせて適宜選択すればよい。また、ロボット10は、溶接ロボットに限られず、例えば、物品の搬送ロボットであってもよい。
なお、図1に示す例では、ロボット10は1台であるが、ロボットシステム100は複数台のロボット10を備えていてもよい。その場合、すべてのロボット10に対して、ロボット制御システム110と溶接制御部40とが共通していてもよい。また、それぞれのロボット10に対して、ロボット制御システム110と溶接制御部40とが個別に設けられていてもよい。
ロボット制御システム110は、コントローラ20とティーチングペンダント30とを有している。なお、ロボット制御システム110の外部に設けられたサーバー70(図2参照)がロボット制御システム110に含まれていてもよい。また、ロボット10が溶接ロボット以外の場合、ロボットシステム100から溶接制御部40は省略されうる。
コントローラ20は、ロボット10に接続され、ロボット10の動作、具体的には、関節軸を駆動するサーボモータ12の動作を制御する。
図2に示すように、コントローラ20には、ティーチングペンダント30、溶接制御部40、外部機器60、サーバー70、外部ロボット80及び外部軸90がそれぞれ接続されている。コントローラ20は、接続された各種機器等との間でデータまたは命令の受け渡しをそれぞれ行う。ここで、外部機器60は、例えば、各種センサや警報ランプ等である。また、外部機器60が、PLC(Programmable Logic Controller)やPCであってもよい。
なお、外部ロボット80とは、図2に示すコントローラ20とは別のコントローラ(図示せず)に接続されたロボットであり、別のコントローラによって動作が制御される。複数のロボット20を強調して動作させる場合、コントローラ20を外部ロボット80に接続することがある。
外部軸90とは、ロボットシステム100におけるロボット10以外の駆動機構である。例えば、溶接対象となるワーク(図示せず)を保持し、所定の方向に移動させるステージ(図示せず)等が該当する。コントローラ20が外部軸90であるステージの動作を制御することで、トーチ13とワークとの相対的な位置関係を正確に決定できる。
ティーチングペンダント30は、作業者がロボット10の動作や溶接条件などを定義したり、コントローラ20から送信されたロボット10の情報を表示したりするための装置である。ティーチングペンダント30とコントローラ20とは、有線通信または無線通信のいずれかで接続されている。
ティーチングペンダント30は、ロボット10の動作内容を作業者が入力するための入力部31と、当該入力内容やコントローラ20から送信されたロボット10の情報等を表示するための表示部32と、を有している。図2に示すように、入力部31はキーボード等のハードキーでもよい。また、表示部32は液晶ディスプレイでもよい。なお、表示部32がタッチパネルである場合は、入力部31が表示部32に組み込まれてもよい。また、ティーチングペンダント30に情報処理部としてプロセッサ(図示せず)が搭載されていてもよい。
溶接制御部40は、コントローラ20の処理に対応して制御信号を出力し、ロボット10に取り付けられた溶接用のトーチ13やワイヤ送給装置(図示せず)の動作を制御する。なお、溶接制御部40は、コントローラ20と一体に構成されていてもよい。
コントローラ20は、有線通信または無線通信のいずれかでサーバー70に接続されている。サーバー70は、コントローラ20に送信されたデータ及びコントローラ20の内部で生成されたデータをバックアップして保存する。サーバー70は、コントローラ20のプログラム保存領域25に保存されたプログラムや記憶領域24に保存されたデータ、例えば、グローバル変数のテーブル等をバックアップして保存してもよい。また、サーバー70は、データの一部を表示可能に構成されていてもよい。
図2に示すように、コントローラ20は、CPU(情報処理部)21と入出力制御部22と電源制御部23と記憶領域24とプログラム保存領域25と通信インターフェイス部26とを有している。つまり、コントローラ20は、一種のコンピュータシステムである。コントローラ20は、電源50から電源制御部23に供給された電力によって動作する。
CPU(Central Processing Unit)21は、ティーチングペンダント30から入力された指令や、教示プログラムまたは所定の制御シーケンスに対応して、ロボット制御システム110全体の制御を行うプロセッサである。なお、教示プログラムは、プログラム保存領域25に保存されている。
また、CPU21は、ロボット10のサーボモータ12のドライバ(図示せず)より送信された検出角度に基づいて、プログラム保存領域25に記憶されているサーボモータ12の特性やロボット10のアーム長等の値と順運動学演算とを用いて、直交座標系におけるロボット10のトーチ13の先端位置を演算する。
なお、複数個のCPU21がコントローラ20に搭載されていてもよい。複数のCPU21には、例えば、ロボット制御システム110の全体管理を行うメインCPUやサーボモータ12の駆動管理を行うサーボCPUが含まれる。また、溶接制御部40を制御する溶接CPUや入出力制御部22を制御する入出力CPUが含まれることがある。
1個のCPU21に異常が生じた場合、残りのCPU21でバックアップ動作を行うことができる。また、ロボット制御システム110全体の制御を行うCPU21と、トーチ13の先端位置を演算するCPU21とが、別個に設けられていてもよい。
入出力制御部22は、CPU21の処理に対応して、コントローラ20に接続された各種機器等の情報取得及び送信処理を行う。
記憶領域24は、ロボット制御システム110で使用される各種プログラムで共通に使用されるデータを保存する。例えば、記憶領域24は、サーボモータ12の特性値やロボット10のアーム長等のロボット10の動作に関する値等を保存する。後で述べるグローバル変数も記憶領域24に保存される。なお、記憶領域24にそれ以外のデータが保存されていてもよい。記憶領域24は、コントローラ20の内部メモリ、例えば、ROM(Read Only Memory)またはRAM(Random Access Memory)で構成される。記憶領域24は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)等で構成されてもよい。
プログラム保存領域25は、前述の教示プログラムを始めとしたロボット制御システム110で使用される各種プログラムを保存する。プログラム保存領域25は、前述したコントローラ20の内部メモリで構成されてもよい。また、プログラム保存領域25は、コントローラ20に接続されたSDカード等の外部メモリであってもよい。なお、コントローラ20の内部の同じメモリに前述した記憶領域24とプログラム保存領域25とが存在していてもよい。
通信インターフェイス部26は、電源50が投入されてサーバー70との接続が確立された後で、コントローラ20に送信されたデータ及びコントローラ20の内部で生成されたデータを一定のタイミングでサーバー70に対して送信する。なお、通信インターフェイス部26は、有線通信または無線通信のいずれかでティーチングペンダント30に接続されていてもよい。
[プログラム間でのローカル変数の値の受け渡し手順]
図3は、プログラムのファイル構造を模式的に示す。図4は、プログラム間でのローカル変数の値の受け渡しを模式的に示す。図5は、プログラム間でのローカル変数の値の受け渡し手順を示すフローチャートである。図6は、比較のためのプログラム間でのローカル変数の値の受け渡しを模式的に示す。
図3は、プログラムのファイル構造を模式的に示す。図4は、プログラム間でのローカル変数の値の受け渡しを模式的に示す。図5は、プログラム間でのローカル変数の値の受け渡し手順を示すフローチャートである。図6は、比較のためのプログラム間でのローカル変数の値の受け渡しを模式的に示す。
ロボット制御システム110で使用される各種プログラムは、所定のプログラミング言語、例えば、C言語やC++言語やJava(登録商標)等で記述されている。また、各プログラムに対し、宣言された変数を代入、または参照することで、プログラム上でデータの識別や管理を行うことができる。また、プログラムにおいて、当該変数に対応付けられた関数を実行することができる。
変数は、そのスコープ(適用範囲)の違いによって、ローカル変数とグローバル変数とに分けられる。ローカル変数とは、プログラムの内部で定義された変数であり、当該プログラムの内部でしか通常は使用できない。グローバル変数とは、プログラムの外部で定義された変数であり、異なるプログラムでも共通に使用可能である。なお、厳密に言えば、プログラミング言語によっては、ローカル変数の定義は異なるが、本願明細書では、前述した通り、ローカル変数を定義する。
通常、産業用ロボットの駆動制御システム、例えば、図1に示すようなロボット制御システム110では、コントローラ20の記憶領域24に保存されたグローバル変数を異なるプログラムに共通に適用して、データ管理を簡素化している。なお、この場合も、各々のプログラムにおいて、ローカル変数が定義、使用されることは妨げられない。
しかし、ロボットシステム100が複雑化するのに伴い、コントローラ20に接続される機器数は増えてきている。このことに伴い、ロボット制御システム110において使用されるプログラムの数が増えてきている。また、各々のプログラム間で使用するデータのやり取りが増えてきている。このため、グローバル変数のみで各プログラムの編集管理を行うことが難しくなってきている。
そこで、本願発明者等は、ロボット制御システム110において使用されるプログラム200のファイル構造を図3に示すように設定した。また、図4に示すように、一のプログラムで定義されたローカル変数の値を、別のプログラムで直接使用できるようにした。これらについてさらに説明する。
本願明細書に示すプログラム200は、図3に示すように、1つのプログラムファイルにヘッダ部210と、命令レコード部220と、変数テーブル部230と、を少なくとも含んだ構造となっている。ただし、プログラム200に含まれるデータの数や種類は特にこれに限定されない。
ヘッダ部210は、プログラム200において使用される変数や定数、関数、その他予め宣言する必要があるデータや命令の宣言を記述したテキストファイルまたはバイナリファイルの格納領域である。
命令レコード部220は、プログラム200の実行内容を記述したテキストファイルまたはバイナリファイルであり、例えば、ソースコードとして記述されている。
変数テーブル部230は、プログラム200で使用されるローカル変数が、テーブル形式で保持されたデータである。テーブル形式については、実施形態2で述べる。
また、本実施形態では、変数テーブル部230に含まれるローカル変数が1つである場合を例に取って説明するが、通常は、1つのプログラム200には、複数個のローカル変数が定義される。その場合、ロボット10の位置情報等に関する変数である等、複数種類のローカル変数が存在することが多い。また、ローカル変数の型は、整数型、浮動点小数型、文字列型、論理型等、目的に応じて多様である。変数テーブル部230に保存される場合、ローカル変数は、変数名と、その範囲、さらに変数情報(ローカル変数の種類や型等)とが互いに関連付けられた形式で保存される。なお、以降の説明において、「ローカル変数の値」とは、指定されたローカル変数に付与されたデータの範囲を言う。例えば、対象となるローカル変数に1または複数の数値が付与されていれば、ローカル変数の値は、付与された1または複数の数値である。対象となるローカル変数に文字列が付与されていれば、ローカル変数の値は、付与された文字列である。
このようにプログラム200のファイル構造を規定した場合、複数のプログラム200の間でローカル変数の値を直接受け渡しすることが可能となる。
従来、異なるプログラム間でローカル変数の値を共通して使用したい場合は、コントローラ20に保存されるグローバル変数を使用するか、または、グローバル変数を介してローカル変数の値を書き換える必要があった。
つまり、図6に示すように、プログラムA(第1プログラム)が保持するローカル変数LAの値(=1)をコントローラ20が保持するグローバル変数GAに代入する。プログラムAの命令レコード部220において、命令実行情報として記述した上で、この代入が実行される。次に、プログラムB(第2プログラム)のローカル変数LBに対し、グローバル変数GAの値を代入する。プログラムBの命令レコード部220において、命令実行情報として記述した上で、この代入が実行される。
このようにグローバル変数GAの値の書き換えを経て、プログラムBのローカル変数LBの値をプログラムAのローカル変数LAの値と同じにすることができる。つまり、異なるプログラム間でローカル変数の値を共通化することができる。なお、図6に示す処理は、コントローラ20のCPU21上でプログラムA及びプログラムBをそれぞれ実行して行われる。
しかし、図6に示す処理は、CPU21の負荷が高くなるとともに時間を要する。また、数値を代入可能なグローバル変数が存在しない場合は、新たなグローバル変数を定義する必要がある。いずれの場合も、ロボット制御システム110の利用者にとっては不便であった。また、グローバル変数を介することで、異なるプログラム間で変数の指定間違いが起こるおそれがあった。
そこで、図3に示すように、プログラム200に変数テーブル部230を設けるようにする。さらに、図4に示すように、プログラムAにおけるローカル変数LAの値をプログラムBにおけるローカル変数LBに直接代入する。つまり、記憶領域24に保存されたグローバル変数GAに関しては何らの操作を必要としない。なお、図4に示す処理は、コントローラ20のCPU21上でプログラムAを実行して行われる。また、この場合、ローカル変数LAの型及び種類、つまり変数情報とローカル変数LBの変数情報とは一致している必要がある。
なお、図4に示す処理は、実際には図5に示す手順に則って行われる。また、前述したように、図5に示すフローチャートの各ステップは、コントローラ20のCPU21により実行される。
まず、プログラムAを起動して、所定の命令を実行させる(ステップS1)。ここで、命令の具体的な内容は、「プログラムAにおけるローカル変数LAの値をプログラムBにおけるローカル変数LBに直接代入」することである。
次に、プログラム保存領域25にプログラムBが存在するか否かが判断される(ステップS2)。ステップS2の判断結果が否定的、すなわち、プログラム保存領域25にプログラムBが存在しなければ、コントローラ20は作業者またはロボット制御システム110の操作者に対して、エラーを通知し、ロボット制御システム110を一旦停止させる(ステップS3)。
なお、本願明細書において、ロボットシステムの異常として、「エラー」と「ワーニング」と「アラーム」とが設定されている。エラーとは、ロボット制御システム110を一旦停止させる必要がある程度の異常を言う。ワーニングは、ロボット制御システム110を停止させるまでには至らない警告である。したがって、ワーニングは、作業者にコントローラ20または機器が正常時と異なる状態であることを注意喚起するために報知されるにとどまる。
一方、アラームは、ロボット制御システム110全体を停止させる必要がある異常を言う。よって、アラームが発生した場合、コントローラ20や各機器に電力を供給する電源がシャットダウンされる。また、シャットダウン後は、作業者が再起動するまでロボット制御システム110、ひいてはロボットシステム100は動作しない。
ステップS2の判断結果が肯定的、すなわち、プログラム保存領域25にプログラムBが存在していれば、次に、コントローラ20は、プログラムAにローカル変数LAが定義され存在しているか否かを判断する(ステップS4)。ステップS4の判断結果が否定的、すなわち、プログラムAにローカル変数LAが存在しなければ、ステップS3と同様に、コントローラ20はエラーを通知し、ロボット制御システム110を一旦停止させる(ステップS5)。
ステップS4の判断結果が肯定的、すなわち、プログラムAにローカル変数LAが存在していれば、次に、コントローラ20は、プログラムBにローカル変数LBが定義され存在しているか否かを判断する(ステップS6)。ステップS6の判断結果が否定的、すなわち、プログラムBにローカル変数LBが存在しなければ、ステップS3と同様に、コントローラ20はエラーを通知し、ロボット制御システム110を一旦停止させる(ステップS7)。
ステップS6の判断結果が肯定的、すなわち、プログラムBにローカル変数LBが存在していれば、コントローラ20は、プログラムAにおけるローカル変数LAの値をプログラムBにおけるローカル変数LBに直接代入し(ステップS8)、一連の処理が完了する。なお、ステップS8の終了後、ローカル変数LBに代入された値は、そのまま保持される。
なお、外部機器60としてPCが接続されている場合、PCからプログラムAに対し、ステップS1に示す命令を書き込んで実行してもよい。PCからの入力内容は、コントローラ20のCPU21を介して実行される。
また、図5に示すように、プログラムBの存在や、プログラムAにおけるローカル変数LAの存在や、プログラムBにおけるローカル変数LBの存在を順次確認しながら処理を進めている。このようにすることで、プログラムAからプログラムBへローカル変数の値を確実に受け渡すことができる。このため、ローカル変数LBの値が書き換えられた後のプログラムBが誤動作して、ロボット制御システム110やロボットシステム100に、エラーやアラームを発生させることが無い。つまり、プログラムBの書き換え後も、安全にロボットシステム100やロボット制御システム110を動作させることができる。
なお、本実施形態では、プログラムAにおけるローカル変数LAの値をプログラムBにおけるローカル変数LBに直接代入する例を示したが、その逆の処理を行うことも可能である。つまり、コントローラ20、具体的には、CPU21は、プログラムBにおけるローカル変数LBの値をプログラムAにおけるローカル変数LAに直接代入可能に構成されていてもよい。
[効果等]
以上説明したように、本実施形態に係るコントローラ20は、ロボット制御システム110に備わっている。
以上説明したように、本実施形態に係るコントローラ20は、ロボット制御システム110に備わっている。
コントローラ20には、複数の機器が接続されている。また、コントローラ20のプログラム保存領域25には、複数の機器との間でデータまたは命令の受け渡しを行うための複数のプログラム200が保存されている。なお、コントローラ20に接続される機器は1台であってもよい。
複数のプログラム200には、ローカル変数LAを参照して所定の関数を実行するプログラムA(第1プログラム)とローカル変数LBを参照して所定の関数を実行するプログラムB(第2プログラム)とが少なくとも含まれる。
コントローラ20は、プログラムAに保持されたローカル変数LAの値をプログラムBに保持されたローカル変数LBに直接代入可能に構成されている。また、コントローラ20は、プログラムBに保持されたローカル変数LBの値をプログラムAに保持されたローカル変数LAに直接代入可能に構成されている。
本実施形態によれば、コントローラ20の記憶領域24に保存されたグローバル変数GAを経由すること無く、プログラムAで使用されるローカル変数LAの値をプログラムBで使用されるローカル変数LBに直接受け渡すことができる。つまり、それぞれ異なるプログラム200で定義されたローカル変数LAの値とローカル変数LBの値とを共通化できる。このことにより、プログラム200の編集管理作業を高速化できる。また、ロボット制御システム110の作業者にとっての利便性が向上する。
また、本実施形態によれば、ローカル変数LBの値の書き換え作業用のバッファメモリを確保する必要も無く、コントローラ20への負荷を軽減できる。
また、グローバル変数GAを経由しないため、ロボット制御システム110で使用される他のプログラム200への影響も最小限にできる。つまり、安全にロボット制御システム110やロボットシステム100を動作させることができる。また、ロボット制御システム110及びロボットシステム100のダウンタイムを削減できる。
なお、ロボット制御システム110で使用されるプログラム200をプログラムAからプログラムBに切り替える場合も、切り替えるタイミングで、ローカル変数LBの値を書き換えることが可能である。プログラムAとプログラムBとが同時に実行される場合も、実行前のタイミングで、ローカル変数LBの値を書き換えることが可能である。
ローカル変数LAの値をローカル変数LBに代入するにあたっては、プログラムAに保持されたローカル変数LAの変数情報と、プログラムBに保持されたローカル変数LBの変数情報と、が一致していることが必要となる。
本実施形態に係るプログラム200は、変数テーブル部230を少なくとも含んだファイル構造を有している。
変数テーブル部230は、プログラム200に記述された関数の内部で定義されるローカル変数を少なくとも1つ含んでいる。
ローカル変数は、変数名と変数情報とが互いに関連付けられた形式で変数テーブル部230に保存されている。
変数情報には、少なくともローカル変数の型情報が含まれている。
プログラム200のファイル構造をこのように規定することで、異なるプログラム200の間でローカル変数の値を直接受け渡して、それぞれの値を共通化できる。このことにより、プログラム200の編集管理作業を高速化できる。また、ロボット制御システム110の作業者にとっての利便性が向上する。
(実施形態2)
図7Aは、本実施形態に係る第1プログラムの変数テーブル部の概要を示し、図7Bは、第2プログラムの変数テーブル部の概要を示す。図8は、プログラム間でのローカル変数の値の受け渡し手順のフローチャートを示す。
図7Aは、本実施形態に係る第1プログラムの変数テーブル部の概要を示し、図7Bは、第2プログラムの変数テーブル部の概要を示す。図8は、プログラム間でのローカル変数の値の受け渡し手順のフローチャートを示す。
前述したように、変数テーブル部230に保持されるローカル変数は、通常、複数個存在する。これらを管理するにあたって、図7A,7Bに示すように、予め、他のプログラムとの間で共用される可能性のある複数のローカル変数をテーブル形式で変数テーブル部230に保持するのが好ましい場合がある。ここで言うテーブル形式とは、複数のローカル変数が1つのテーブル(以下、変数テーブルとも言う)にまとめられた形で変数テーブル部230に保存されていることを言う。
例えば、図7Aに示すように、親プログラム(第1プログラム)の変数テーブル部230に含まれる変数テーブル(Table01~03)には、それぞれ3つのローカル変数が保持されている。同様に、図7Bに示すように、子プログラム(第2プログラム)の変数テーブル部230に含まれる変数テーブル(Table01~03)にも、それぞれ3つのローカル変数が保持されている。なお、各テーブルに保持されるローカル変数の数は、特に限定されない。ただし、データの受け渡し対象となるテーブル間では、ローカル変数の数は同じであることが好ましい。
また、各テーブルにおいて、ローカル変数に通し番号(以下、単に番号と言う)が付与されている。複数のプログラム200の間で、同じ番号が付与されたローカル変数は、その種類やローカル変数の型や種類が共通であることが好ましい。このようにすることで、異なるプログラム200の間で複数のローカル変数の値を一括して受け渡すことができる。以下、さらに説明する。
1つのプログラム200を修正して新たに保存する場合や1つのプログラム200をベースにして複数の異なるプログラム200を作成する場合、多くのローカル変数が共通していることが多い。また、これ以外にも、複数のローカル変数の値を異なるプログラム200の間で共通して使用したい場合もある。
しかし、通常は、図4,5に示すように、ローカル変数の型や種類、つまり、変数情報が一致した場合のみ、異なるプログラム200の間でローカル変数の値の受け渡しが可能となるのが好ましい。変数情報が異なるローカル変数を受け取った側のプログラム200が正しく動作しないからである。
したがって、複数のローカル変数の値を受け渡す場合、対象となるローカル変数毎に変数情報の一致を確認する必要がある。受け渡し対象となるローカル変数の数が増えてくると、この作業は手間がかかり、時間を要することがある。
一方、本実施形態によれば、複数のローカル変数をテーブル形式で変数テーブルにまとめ、変数テーブル部230に保存しておくことで、複数のローカル変数の値を一括で受け渡せる。図8を用いてさらに説明する。なお、図8に示すフローは、親プログラムから子プログラムへの変数テーブル、さらに言うとローカル変数の値の受け渡しに関する。ただし、子プログラムから親プログラムへの変数テーブル(ローカル変数の値)の受け渡しも同様のフローに則って処理されることは言うまでもない。
図8に示すステップS11~S13は、図5に示すステップS1~S3と同様であるため、説明を省略する。
ステップS14では、自身の変数テーブル、この場合は、親プログラムの変数テーブルが正常であるか否かを判断する。ステップS14の判断は、コントローラ20のCPU21で実行される。
ステップS14での判断結果が肯定的な場合は、ステップS16に進む。一方、ステップS14での判断結果が否定的な場合は、コントローラ20はエラーを通知し、ロボット制御システム110を一旦停止させる(ステップS15)。なお、ステップS14での判断は、対象となる変数テーブルにローカル変数が含まれているか否か、また、ローカル変数の変数情報がテーブルの番号に対応しているか否か等で判断される。いずれかが否の場合に否定的と判断される。
ステップS16では、相手先の変数テーブル、この場合は、子プログラムの変数テーブルが正常であるか否かを判断する。ステップS16の判断も、コントローラ20のCPU21で実行される。
ステップS16での判断結果が肯定的な場合は、ステップS18に進む。一方、ステップS16での判断結果が否定的な場合は、コントローラ20はエラーを通知し、ロボット制御システム110を一旦停止させる(ステップS17)。なお、ステップS16の判断基準もステップS14の判断基準と同様である。
ステップS18では、コントローラ20は、親プログラムにおけるテーブルの値を子プログラムにおけるテーブルに直接代入し、一連の処理が完了する。
例えば、図7Aに示す変数テーブル(Table02)を、図7Bに示す変数テーブル(Table01)に代入する場合、以下の処理が一括して行われる。Table02に保持されたローカル変数LR:011の値が、Table01のローカル変数LL:001に代入される。同時に、Table02に保持されたローカル変数LR:012の値が、Table01のローカル変数LL:002に代入される。同様に、Table02に保持されたローカル変数LR:013の値が、Table01のローカル変数LL:003に代入される。
一方、子プログラムから親プログラムへローカル変数の値を受け渡す場合は、例えば、以下のように行われる。図7Bに示す変数テーブル(Table02)を、図7Aに示す変数テーブル(Table03)に一括して直接代入する。Table02に保持されたローカル変数LL:004の値が、Table03のローカル変数LL:021に代入される。同時に、Table02に保持されたローカル変数LL:005の値が、Table03のローカル変数LL:022に代入される。同様に、Table02に保持されたローカル変数LL:006の値が、Table03のローカル変数LL:023に代入される。
なお、ステップS18の終了後、変数テーブルに代入されたローカル変数のそれぞれの値は、そのまま保持される。また、外部機器60としてPCが接続されている場合、PCから親プログラムに対し、ステップS11に示す命令を書き込んで実行してもよい。PCからの入力内容は、コントローラ20のCPU21を介して実行される。
以上説明したように、本実施形態では、親プログラム(第1プログラム)及び子プログラム(第2プログラム)は、複数のローカル変数がテーブル形式で保持された変数テーブルをそれぞれ有している。
コントローラ20は、親プログラムに保持された変数テーブルに含まれる複数のローカル変数の値を、子プログラムに保持された変数テーブルに含まれる複数のローカル変数に直接代入可能に構成されている。また、コントローラ20は、子プログラムに保持された変数テーブルに含まれる複数のローカル変数の値を、親プログラムに保持された変数テーブルに含まれる複数のローカル変数に直接代入可能に構成されている。
このようにすることで、親プログラムから子プログラムへ、あるいは子プログラムから親プログラムへ所定の変数テーブル毎でローカル変数の値を確実に受け渡すことができる。このことにより、複数個、複数種類のローカル変数の値を異なるプログラム200の間で一括して受け渡せるため、ローカル変数の値の受け渡しに関する処理速度及びプログラム200の編集管理作業をさらに高速化できる。また、作業者にとっての利便性が向上する。
親プログラムの変数テーブル(ローカル変数の値)を子プログラムの変数テーブル(ローカル変数の値)に代入するにあたっては、それぞれの変数テーブルに含まれる複数のローカル変数の変数情報が互いに一致していることが好ましい。また、このことを簡便に整理するために、親プログラム及び子プログラムのそれぞれにおいて、変数テーブル部230は、複数のローカル変数が所定の順番で配列された変数テーブルを少なくとも1つ有しているのが好ましい。
受け渡し対象となる変数テーブル間で、それぞれに含まれるローカル変数の変数情報を予め共通にしておくことで、変数テーブル毎にローカル変数の値を受け渡すことが容易となる。また、例えば、ローカル変数の型等にとらわれず、受け渡し対象となるローカル変数を自由に選択できる。
また、ローカル変数の値を書き換えられたプログラム200が誤動作して、ロボット制御システム110やロボットシステム100に、エラーやアラームを発生させることが無い。つまり、プログラム200の書き換え後も、安全にロボットシステム100やロボット制御システム110を動作させることができる。また、ロボット制御システム110及びロボットシステム100のダウンタイムを削減できる。
なお、本開示のコントローラ20やプログラム200のファイル構造、またローカル変数の値や変数テーブルの受け渡し方法は、ロボットシステム100やロボット制御システム110への適用に特に限定されない。コントローラ20に複数の機器が接続されて使用される別の制御システムにおいて適用されてもよい。その場合、当該別の制御システムにおいて、複数のプログラム200が使用されることは言うまでもない。
本開示のコントローラは、異なるプログラムの間でローカル変数の値を簡便に受け渡すことができるため、有用である。
10 ロボット
11 ロボットアーム
12 サーボモータ
13 トーチ
20 コントローラ
21 CPU(情報処理部)
24 記憶領域
25 プログラム保存領域
30 ティーチングペンダント
40 溶接制御部
50 電源
60 外部機器
70 サーバー
80 外部ロボット
90 外部軸
100 ロボットシステム
110 ロボット制御システム
11 ロボットアーム
12 サーボモータ
13 トーチ
20 コントローラ
21 CPU(情報処理部)
24 記憶領域
25 プログラム保存領域
30 ティーチングペンダント
40 溶接制御部
50 電源
60 外部機器
70 サーバー
80 外部ロボット
90 外部軸
100 ロボットシステム
110 ロボット制御システム
Claims (8)
- 制御システムが備えるコントローラであって、
前記コントローラには、1または複数の機器が接続されるとともに、前記1または複数の機器との間でデータまたは命令の受け渡しを行うための複数のプログラムが保存されており、
複数の前記プログラムには、ローカル変数を参照して所定の関数を実行する第1プログラム及び第2プログラムが少なくとも含まれ、
前記コントローラは、前記第1プログラムに保持されたローカル変数の値を前記第2プログラムに保持されたローカル変数に直接代入可能に、または、前記第2プログラムに保持されたローカル変数の値を前記第1プログラムに保持されたローカル変数に直接代入可能に構成されていることを特徴とするコントローラ。 - 請求項1に記載のコントローラにおいて、
前記第1プログラムに保持された前記ローカル変数の変数情報と、前記第2プログラムに保持された前記ローカル変数の変数情報と、が一致している場合に、
前記コントローラは、前記第1プログラムに保持された前記ローカル変数の値を前記第2プログラムに保持された前記ローカル変数に直接代入可能に、または、前記第2プログラムに保持された前記ローカル変数の値を前記第1プログラムに保持された前記ローカル変数に直接代入可能に構成されていることを特徴とするコントローラ。 - 請求項1に記載のコントローラにおいて、
前記第1プログラム及び前記第2プログラムは、複数の前記ローカル変数がテーブル形式で保持された変数テーブルをそれぞれ有しており、
前記コントローラは、前記第1プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数の値を、前記第2プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数に直接代入可能に、または、前記第2プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数の値を、前記第1プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数に直接代入可能に構成されていることを特徴とするコントローラ。 - 請求項3に記載のコントローラにおいて、
前記第1プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数の変数情報と、前記第2プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数の変数情報と、がそれぞれ一致している場合に、
前記コントローラは、前記第1プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数の値を、前記第2プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数に直接代入可能に、または、前記第2プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数の値を、前記第1プログラムに保持された前記変数テーブルに含まれる複数の前記ローカル変数に直接代入可能に構成されていることを特徴とするコントローラ。 - コントローラに1または複数の機器が接続された制御システムで実行されるプログラムのファイル構造であって、
前記プログラムは、変数テーブル部を含んでおり、
前記変数テーブル部は、前記プログラムに記述された関数の内部で定義されるローカル変数を少なくとも1つ含んでおり、
前記ローカル変数は、変数名と変数情報とが互いに関連付けられた形式で前記変数テーブル部に保存されており、
前記変数情報には、少なくとも前記ローカル変数の型情報が含まれることを特徴とするプログラムのファイル構造。 - 請求項5に記載のファイル構造において、
前記変数テーブル部は、複数の前記ローカル変数が所定の順番で配列された変数テーブルを少なくとも1つ有していることを特徴とするファイル構造。 - 請求項6に記載のファイル構造において、
前記制御システムで使用される前記プログラムが複数存在する場合、複数の前記プログラムのそれぞれに含まれる前記変数テーブルでは、同じ順番に配列された前記ローカル変数の前記変数情報が互いに一致していることを特徴とするファイル構造。 - 請求項5ないし7のいずれか1項に記載のファイル構造において、
前記プログラムは、ヘッダ部と命令レコード部とをさらに含んでおり、
前記ヘッダ部は、前記プログラムで使用されるデータや命令の宣言が記述され、
前記命令レコード部は、前記プログラムの実行内容が記述されることを特徴とするファイル構造。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021140871A JP2023034569A (ja) | 2021-08-31 | 2021-08-31 | コントローラ及びプログラムのファイル構造 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021140871A JP2023034569A (ja) | 2021-08-31 | 2021-08-31 | コントローラ及びプログラムのファイル構造 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023034569A true JP2023034569A (ja) | 2023-03-13 |
Family
ID=85504414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021140871A Pending JP2023034569A (ja) | 2021-08-31 | 2021-08-31 | コントローラ及びプログラムのファイル構造 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023034569A (ja) |
-
2021
- 2021-08-31 JP JP2021140871A patent/JP2023034569A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100408277C (zh) | 机器人的待机位置复位程序生成装置 | |
US8688258B2 (en) | Method of controlling a machine tool | |
US11565414B2 (en) | Machining control system and machining system | |
JP2001088071A (ja) | ロボットの制御装置 | |
US20230251630A1 (en) | Numerical control system | |
US20230286169A1 (en) | Numerical control system and robot control method | |
JP2023034569A (ja) | コントローラ及びプログラムのファイル構造 | |
JP2013226602A (ja) | 産業用機械システム | |
JP7572542B2 (ja) | ロボット制御装置、ロボット制御システム及びロボット制御方法 | |
US12105496B2 (en) | Production system, host control device, control device, communication method, and program | |
US11454952B2 (en) | Numerical control apparatus | |
WO2022097268A1 (ja) | 工具搬送システム、工具搬送システムの制御方法、および、工具搬送システムの制御プログラム | |
JP7492006B2 (ja) | 数値制御システム | |
JPH02213905A (ja) | 入出力制御方式 | |
JP7495499B2 (ja) | 数値制御システム | |
WO2019207679A1 (ja) | モニタ支援装置、プログラマブルロジックコントローラ、モニタ支援方法およびモニタ支援プログラム | |
US20230273592A1 (en) | Controller | |
WO2024089884A1 (ja) | ロボットコントローラ、及び、アップデート前後の制御ソフトウェアの比較方法 | |
WO2024121975A1 (ja) | 表示装置、表示方法及びプログラム | |
CN117575452B (zh) | 基于节点动态寻址的路径规划方法、装置、设备和介质 | |
US20230405810A1 (en) | Modular robot control architecture | |
WO2022107817A1 (ja) | 制御装置 | |
US20230185272A1 (en) | Program analyzer and control system | |
US20060195207A1 (en) | Method for projecting and/or configuring a project | |
JPS62259738A (ja) | Nc工作機械工具自動供給装置 |