(57)【要約】      （修正有）【課題】モーション制御でのマルチタスクプログラミングにおいて、ユーザが変数の有効範囲を気にすることなくプログラミングすることが可能となり、ソフトウェアのバグを低減することのできるモーション制御構造を提供する。【解決手段】モーション制御構造１０は、マルチタスクプログラミングの可能なユーザプログラム作成部２と、ここで作成されたソースプログラムＡを目的コードＢに翻訳するコンパイラ５とを備えている。ユーザプログラム作成部２は、宣言されたタスクでのみ有効なグローバル変数（グローバルタスク変数）と、全てのタスク間で有効なグローバル変数（グローバルグローバル変数）とに拡張された仕様によりユーザがこれらのグローバル変数を定義可能に形成されており、また、コンパイラ５は各グローバル変数を仕分け可能に形成されている。【選択図】図１
2016177512.tif 000002
【特許請求の範囲】
【請求項１】
ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造であって、該モーション制御構造は、マルチタスクプログラミングの可能なユーザプログラム作成部と、該ユーザプログラム作成部で作成されたソースプログラムを目的コードに翻訳するコンパイラとを備えており、該ユーザプログラム作成部は、宣言されたタスクでのみ有効なグローバル変数（以下、「グローバルタスク変数」）と、全てのタスク間で有効なグローバル変数（以下、「グローバルグローバル変数」）とに拡張された仕様によりユーザがこれらのグローバル変数を定義可能に形成され、該コンパイラは、各グローバル変数を仕分け可能に形成されていることを特徴とする、モーション制御構造。
【請求項２】
ユーザは、本モーション制御構造が保有する変数領域の範囲内で前記グローバル変数を定義可能であることを特徴とする、請求項１に記載のモーション制御構造。
【請求項３】
前記コンパイラは、グローバルタスク変数が宣言されたタスク以外のタスクにて該グローバルタスク変数が使用された場合に、エラーを発報するよう形成されていることを特徴とする、請求項１または２に記載のモーション制御構造。
【請求項４】
前記グローバル変数のスコープ（有効範囲）が前記タスク単位の範囲に拡張されていることを特徴とする、請求項１ないし３のいずれかに記載のモーション制御構造。
【請求項５】
請求項１ないし４のいずれかに記載のモーション制御構造を備えた、モーションコントローラ。
【請求項６】
請求項１ないし４のいずれかに記載のモーション制御構造を備えた、モータ制御装置。
【請求項７】
ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造が用いられるマルチタスクプログラミング方法であって、宣言されたタスクでのみ有効なもの（グローバルタスク変数）と全てのタスク間で有効なもの（グローバルグローバル変数）とに拡張されたグローバル変数仕様を備えたユーザプログラム作成部でプログラムが作成され、該プログラムをコンパイラが目的コードに翻訳する過程でグローバルタスク変数が仕分けされることを特徴とする、マルチタスクプログラミング方法。
【請求項８】
前記プログラム作成処理では、前記モーション制御構造が保有する変数領域の範囲内で前記グローバル変数が定義されることを特徴とする、請求項７に記載のマルチタスクプログラミング方法。
【請求項９】
前記コンパイル処理では、グローバルタスク変数が宣言されたタスク以外のタスクにて前記グローバルタスク変数が使用された場合に、前記コンパイラがエラーを発報することを特徴とする、請求項７または８に記載のマルチタスクプログラミング方法。
【請求項１０】
作成されるプログラムにおいて、前記グローバル変数のスコープ（有効範囲）が前記タスク単位の範囲であることを特徴とする、請求項７ないし９のいずれかに記載のマルチタスクプログラミング方法。
【請求項１１】
請求項７ないし１０のいずれかに記載のマルチタスクプログラミング方法により作成され、タスク間における変数の抵触がないことを特徴とする、マルチタスクプログラム。
【請求項１２】
モーション制御構造を機能させるためのマルチタスク構造を備えたプログラムであって、グローバル変数として、宣言されたタスクでのみ有効なグローバル変数（グローバルタスク変数）、および全てのタスク間で有効なグローバル変数（グローバルグローバル変数）のいずれもが記述されていることを特徴とする、マルチタスクプログラム。
【請求項１３】
前記グローバル変数のスコープ（有効範囲）が前記タスク単位の範囲であることを特徴とする、請求項１１または１２に記載のマルチタスクプログラム。
【請求項１４】
モーションコントローラ用のシーケンスであることを特徴とする、請求項１１ないし１３のいずれかに記載のマルチタスクプログラム。
【請求項１５】
モータ制御装置用のモータ制御プログラムであることを特徴とする、請求項１１ないし１３のいずれかに記載のマルチタスクプログラム。
【請求項１６】
ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造によって構成されるマルチタスクプログラム構造であって、宣言されたタスクでのみ有効なもの（グローバルタスク変数）と全てのタスク間で有効なもの（グローバルグローバル変数）とに拡張されたグローバル変数仕様を備えたユーザプログラム作成部で作成されたプログラムにおける該グローバル変数がコンパイラによる目的コードへの翻訳過程で仕分けされていることを特徴とする、マルチタスクプログラム構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はモーション制御構造、モーションコントローラ、モータ制御装置、マルチタスクプログラミング方法、マルチタスクプログラム、およびマルチタスクプログラム構造に係り、特に、ユーザが変数の有効範囲を気にすることなくプログラミングすることが可能となり、ソフトウェアのバグの低減が可能な、モーション制御構造等に関するものである。
【背景技術】
【０００２】
内部にプログラムを保存・実行可能な自立型モーションコントローラやモータ制御装置では、プログラム実行部にマルチタスクの構造を持たせることができる。マルチタスクは異なる仕事を並列に実行できる便利な機能であり、プログラムを簡単に作成するために必須の機能であるといってもよい。
【０００３】
Ｃ言語で使われる変数の種類には、グローバル変数とローカル変数があり、関数間で共通に使用したい変数はグローバル変数として定義し、関数内で一時的に使用したい変数は、ローカル変数として定義するのが一般的である。従来、ユーザがシーケンスやモータ制御プログラムのプログラミングを行う場合には、メーカーが予め割り当てた（予約された）グローバル変数（グローバルレジスタ）が使用されている。
【０００４】
さて、モーション制御におけるマルチタスク機能については、多数の技術的提案がなされている。たとえば後掲特許文献１には、コントローラを増設することなく制御対象である動作単位を容易に増設できる自動機制御装置として、異なる動作にそれぞれ対応した複数の動作制御タスクを並列的に切り換えて動作シーケンスプログラムを解釈する上位制御部と、受け持つ被駆動素子を制御する複数の下位制御部と、上位制御部から発せられた動作命令実行のための共有メモリと、共有メモリに接続するバスとを有し、上位制御部は動作シーケンスプログラムを解釈した際に被駆動素子の動作実行に必要な情報を共有メモリに記憶させ、その後、実行する動作制御タスクを切り換えてこれに対応する動作部が有する被駆動素子が動作中と判断されたときにはさらに動作制御タスクを切り換え、下位制御部は上位制御部から動作実行を指示された際に共有メモリから情報を入力して動作実行する、という構成が開示されている。
【０００５】
また、特許文献２には、変数に対して複数のタスクがアクセスする場合にも一貫性のある演算が可能な制御装置として、各タスクに応じた周期で複数のタスクを並列実行するタスク実行部と、更新タスクにより更新・参照されるグローバル変数ならびにこれに対応し参照タスクにより参照される参照用データを記憶するＲＡＭと、複数のタスクが実行されているときにグローバル変数および参照用データを収集する収集部とを備えたＣＰＵユニットの構成が開示されている。つまりこれは、プログラムの並列処理時のグローバル変数への内部操作に関する技術である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第２８１７８４２号公報「自動機の制御装置」
【特許文献２】特許第５２１８５８５号公報「制御装置およびシステムプログラム」
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述のとおり、プログラミングにおいて関数間で共通に使用したい変数は、グローバル変数、関数内で一時的に使用したい変数はローカル変数として、それぞれ定義するのが一般的が、マルチタスクプログラミングの場合にはかかる変数の扱いが問題となる。気づいているか否かに関わらず、共通で使用できるグローバル変数が異なるタスク間で使用された場合、ユーザの意図しないタイミングでデータが書き換えられることがある。そのようなバグは発見が困難で、現象が発生するタイミングもランダムであるため、デバッグが困難なケースが多い。
【０００８】
図６は、従来のマルチタスク構造のプログラムにおけるグローバル変数へのアクセス例を示す説明図である。図示するように、ユーザの作成したプログラムが、並列に処理される複数のプログラム（タスク１番、２番、３番）、つまりマルチタスク構造である場合、複数のプログラムから同一のグローバル変数（Ｄａｔａ１、Ｄａｔａ２、Ｄａｔａ３）を参照・設定する可能性があるため、原因不明の誤動作が発生しやすい。つまり、異なるタスク間でグローバル変数が同時に使用されると、複数のプログラムから特定のデータにアクセスすることになり、後から見たときに訳の分からないプログラムになる危険性がある。
【０００９】
結局、マルチタスクプログラミングにおいては、グローバル変数とローカル変数のみの定義では、データの十分な堅牢性を得ることができない。そこで本発明が解決しようとする課題は、かかる従来技術の問題点をなくし、モーション制御でのマルチタスクプログラミングにおいて、ユーザが変数の有効範囲を気にすることなくプログラミングすることが可能となり、ソフトウェアのバグを低減することのできる、モーション制御構造等を提供することである。
【課題を解決するための手段】
【００１０】
本願発明者は上記課題について検討した結果、ユーザプログラム作成部にいおいて、宣言されたタスクでのみ有効なグローバル変数と、全てのタスク間で有効なグローバル変数、２種のグローバル変数を定義可能な構造とし、これらの変数の仕分けはプログラムの翻訳機（コンパイラ）により実現される構成とすることで課題解決できることを見出し、これに基づいて本発明を完成するに至った。すなわち、上記課題を解決するための手段として本願で特許請求される発明、もしくは少なくとも開示される発明は、以下の通りである。
【００１１】
〔１〕  ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造であって、該モーション制御構造は、マルチタスクプログラミングの可能なユーザプログラム作成部と、該ユーザプログラム作成部で作成されたソースプログラムを目的コードに翻訳するコンパイラとを備えており、該ユーザプログラム作成部は、宣言されたタスクでのみ有効なグローバル変数（以下、「グローバルタスク変数」）と、全てのタスク間で有効なグローバル変数（以下、「グローバルグローバル変数」）とに拡張された仕様によりユーザがこれらのグローバル変数を定義可能に形成され、該コンパイラは、各グローバル変数を仕分け可能に形成されていることを特徴とする、モーション制御構造。
〔２〕  ユーザは、本モーション制御構造が保有する変数領域の範囲内で前記グローバル変数を定義可能であることを特徴とする、〔１〕に記載のモーション制御構造。
〔３〕  前記コンパイラは、グローバルタスク変数が宣言されたタスク以外のタスクにて該グローバルタスク変数が使用された場合に、エラーを発報するよう形成されていることを特徴とする、〔１〕または〔２〕に記載のモーション制御構造。
〔４〕  前記グローバル変数のスコープ（有効範囲）が前記タスク単位の範囲に拡張されていることを特徴とする、〔１〕ないし〔３〕のいずれかに記載のモーション制御構造。
〔５〕  〔１〕ないし〔４〕のいずれかに記載のモーション制御構造を備えた、モーションコントローラ。
〔６〕  〔１〕ないし〔４〕のいずれかに記載のモーション制御構造を備えた、モータ制御装置。
【００１２】
〔７〕  ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造が用いられるマルチタスクプログラミング方法であって、宣言されたタスクでのみ有効なもの（グローバルタスク変数）と全てのタスク間で有効なもの（グローバルグローバル変数）とに拡張されたグローバル変数仕様を備えたユーザプログラム作成部でプログラムが作成され、該プログラムをコンパイラが目的コードに翻訳する過程でグローバルタスク変数が仕分けされることを特徴とする、マルチタスクプログラミング方法。
〔８〕  前記プログラム作成処理では、前記モーション制御構造が保有する変数領域の範囲内で前記グローバル変数が定義されることを特徴とする、〔７〕に記載のマルチタスクプログラミング方法。
〔９〕  前記コンパイル処理では、グローバルタスク変数が宣言されたタスク以外のタスクにて前記グローバルタスク変数が使用された場合に、前記コンパイラがエラーを発報することを特徴とする、〔７〕または〔８〕に記載のマルチタスクプログラミング方法。
〔１０〕  作成されるプログラムにおいて、前記グローバル変数のスコープ（有効範囲）が前記タスク単位の範囲であることを特徴とする、〔７〕ないし〔９〕のいずれかに記載のマルチタスクプログラミング方法。
【００１３】
〔１１〕  〔７〕ないし〔１０〕のいずれかに記載のマルチタスクプログラミング方法により作成され、タスク間における変数の抵触がないことを特徴とする、マルチタスクプログラム。
〔１２〕  モーション制御構造を機能させるためのマルチタスク構造を備えたプログラムであって、グローバル変数として、宣言されたタスクでのみ有効なグローバル変数（グローバルタスク変数）、および全てのタスク間で有効なグローバル変数（グローバルグローバル変数）のいずれもが記述されていることを特徴とする、マルチタスクプログラム。
〔１３〕  前記グローバル変数のスコープ（有効範囲）が前記タスク単位の範囲であることを特徴とする、〔１１〕または〔１２〕に記載のマルチタスクプログラム。
〔１４〕  モーションコントローラ用のシーケンスであることを特徴とする、〔１１〕ないし〔１３〕のいずれかに記載のマルチタスクプログラム。
〔１５〕  モータ制御装置用のモータ制御プログラムであることを特徴とする、〔１１〕ないし〔１３〕のいずれかに記載のマルチタスクプログラム。
〔１６〕  ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造によって構成されるマルチタスクプログラム構造であって、宣言されたタスクでのみ有効なもの（グローバルタスク変数）と全てのタスク間で有効なもの（グローバルグローバル変数）とに拡張されたグローバル変数仕様を備えたユーザプログラム作成部で作成されたプログラムにおける該グローバル変数がコンパイラによる目的コードへの翻訳過程で仕分けされていることを特徴とする、マルチタスクプログラム構造。
【発明の効果】
【００１４】
本発明のモーション制御構造、モーションコントローラ、モータ制御装置、マルチタスクプログラミング方法、マルチタスクプログラム、およびマルチタスクプログラム構造は上述のように構成されるため、これによれば、ユーザが変数の有効範囲を気にすることなくプログラミングすることができ、ソフトウェアのバグを低減することができる。また、ユーザは処理系（ハードウェア）が保有する変数領域を自由に割り当てることができる。
【００１５】
なお、上記特許文献１はプログラムの並列処理の構造に関する技術であり、本発明とは主旨が異なる。また特許文献２は、プログラムの並列処理時のグローバル変数への内部操作に関する技術であり、グローバル変数の仕様を拡張した本発明とは異なるものである。
【図面の簡単な説明】
【００１６】
【図１】本発明のモーション制御構造の概念とマルチタスクプログラミング方法のフローを合わせて示した説明図である。
【図２】本発明におけるグローバル変数の構成を示す説明図である。
【図３】本発明におけるグローバル変数の定義方法例を示す説明図である。
【図４】本発明における作成プログラムの例を示す説明図である。
【図５】本発明のマルチタスク構造のプログラムにおけるグローバル変数へのアクセス例を示す説明図である。
【図６】従来のマルチタスク構造のプログラムにおけるグローバル変数へのアクセス例を示す説明図である。
【発明を実施するための形態】
【００１７】
以下、図面により本発明を詳細に説明する。
図１は、本発明のモーション制御構造の概念とマルチタスクプログラミング方法のフローを合わせて示した説明図である。また、
図２は本発明におけるグローバル変数の構成を示す説明図である。これらに図示するように本モーション制御構造１０は、ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造であって、マルチタスクプログラミングの可能なユーザプログラム作成部２と、ここで作成されたソースプログラムＡを目的コードＢに翻訳するコンパイラ５とを備えている。
【００１８】
そしてユーザプログラム作成部２は、図２に示すように、宣言された（定義された）タスクでのみ有効なグローバル変数、すなわちグローバルタスク変数、全てのタスク間で有効（使用可能）なグローバル変数、すなわちグローバルグローバル変数とに拡張された仕様によりユーザがこれらのグローバル変数を定義可能に形成されており、また、コンパイラ５は各グローバル変数を仕分け可能に形成されていることを、主たる構成とする。
【００１９】
本発明モーション制御構造１０はかかる構成であるため、ユーザプログラム作成部２において、宣言されたタスクでのみ有効であるグローバルタスク変数と、全てのタスク間で有効であるグローバルグローバル変数とに拡張された仕様によりグローバル変数が定義されてマルチタスクプログラミングがなされ、このようにして作成されたソースプログラムＡは、コンパイラ５において、グローバルタスク変数とグローバルグローバル変数とが仕分けされつつ、目的コードＢへの翻訳がなされる。したがって、ユーザは変数の有効範囲を気にすることなくプログラミングすることができ、ソフトウェアのバグが低減される。また、ユーザは処理系（ハードウェア）が保有する変数領域を自由に割り当てることができる。つまり、本モーション制御構造１０が保有する変数領域の範囲内で、各グローバル変数を定義することができる。
【００２０】
本発明モーション制御構造１０においてこれらの作用が十分になされるために、プログラミング言語としては、グローバル変数をユーザが任意の名称で定義可能な言語が採用される。このようなプログラミング言語としては、たとえばＣ言語が好適である。全ての変数で有効な変数（グローバルグローバル変数）と、各タスクで有効な変数（グローバルタスク変数）とは、プログラミング言語に予約された識別子によって、コンパイラ５で仕分けされる。
【００２１】
図３は、本発明モーション制御構造等におけるグローバル変数の定義方法例を示す説明図である。図に例示するように、グローバル変数を定義するためには、プリプロセス命令の  #pragma  を使用し、main、task1・・・taskn、global  を指定するという方法を採ることができる。これにより、それぞれの宣言によるスコープ（有効範囲）が決定される。たとえば、#pragma task1  の宣言以下に定義された変数はグローバルタスク１変数となり、すなわちスコープがタスク１のみとなり、他のタスクで使用することはできない。
【００２２】
本モーション制御構造１０では、もし、スコープを超えてグローバルタスク変数が宣言されたタスク以外のタスクにてグローバルタスク変数が使用された場合には、コンパイラ５がエラーを警告する構成とすることができる。かかる構成とすることによって、変数使用を誤ったプログラム作成を回避することができるため、ユーザは変数の有効範囲を気にすることなく、ハードウェアが保有する変数領域を自由に用いてマルチタスクプログラミングを行うことができ、ソフトウェアのバグ低減作用が担保される。
【００２３】
上述の通り本発明ではＣ言語が好適に使用されるが、従来のＣ言語の標準仕様では、グローバル変数のスコープはextern宣言しない限り１ファイル単位かつ定義以降というごく限定されたものだった。しかし本発明のモーション制御構造１０においては、グローバル変数のスコープ（有効範囲）がタスク単位の範囲に拡張された構成とすることができる。つまり、グローバル変数の有効範囲をタスク毎とし、従来のようなファイル単位と定義以降という制限を解除する構成である。
【００２４】
図４は、本発明における作成プログラムの例を示す説明図である。なお、本例は、グローバル変数のスコープ（有効範囲）の拡張仕様例である。以下、図中の記述について説明する。
#pragma  ***  
この記述は、タスクの何番目かを指定するものである。たとえば、
#pragma task_main （グローバルメインタスク変数）以下に記述されているグローバルタスク変数であるところの、
int tm1;  は、
#pragma task1 （グローバルタスク１変数）以下に記述されているグローバルタスク関数であるところの、
void t1_main(void)  には使用できない。
【００２５】
すなわち、
#pragma ***  以下で指定されたプログラムの記述部分は、同じ名称で指定されたプログラムでしか使用できない。しかし、
#pragma global  以下の記述部分は全てのプログラムで使用可能である。つまり、グローバルグローバル変数ｇは適用範囲Ｒ１において、グローバルメインタスク変数ｔｍ１は適用範囲Ｒ２において、グローバルタスク１変数ｔｌ１は適用範囲Ｒ３において、それぞれ使用可能である。
【００２６】
なお、図示するようにグローバルメインタスク変数ｔｍ２の適用範囲は本来、グローバルメインタスク変数ｔｍ１は適用範囲Ｒ２内の、
void func ( int a.  int.b )  以下に限定されるが、ここでは、スコープ（有効範囲）がタスク単位にまで拡張されている（拡張範囲Ｓ２）。
【００２７】
なおまた、以上説明した本モーション制御構造を備えた、モーションコントローラやモータ制御装置もまた、本発明の範囲内である。
【００２８】
前出図１を用いて、本発明のマルチタスクプログラミング方法について説明する。本マルチタスクプログラミング方法は、ユーザがプログラムを作成、内部に保存し、かつ実行可能な自立型のモーション制御構造１０を用いて行うことができるが、まず、宣言されたタスクでのみ有効なグローバルタスク変数と、全てのタスク間で有効なグローバルグローバル変数とに拡張されたグローバル変数仕様を備えたユーザプログラム作成部２において、ソースプログラムＡが作成され（プログラム作成過程Ｐ２）、ついで、コンパイラ５により、グローバルタスク変数が仕分けされつつプログラムＡが目的コードＢに翻訳される（コンパイル過程Ｐ５）。このようにしてマルチタスクプログラムが作成される。
【００２９】
本発明のマルチタスクプログラミング方法においては、プログラム作成過程Ｐ２では、モーション制御構造１０が保有する変数領域の範囲内でグローバル変数が定義され、またコンパイル処理Ｐ５では、グローバルタスク変数が宣言されたタスク以外のタスクにてグローバルタスク変数が使用された場合にコンパイラ５がエラーを発報する構成が可能である。また、作成されるプログラムにおいて、グローバル変数のスコープ（有効範囲）を、ファイル単位や定義以降という限定された範囲ではなく、タスク単位の範囲に拡張できることも、既に述べたモーション制御構造と同様である。
【００３０】
図５は、本発明のマルチタスク構造のプログラムにおけるグローバル変数へのアクセス例を示す説明図である。図示するように、上記マルチタスクプログラミング方法により作成されるマルチタスクプログラムでは、タスク間における変数の抵触が発生しない。つまり、ユーザの作成したプログラムが並列に処理される複数のプログラム（タスク１番、２番、３番）というマルチタスク構造である場合、タスク１番からはグローバルタスク１変数Ｄａｔａ１にアクセスできても、他のグローバルタスク２変数Ｄａｔａ２、グローバルタスク３変数Ｄａｔａ３にはアクセスできない。
【００３１】
これにより、本発明のマルチタスクプログラムでは、複数のプログラムから同一のグローバル変数（Ｄａｔａ１、Ｄａｔａ２、Ｄａｔａ３）を参照・設定する可能性がなく、原因不明の誤動作が発生しない。すなわち、異なるタスク間で同一のグローバル変数が同時に使用されることがないため、複数のプログラムから特定のデータにアクセスすることがなく、後から見た時に訳の分からないプログラムが作成されるという問題が、有効に予防される。
【００３２】
このように作成される、モーション制御構造を機能させるための本発明マルチタスクプログラムは、グローバル変数として、宣言されたタスクでのみ有効なグローバルタスク変数、および全てのタスク間で有効なグローバルグローバル変数のいずれもが記述されたものとなる。また、グローバル変数のスコープ（有効範囲）がファイル単位や定義以降という限定された範囲ではなく、タスク単位の範囲に拡張されたマルチタスクプログラムとすることもできる。
【００３３】
本発明のマルチタスクプログラムは特に、モーションコントローラ用のシーケンスや、モータ制御装置用のモータ制御プログラムとして、最適な構成である。なおまた、グローバルタスク変数とグローバルグローバル変数とに拡張されたグローバル変数仕様を備えて作成されたプログラムにおいて、グローバル変数がコンパイラによる目的コードへの翻訳過程で仕分けされていることを特徴とするマルチタスクプログラム構造も、本発明の範囲内である。
【産業上の利用可能性】
【００３４】
本発明のモーション制御構造、マルチタスクプログラム等によれば、ユーザが変数の有効範囲を気にすることなくプログラミングすることができ、ソフトウェアのバグを低減することができる。したがって、モータ制御分野および関連する全分野において、産業上利用性が高い発明である。
【符号の説明】
【００３５】
２…ユーザプログラム作成部
５…コンパイラ
１０…モーション制御構造
Ａ…ソースプログラム
Ｂ…目的コード
Ｐ２…プログラム作成過程
Ｐ５…コンパイル過程
Ｒ１…グローバルグローバル変数ｇの適用範囲
Ｒ２…グローバルメインタスク変数ｔｍ１の適用範囲
Ｒ３…グローバルタスク１変数ｔｌ１の適用範囲
Ｓ２…グローバルメインタスク変数ｔｍ２の拡張範囲
【図１】
2016177512.tif 000003
【図２】
2016177512.tif 000004
【図３】
2016177512.tif 000005
【図４】
2016177512.tif 000006
【図５】
2016177512.tif 000007
【図６】
2016177512.tif 000008