JP7317269B2 - 通信周期決定装置、通信周期決定方法および通信周期決定プログラム - Google Patents

通信周期決定装置、通信周期決定方法および通信周期決定プログラム Download PDF

Info

Publication number
JP7317269B2
JP7317269B2 JP2023531157A JP2023531157A JP7317269B2 JP 7317269 B2 JP7317269 B2 JP 7317269B2 JP 2023531157 A JP2023531157 A JP 2023531157A JP 2023531157 A JP2023531157 A JP 2023531157A JP 7317269 B2 JP7317269 B2 JP 7317269B2
Authority
JP
Japan
Prior art keywords
control program
variable
communication cycle
input
branch
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.)
Active
Application number
JP2023531157A
Other languages
English (en)
Other versions
JPWO2023275942A1 (ja
Inventor
知剛 小川
大介 長川
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2023275942A1 publication Critical patent/JPWO2023275942A1/ja
Application granted granted Critical
Publication of JP7317269B2 publication Critical patent/JP7317269B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • 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
    • G05B19/0426Programming the control sequence
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本開示は、制御プログラムによって制御される機器の通信周期を決定するための技術に関するものである。
制御システムは、一般に制御装置と対象機器とを備える。制御装置は制御プログラムを実行する。制御装置と対象機器はFAネットワークによって接続される。
FAはファクトリーオートメーションの略称である。
対象機器には、例えばリモート入力機器およびリモート出力機器などがある。
リモート入力機器は、スイッチの状態またはセンサの状態を制御装置に入力する。
リモート出力機器は、制御機器の出力にしたがってソレノイドおよびランプを駆動する。
以下、差し支えない場合はリモート入力機器とリモート出力機器をまとめてリモート入出力機器と呼ぶ。
また、制御システムは設定装置を備える。設定装置は、例えば制御プログラムまたはFAネットワークの動作に関する情報を制御装置に対して設定する。情報はユーザによって入力される。
設定装置は、必要に応じ制御装置に接続される。
制御プログラムは、ユーザが望む制御動作が記述されたプログラムである。
制御プログラムには、処理の対象、処理結果の出力先および処理の内容を指定する命令列が並ぶ。
制御機器には、制御プログラムとともにI/O変数リストが与えられる。I/Oは入出力の略称である。
I/O変数は制御プログラム内で使用される変数であり、I/O変数はリモート入出力機器と対応する。
I/O変数リストには、I/O変数ごとに、I/O変数と、対応するリモート入出力機器と、が記載される。
FAネットワークには、時分割通信技術を用いた定周期通信機能を持つものがある。
時分割通信技術を用いた定周期通信機能では、ネットワークの通信帯域が時分割され、あらかじめ決められた時間長を有する通信周期の時間枠が設けられ、あらかじめ決められた内容の通信が行われる。
定周期通信が行われないときは、他の種類の通信がネットワークを利用できる。
I/O変数の値は、定周期通信を用いて更新される。
定周期通信は、制御プログラムの実行から独立して行われる。
定周期通信では、リモート入力機器から取得された入力データが制御装置の内部の一時記憶装置に保存され、その入力データの値が制御プログラムによってI/O変数の値として参照される。また、制御プログラムによって操作されたI/O変数の値は、一時記憶装置に保存され、定周期通信によってリモート出力機器へ送信される。
定周期通信の周期が制御プログラムの想定より短すぎる場合、定周期通信においてリモート入力機器からの入力データが一時記憶装置に保存されても制御プログラムが入力データを参照しない、という事象が発生する。また、制御プログラムによって操作されていない出力データが定周期通信によってリモート出力機器へ送信される、という事象が発生する。
このような場合、制御に不具合は発生しないが、ネットワーク帯域を空費することになる。
一方、実際に行われる定周期通信の周期が制御プログラムの想定より長すぎる場合、制御プログラムが古いI/O変数の値を参照する、という事象が発生する。また、制御プログラムによって操作されたI/O変数の値がリモート出力機器に反映されない、という事象が発生する。
このような場合、制御に不具合が発生する。
よって、定周期通信の周期は、制御プログラムの想定に合わせた適切な値に設定する必要がある。
従来技術では、制御プログラムの実行周期が通信周期に合わせて設定されていた。
特許文献1は、サーボシステムを開示している。
そのサーボシステムでは、上位装置と複数のサーボアンプが同期型シリアル通信手段で接続される。同期型シリアル通信手段では、一定の通信周期で動作指令などについてデータ交換が行われる。上位装置は制御装置の役割を果たす。そして、上位装置において実行される演算の周期が、通信周期の1/n倍(nは整数)に同期される。
特開2008-176673号公報
制御プログラムは一般に一定周期で反復して実行される。
制御プログラムには、制御プログラムが実行されるたびに実行される処理と、制御プログラムが何回か実行されるうちの1回のみ実行される処理と、が含まれる場合がある。
制御プログラム内のI/O変数に対する処理の実行頻度に応じて、I/O変数に対応する機器に対して適切な通信周期が設定されれば、定周期通信でやり取りされるデータ量が削減される。
しかし、I/O変数について処理の実行頻度を調べて、I/O変数に対応する機器に対して適切な通信周期を決定することは、ユーザにとって負担が大きい。
本開示は、制御プログラムが複数回実行されるうちに1回アクセスされる対象機器に対して適切な通信周期が求められるようにすることを目的とする。
本開示の通信周期決定装置は、
1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけるカウンタ変数検索部と、
前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つける剰余演算検索部と、
前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つける分岐命令検索部と、
前記条件分岐命令の分岐先ブロックから入出力変数を抽出する入出力変数抽出部と、
前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定する対象機器特定部と、
抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する通信周期決定部と、を備える。
本開示によれば、制御プログラムが複数回実行されるうちに1回アクセスされる対象機器に対して適切な通信周期を求めることが可能となる。
実施の形態1における制御システム200の構成図。 実施の形態1における通信周期決定装置100の構成図。 実施の形態1における通信周期決定方法のフローチャート。 実施の形態1における制御プログラム191の例を示す図。 実施の形態1における入出力変数リスト192の例を示す図。 実施の形態1におけるステップS120のフローチャート。 実施の形態1におけるステップS120のフローチャート。 実施の形態1におけるカウンタ変数リスト193の例を示す図。 実施の形態1におけるステップS130のフローチャート。 実施の形態1における剰余変数リスト194の例を示す図。 実施の形態1におけるステップS140のフローチャート。 実施の形態1におけるステップS140のフローチャート。 実施の形態1における剰余分岐ブロックリスト195の例を示す図。 実施の形態1におけるステップS150のフローチャート。 実施の形態1におけるステップS150のフローチャート。 実施の形態1における剰余分岐アクセス先リスト196の例を示す図。 実施の形態1における定周期通信を説明するための図。 実施の形態1における定周期通信を説明するための図。 実施の形態1における制御プログラムについて補足するための図。 実施の形態1における制御プログラムについて補足するための図。 実施の形態2における通信周期決定方法のフローチャート。 実施の形態3における通信周期決定装置100の構成図。 実施の形態3における通信周期決定方法のフローチャート。 実施の形態3における指定変数リスト197の例を示す図。 実施の形態4における通信周期決定装置100の構成図。 実施の形態4における通信周期決定方法のフローチャート。 実施の形態4における指定分岐リスト198の例を示す図。 実施の形態4における制御プログラムのフローチャートの例を示す図。 実施の形態4における制御プログラムのフローチャートの例を示す図。 実施の形態における通信周期決定装置100のハードウェア構成図。
実施の形態および図面において、同じ要素または対応する要素には同じ符号を付している。説明した要素と同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
実施の形態1.
制御システム200について、図1から図20に基づいて説明する。
***構成の説明***
図1に基づいて、制御システム200の構成を説明する。
制御システム200の具体例は、ファクトリーオートメーション(FA)である。
制御システム200は、制御装置210と、1つ以上の対象機器220と、設定装置230と、を備える。
設定装置230と制御装置210は、ネットワーク201で接続される。
制御装置210と1つ以上の対象機器220は、ネットワーク202で接続される。ネットワーク202は、時分割方式を採用する通信回線である。制御装置210と1つ以上の対象機器220との間では、リアルタイム性が保証される。図1において、制御装置210と2つの対象機器(220A、220B)がデイジーチェーン型で接続されているが、制御装置210と1つ以上の対象機器220は、ツリー型またはスター型などの他の形態で接続されても構わない。
1つの対象機器220には、センサ221、スイッチ222、ランプ223およびソレノイド224などが接続される。
制御装置210は、プロセッサとメモリと補助記憶装置と通信装置と入出力インタフェースといったハードウェアを備えるコンピュータである。
制御装置210は、動作パラメータにしたがって制御プログラムを実行することによって、1つ以上の対象機器220を制御する。
1つ以上の対象機器220のそれぞれは、制御装置210によって制御される機器である。対象機器220Aはリモート入力装置と呼ばれる機器であり、対象機器220Bはリモート出力装置と呼ばれる機器である。
対象機器220Aは、センサ221とスイッチ222とのそれぞれから状態を示す状態データを取得し、取得した状態データを制御装置210に入力する。
対象機器220Bは、制御装置210から入力される指令データにしたがってランプ223とソレノイド224とのそれぞれを駆動する。
設定装置230は、制御プログラムおよび動作パラメータを制御装置210に設定する装置である。具体的には、設定装置230は通信周期決定装置100として機能する。
通信周期決定装置100は、1つ以上の対象機器220のそれぞれの通信周期を決定する。通信周期は、動作パラメータの一つである。
図2に基づいて、通信周期決定装置100の構成を説明する。
通信周期決定装置100は、プロセッサ101とメモリ102と補助記憶装置103と通信装置104と入出力インタフェース105といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ101は、演算処理を行うICであり、他のハードウェアを制御する。例えば、プロセッサ101はCPUである。
ICは、Integrated Circuitの略称である。
CPUは、Central Processing Unitの略称である。
メモリ102は揮発性または不揮発性の記憶装置である。メモリ102は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ102はRAMである。メモリ102に記憶されたデータは必要に応じて補助記憶装置103に保存される。
RAMは、Random Access Memoryの略称である。
補助記憶装置103は不揮発性の記憶装置である。例えば、補助記憶装置103は、ROM、HDDまたはフラッシュメモリである。補助記憶装置103に記憶されたデータは必要に応じてメモリ102にロードされる。
ROMは、Read Only Memoryの略称である。
HDDは、Hard Disk Driveの略称である。
通信装置104はレシーバ及びトランスミッタである。例えば、通信装置104は通信チップまたはNICである。通信周期決定装置100の通信は通信装置104を用いて行われる。
NICは、Network Interface Cardの略称である。
入出力インタフェース105は、入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース105はUSB端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。通信周期決定装置100の入出力は入出力インタフェース105を用いて行われる。
USBは、Universal Serial Busの略称である。
プロセッサ101は、受付部110と決定部120と設定部130といった要素を備える。決定部120は、カウンタ変数検索部121と剰余演算検索部122と分岐命令検索部123と入出力変数抽出部124と対象機器特定部125と通信周期決定部126といった要素を備える。これらの要素はソフトウェアで実現される。
補助記憶装置103には、受付部110と決定部120と設定部130としてコンピュータを機能させるための通信周期決定プログラムが記憶されている。通信周期決定プログラムは、メモリ102にロードされて、プロセッサ101によって実行される。
補助記憶装置103には、さらに、OSが記憶されている。OSの少なくとも一部は、メモリ102にロードされて、プロセッサ101によって実行される。
プロセッサ101は、OSを実行しながら、通信周期決定プログラムを実行する。
OSは、Operating Systemの略称である。
通信周期決定プログラムの入出力データは記憶部190に記憶される。
メモリ102は記憶部190として機能する。但し、補助記憶装置103、プロセッサ101内のレジスタおよびプロセッサ101内のキャッシュメモリなどの記憶装置が、メモリ102の代わりに、又は、メモリ102と共に、記憶部190として機能してもよい。
通信周期決定装置100は、プロセッサ101を代替する複数のプロセッサを備えてもよい。
通信周期決定プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録(格納)することができる。
***動作の説明***
通信周期決定装置100の動作の手順は通信周期決定方法に相当する。また、通信周期決定装置100の動作の手順は通信周期決定プログラムによる処理の手順に相当する。
図3に基づいて、通信周期決定方法を説明する。
ステップS110において、受付部110は、制御プログラム191と入出力変数リスト192とを受け付ける。
例えば、ユーザが制御プログラム191を通信周期決定装置100に入力し、受付部110が入力された制御プログラム191を受け付ける。
制御プログラム191は、以下のような特徴を持つ。
(1)制御プログラム191は、文法および規約に違反せずに記述されている。
(2)制御プログラム191の実行周期は、基本となる通信周期と等しい。基本となる通信周期を「定周期通信周期」と称し、「T」で表す。
(3)制御プログラム191は、内部に無限ループを含まない。この特徴(3)は特徴(2)に関連する。
(4)制御プログラム191において、分岐は「分岐命令」と「開始命令」と「終了命令」とで構成される。分岐命令は分岐条件の成否を判定する命令である。開始命令は分岐先ブロックの開始を意味する。終了命令は分岐先ブロックの終了を意味する。
(5)制御プログラム191には、1つ以上の命令がシーケンシャルに記述されている。このため、「n番目の命令」は制御プログラム191の中の一か所を一意に特定する。「n」は正の整数である。
入出力変数リスト192は、入出力変数ごとに入出力変数に対応する対象機器220を示す。
入出力変数に対応する対象機器220は、入出力変数の値が入出力される。
図4に、制御プログラム191の例を示す。
制御プログラム191には、処理の対象、処理結果の出力先および処理の内容を指定する命令列が並んでいる。
図5に、入出力変数リスト192の例を示す。
入出力変数リスト192は、入出力変数ごとに入出力変数と対象機器220と変数種別との組を示している。
対象機器220の欄は、対象機器220の名前の他に、入出力変数の値が入力される入出力インタフェースの名前を示している。
変数種別は、入出力変数の種別(入力または出力)である。
ステップS120において、カウンタ変数検索部121は、制御プログラム191の中のカウンタ変数を見つける。
カウンタ変数は、制御プログラム191の実行回数をカウントするための変数である。
図6および図7に基づいて、ステップS120の手順を説明する。
ステップS1211において、カウンタ変数検索部121は、一時変数iに初期値1を設定し、一時変数fに初期値0を設定する。
ステップS1212からステップS1216において、カウンタ変数検索部121は、制御プログラム191の中のi番目の命令が1回だけ実行される命令であるか、一時変数fを使って判定する。
分岐の開始命令および分岐の終了命令は、1回だけ実行される命令ではない。
ステップS1212において、カウンタ変数検索部121は、制御プログラム191からi番目の命令を選択する。
そして、カウンタ変数検索部121は、i番目の命令が分岐の開始命令であるか判定する。つまり、カウンタ変数検索部121は、i番目の命令が分岐先ブロックの開始を意味するか判定する。
i番目の命令が分岐の開始命令である場合、処理はステップS1213に進む。
i番目の命令が分岐の開始命令でない場合、処理はステップS1214に進む。
ステップS1213において、カウンタ変数検索部121は、一時変数fの値に1を加算する。
ステップS1213の後、処理はステップS1214に進む。
ステップS1214において、カウンタ変数検索部121は、i番目の命令が分岐の終了命令であるか判定する。つまり、カウンタ変数検索部121は、i番目の命令が分岐先ブロックの終了を意味するか判定する。
i番目の命令が分岐の終了命令である場合、処理はステップS1215に進む。
i番目の命令が分岐の終了命令でない場合、処理はステップS1216に進む。
ステップS1215において、カウンタ変数検索部121は、一時変数fの値から1を減算する。
ステップS1215の後、処理はステップS1216に進む。
ステップS1216において、カウンタ変数検索部121は、一時変数fの値が0であるか判定する。
一時変数fの値が0である場合、処理はステップS1217に進む。
一時変数fの値が0でない場合、処理はステップS1241に進む。
ステップS1217において、カウンタ変数検索部121は、i番目の命令が加算命令であるか判定する。
i番目の命令が加算命令である場合、処理はステップS1218に進む。
i番目の命令が加算命令でない場合、処理はステップS1241に進む。
ステップS1218において、カウンタ変数検索部121は、i番目の命令が変数Xと定数の加算命令であるか判定する。変数Xは任意の変数である。
i番目の命令が変数Xと定数の加算命令である場合、処理はステップS1221に進む。
i番目の命令が変数Xと定数の加算命令でない場合、処理はステップS1241に進む。
ステップS1221において、カウンタ変数検索部121は、一時変数jに初期値1を設定する。
ステップS1222において、カウンタ変数検索部121は、j番目の命令が変数Xの値を変更するか判定する。
j番目の命令が変数Xの値を変更する場合、処理はステップS1223に進む。
j番目の命令が変数Xの値を変更しない場合、処理はステップS1224に進む。
ステップS1223において、カウンタ変数検索部121は、一時変数jの値を一時変数iの値と比較する。
一時変数jの値を一時変数iの値と等しい場合、処理はステップS1224に進む。
一時変数jの値を一時変数iの値と異なる場合、処理はステップS1241に進む。
ステップS1224において、カウンタ変数検索部121は、j番目の命令が制御プログラム191の最後の命令であるか判定する。
j番目の命令が制御プログラム191の最後の命令である場合、処理はステップS1231に進む。
j番目の命令が制御プログラム191の最後の命令でない場合、処理はステップS1225に進む。
ステップS1225において、カウンタ変数検索部121は、一時変数jの値に1を加算する。
ステップS1225の後、処理はステップS1222に進む。
ステップS1231において、カウンタ変数検索部121は、i番目の命令の中の変数Xをカウンタ変数としてカウンタ変数リスト193に追加する。
図8に、カウンタ変数リスト193の例を示す。
カウンタ変数リスト193は、1つ以上のカウンタ変数を示す。「D1」と「D2」とのそれぞれはカウンタ変数名である。
図7に戻り、ステップS1241から説明を続ける。
ステップS1241において、カウンタ変数検索部121は、i番目の命令が制御プログラム191の最後の命令であるか判定する。
i番目の命令が制御プログラム191の最後の命令である場合、処理は終了する。
i番目の命令が制御プログラム191の最後の命令でない場合、処理は1242に進む。
ステップS1242において、カウンタ変数検索部121は、一時変数iの値に1を加算する。
ステップS1242の後、処理はステップS1212に進む。
図3に戻り、説明を続ける。
ステップS120により、カウンタ変数リスト193が得られる。
なお、制御プログラム191の実行回数をカウントするための変数があらかじめ定義されている場合、カウンタ変数検索部121は、その変数もカウンタ変数リスト193に加える。
ステップS130において、剰余演算検索部122は、制御プログラム191からカウンタ変数に対する剰余演算を見つける。
カウンタ変数に対する剰余演算は、カウンタ変数が被除数であり定数が除数である剰余演算である。
剰余演算は、剰余を求めるための演算(命令)である。
図9に基づいて、ステップS130の手順を説明する。
ステップS131において、剰余演算検索部122は、一時変数iに初期値1を設定する。
ステップS132において、剰余演算検索部122は、制御プログラム191からi番目の命令を選択する。
そして、剰余演算検索部122は、i番目の命令が剰余演算であるか判定する。
i番目の命令が剰余演算である場合、処理はステップS133に進む。
i番目の命令が剰余演算でない場合、処理はステップS136に進む。
ステップS133において、剰余演算検索部122は、i番目の命令の中の除数Pが定数であるか判定する。
i番目の命令の中の除数Pが定数である場合、処理はステップS134に進む。
i番目の命令の中の除数Pが定数でない場合、処理はステップS136に進む。
ステップS134において、剰余演算検索部122は、i番目の命令の中の被除数がカウンタ変数であるか判定する。
つまり、剰余演算検索部122は、i番目の命令の中の被除数がカウンタ変数リスト193に示される変数であるか判定する。
i番目の命令の中の被除数がカウンタ変数である場合、処理はステップS135に進む。
i番目の命令の中の被除数がカウンタ変数でない場合、処理はステップS136に進む。
ステップS135において、剰余演算検索部122は、i番目の命令である剰余演算の情報を剰余変数リスト194に追加する。
具体的には、剰余演算検索部122は、カウンタ変数(被除数)の名前と剰余変数の名前と除数と演算位置との組を剰余変数リスト194に追加する。
剰余変数は、剰余が代入される変数である。
演算位置は、制御プログラム191の中の剰余演算の位置である。一時変数iの値が演算位置として設定される。
図10に、剰余変数リスト194の例を示す。
剰余変数リスト194は、剰余演算の情報として、カウンタ変数(被除数)と剰余変数と除数と演算位置とを示している。
図9に戻り、ステップS136から説明を続ける。
ステップS136において、剰余演算検索部122は、i番目の命令が制御プログラム191の最後の命令であるか判定する。
i番目の命令が制御プログラム191の最後の命令である場合、処理は終了する。
i番目の命令が制御プログラム191の最後の命令でない場合、処理はステップS137に進む。
ステップS137において、剰余演算検索部122は、一時変数iの値に1を加算する。
ステップS137の後、処理はステップS132に進む。
図3に戻り、説明を続ける。
ステップS130により、剰余変数リスト194が得られる。
ステップS140において、分岐命令検索部123は、制御プログラム191から剰余に対する条件分岐命令を見つける。
剰余に対する条件分岐命令は、ステップS130で見つかった剰余演算の剰余について、剰余と定数の一致を分岐条件とする条件分岐命令である。
図11および図12に基づいて、ステップS140の手順を説明する。
ステップS1411において、分岐命令検索部123は、一時変数iに初期値1を設定する。
ステップS1412において、分岐命令検索部123は、剰余変数リスト194からi番目の情報を取得する。
具体的には、分岐命令検索部123は、カウンタ変数名(X)と剰余変数名(Y)と除数Pと演算位置Jとを取得する。
そして、分岐命令検索部123は、一時変数jに初期値として演算位置Jを設定する。
ステップS1413において、分岐命令検索部123は、制御プログラム191からj番目の命令を選択する。
そして、分岐命令検索部123は、j番目の命令が条件分岐命令であるか判定する。
j番目の命令が条件分岐命令である場合、処理はステップS1414に進む。
j番目の命令が条件分岐命令でない場合、処理はステップS1451に進む。
ステップS1414において、分岐命令検索部123は、j番目の命令の中の分岐条件が剰余変数Yと定数Nとの一致であるか判定する。
j番目の命令の中の分岐条件が剰余変数Yと定数Nとの一致である場合、処理はステップS1421に進む。
j番目の命令の中の分岐条件が剰余変数Yと定数Nとの一致でない場合、処理はステップS1451に進む。
ステップS1421において、分岐命令検索部123は、一時変数jの値に1を加算する。
ステップS1422において、分岐命令検索部123は、制御プログラム191からj番目の命令を選択する。
そして、分岐命令検索部123は、j番目の命令がステップS1413で見つけた条件分岐命令に対する開始命令であるか判定する。
つまり、分岐命令検索部123は、j番目の命令が分岐先ブロックの開始を意味するか判定する。
j番目の命令がステップS1413で見つけた条件分岐命令に対する開始命令である場合、処理はステップS1431に進む。
j番目の命令がステップS1413で見つけた条件分岐命令に対する開始命令でない場合、処理はステップS1421に進む。
ステップS1431において、分岐命令検索部123は、一時変数kに一時変数jの値を設定する。
ステップS1432において、分岐命令検索部123は、一時変数jの値に1を加算する。
ステップS1433において、分岐命令検索部123は、制御プログラム191からj番目の命令を選択する。
そして、分岐命令検索部123は、j番目の命令がステップS1413で見つけた条件分岐命令に対する終了命令であるか判定する。
つまり、分岐命令検索部123は、j番目の命令が分岐先ブロックの終了を意味するか判定する。
j番目の命令がステップS1413で見つけた条件分岐命令に対する終了命令である場合、処理はステップS1441に進む。
j番目の命令がステップS1413で見つけた条件分岐命令に対する終了命令でない場合、処理はステップS1432に進む。
ステップS1441において、分岐命令検索部123は、剰余分岐ブロックの情報を剰余分岐ブロックリスト195に追加する。
剰余分岐ブロックは、ステップS1413で見つけた条件分岐命令に対する分岐ブロックである。
具体的には、分岐命令検索部123は、カウンタ変数(被除数)の名前Xと剰余変数の名前Yと除数Pと演算位置Jと定数Nと開始位置kと終了位置jとの組を剰余分岐ブロックリスト195に追加する。
定数Nは、比較定数と称する。
開始位置kは、制御プログラム191の中の分岐先ブロックの開始位置である。
終了位置jは、制御プログラム191の中の分岐先ブロックの終了位置である。
図13に、剰余分岐ブロックリスト195の例を示す。
剰余分岐ブロックリスト195は、剰余分岐ブロックの情報として、カウンタ変数(被除数)と剰余変数と除数と演算位置と比較定数と開始位置と終了位置とを示している。
図12に戻り、ステップS1451から説明を続ける。
ステップS1451において、分岐命令検索部123は、一時変数jの値に1を加算する。
ステップS1452において、分岐命令検索部123は、制御プログラム191からj番目の命令を選択する。
そして、分岐命令検索部123は、j番目の命令が制御プログラム191の最後の命令であるか判定する。
j番目の命令が制御プログラム191の最後の命令である場合、処理はステップS1453に進む。
j番目の命令が制御プログラム191の最後の命令でない場合、処理はステップS1413に進む。
ステップS1453において、分岐命令検索部123は、i番目の情報が剰余変数リスト194の最後の情報であるか判定する。
i番目の情報が剰余変数リスト194の最後の情報である場合、処理は終了する。
i番目の情報が剰余変数リスト194の最後の情報でない場合、処理はステップS1454に進む。
ステップS1454において、分岐命令検索部123は、一時変数iの値に1を加算する。
ステップS1454の後、処理はステップS1412に進む。
図3に戻り、説明を続ける。
ステップS140により、剰余分岐ブロックリスト195が得られる。
ステップS150において、入出力変数抽出部124は、条件分岐命令の分岐先ブロックから入出力変数を抽出する。
このとき、入出力変数抽出部124は、分岐先ブロックにジャンプ命令があるか判定する。そして、分岐先ブロックにジャンプ命令がない場合に、入出力変数抽出部124は入出力変数を抽出する。
対象機器特定部125は、抽出された入出力変数に対応する対象機器220を特定する。
特定される対象機器220は、抽出された入出力変数の値が入出力される対象機器220である。
図14および図15に基づいて、ステップS150の手順を説明する。
ステップS1511において、入出力変数抽出部124は、一時変数iに初期値1を設定する。
ステップS1512において、入出力変数抽出部124は、剰余分岐ブロックリスト195からi番目の情報を取得する。
具体的には、入出力変数抽出部124は、カウンタ変数名(X)と定数Nと開始位置と終了位置とを取得する。
そして、入出力変数抽出部124は、一時変数kに開始位置を設定し、一時変数jに終了位置を設定する。
ステップS1513において、入出力変数抽出部124は、制御プログラム191からk番目の命令を選択する。
そして、入出力変数抽出部124は、k番目の命令が実行命令ジャンプを伴う命令であるか判定する。
k番目の命令が実行命令ジャンプを伴う命令である場合、処理はステップS1551に進む。
k番目の命令が実行命令ジャンプを伴う命令でない場合、処理はステップS1514に進む。
ステップS1514において、入出力変数抽出部124は、一時変数kの値に1を加算する。
ステップS1515において、入出力変数抽出部124は、一時変数kの値を一時変数jの値を比較する。
一時変数kの値が一時変数jの値と等しい場合、処理はステップS1521に進む。
一時変数kの値が一時変数jの値と異なる場合、処理はステップS1513に進む。
ステップS1521において、入出力変数抽出部124は、剰余分岐ブロックリスト195からi番目の開始位置を取得する。
そして、入出力変数抽出部124は、一時変数kにi番目の開始位置を設定する。
ステップS1522において、入出力変数抽出部124は、制御プログラム191からk番目の命令を選択する。
そして、入出力変数抽出部124は、入出力変数リスト192に示される入出力変数がk番目の命令の中にオペランドとして含まれるか判定する。
入出力変数リスト192に示される入出力変数がk番目の命令の中にオペランドとして含まれる場合、処理はステップS1531に進む。
入出力変数リスト192に示される入出力変数がk番目の命令の中にオペランドとして含まれない場合、処理はステップS1541に進む。
ステップS1531において、対象機器特定部125は、入出力変数リスト192を参照して、k番目の命令の中の入出力変数に対応する対象機器220を特定する。
そして、対象機器特定部125は、剰余分岐アクセス先の情報を剰余分岐アクセス先リスト196に追加する。
具体的には、対象機器特定部125は、カウンタ変数(被除数)の名前Xと剰余変数の名前Yと除数Pと演算位置Jと定数Nと開始位置kと終了位置jとアクセス先との組を剰余分岐アクセス先リスト196に追加する。
アクセス先は、k番目の命令の中の入出力変数に対応する対象機器220の名前を意味する。
図16に、剰余分岐アクセス先リスト196を示す。
剰余分岐アクセス先リスト196、剰余分岐アクセス先の情報として、カウンタ変数(被除数)と剰余変数と除数と演算位置と比較定数と開始位置と終了位置とアクセス先とを示している。
図15に戻り、ステップS1541から説明を続ける。
ステップS1541において、入出力変数抽出部124は、一時変数kの値に1を加算する。
ステップS1542において、入出力変数抽出部124は、一時変数kの値を一時変数jの値と比較する。
一時変数kの値が一時変数jの値と等しい場合、処理はステップS1551に進む。
一時変数kの値が一時変数jの値と異なる場合、処理はステップS1522に進む。
ステップS1551において、入出力変数抽出部124は、i番目の情報が剰余分岐ブロックリスト195の最後の情報であるか判定する。
i番目の情報が剰余分岐ブロックリスト195の最後の情報である場合、処理は終了する。
i番目の情報が剰余分岐ブロックリスト195の最後の情報でない場合、処理はステップS1552に進む。
ステップS1552において、入出力変数抽出部124は、一時変数iの値に1を加算する。
ステップS1552の後、処理はステップS1512に進む。
図3に戻り、説明を続ける。
ステップS150により、剰余分岐アクセス先リスト196が得られる。
ステップS160において、通信周期決定部126は、各対象機器220の通信周期を決定する。
このとき、通信周期決定部126は、入出力変数が1つの分岐先ブロックのみでアクセスされるか判定する。そして、入出力変数が1つの分岐先ブロックのみでアクセスされる場合、通信周期決定部126は、制御プログラム191の実行周期に剰余演算の除数を掛けて得られる時間を、入出力変数に対応する対象機器220の通信周期に決定する。また、通信周期決定部126は、残りの対象機器220の通信周期を制御プログラム191の実行周期に決定する。
具体的には、通信周期決定部126は、各対象機器220の通信周期を以下のように決定する。「T」は基本となる定周期通信周期を表す。定周期通信周期Tは制御プログラム191の実行周期と等しい。
通信周期決定部126は、剰余分岐アクセス先リスト196の中の1つの情報にのみ示されている対象機器220を特定し、特定された対象機器220の情報から除数Pを取得する。そして、通信周期決定部126は、特定された対象機器220の定周期通信周期を「T×P」の値に決定する。
通信周期決定部126は、残りの対象機器220の定周期通信周期を「T」に決定する。
ステップS170において、設定部130は、制御装置210と通信することによって、制御プログラム191と各対象機器220の通信周期とを制御装置210に設定する。
***実施の形態1の効果***
実施の形態1により、制御プログラム191がP回実行されるうちに1回アクセスされる対象機器220に対して適切な通信周期を求めることができる。
***実施の形態の補足***
図17および図18に基づいて、定周期通信を説明する。
FAネットワークには、時分割通信技術を用いた定周期通信機能を持つものがある。
時分割通信技術を用いた定周期通信機能(図17を参照)では、ネットワークの通信帯域が時分割され、あらかじめ決められた時間長を有する通信周期の時間枠が設けられ、あらかじめ決められた内容の通信が行われる。
定周期通信が行われないときは、他の種類の通信がネットワークを利用できる。
入出力変数の値は、定周期通信を用いて更新される。
定周期通信は、制御プログラムの実行から独立して行われる(図18を参照)。
定周期通信では、リモート入力機器から取得された入力データが制御装置の内部のメモリに保存され、その入力データの値が制御プログラムによって入出力変数の値として参照される。また、制御プログラムによって操作された入出力変数の値は、メモリに保存され、定周期通信によってリモート出力機器へ送信される。
図19および図20に基づいて、制御プログラムについて補足する。
制御プログラムは一般に一定周期で反復して実行される。
制御プログラムには、制御プログラムが実行されるたびに実行される処理と、制御プログラムが何回か実行されるうちの1回のみ実行される処理と、が含まれる場合がある。
図19に、制御プログラムのフローチャートの一例を示す。
例えば、制御プログラムが実行されると処理Aは必ず実行される。これに対し、処理B(1)は、変数nの値をPで割った際の剰余が1であるときにのみ実行される。また、処理B(2)は、変数nの値をPで割った際の剰余が2であるときにのみ実行される。また、処理B(P-1)は、変数nの値をPで割った際の剰余が(P-1)であるときにのみ実行される。また、処理B(P)は、変数nの値をPで割った際の剰余が0であるときにのみ実行される。
変数nの値は、制御プログラムが実行されるたびに1ずつ加算される。その場合、処理B(1)~B(P)は、それぞれ制御プログラムがP回実行されるごとに1回実行されることになる。
図20に、リモート入出力機器の構成の例を示す。
リモート入出力機器Aおよびリモート入出力機器B(1)~B(P)があると仮定する。処理Aはリモート入出力機器Aの入出力変数を処理する。同様に、処理B(1)はリモート入出力機器B1の入出力変数を処理し、処理B(2)はリモート入出力機器B(2)の入出力変数を処理し、処理B(P)はリモート入出力機器B(P)の入出力変数を処理する。
この場合、リモート入出力機器Aの入出力変数は、処理Aによって参照または操作される。そして、リモート入出力機器Aの入出力変数は、制御プログラムが実行されるたびに更新される必要がある。
他方、リモート入出力機器B(1)~B(P)の入出力変数は、処理B(1)~B(P)によって参照または操作される。そして、リモート入出力機器B(1)~B(P)の入出力変数は、制御プログラムがP回実行されるごとに更新される必要がある。
すなわち、リモート入出力機器B(1)~B(P)について適切な定周期通信の周期はリモート入出力機器Aについて適切な定周期通信の周期のP倍である、といえる。
よって、リモート入出力機器B(1)~B(P)の通信周期がリモート入出力機器Aの通信周期のP倍に設定されれば、定周期通信でやり取りされるデータ量が削減される。
実施の形態2.
剰余分岐アクセス先リスト196の中の複数の情報に示される対象機器220の定周期通信周期を定周期通信周期Tよりも長くする形態について、主に実施の形態1と異なる点を図21に基づいて説明する。
***構成の説明***
制御システム200の構成および通信周期決定装置100の構成は、実施の形態1における構成と同じである。
***動作の説明***
図21に基づいて、通信周期決定方法を説明する。
ステップS210からステップS250は、実施の形態1におけるステップS110からステップS150と同じである。
ステップS260は、実施の形態1におけるステップS160と一部異なる。
ステップS270は、実施の形態1におけるステップS170と同じである。
以下に、ステップS260を説明する。
ステップS260において、通信周期決定部126は、各対象機器220の通信周期を決定する。
このとき、通信周期決定部126は、入出力変数が2つ以上の分岐先ブロックでアクセスされるか判定する。そして、入出力変数が2つ以上の分岐先ブロックでアクセスされる場合、通信周期決定部126は、制御プログラム191の実行周期と剰余演算の除数と2つ以上の分岐先ブロックに対応する2つ以上の分岐条件の2つ以上の定数とに基づいて、入出力変数に対応する対象機器220の通信周期を決定する。
具体的には、通信周期決定部126は、各対象機器220の通信周期を以下のように決定する。「T」は基本となる定周期通信周期を表す。定周期通信周期Tは制御プログラム191の実行周期と等しい。
通信周期決定部126は、剰余分岐アクセス先リスト196の中の1つの情報にのみ示されている対象機器220を特定する。特定される対象機器220を対象機器(1)と称する。
通信周期決定部126は、対象機器(1)の情報から除数Pを取得する。
通信周期決定部126は、対象機器(1)の定周期通信周期を「T×P」の値に決定する。
通信周期決定部126は、剰余分岐アクセス先リスト196の中の複数の情報に示されている対象機器220を特定する。特定される対象機器220を対象機器(2)と称する。
通信周期決定部126は、対象機器(2)の複数の情報に示される複数の剰余変数が同一であるか判定する。対象機器(2)の複数の情報に示される複数の剰余変数が同一である場合、対象機器(2)を対象機器(2A)と称する。対象機器(2A)について、比較定数Nがk個あり、除数が「P」である。
通信周期決定部126は、小さい順に並べられたk個の比較定数(N,N,・・・,N)に基づく数列Sの要素Sに対して数列Rの全ての要素Rが正の整数であるか判定する。数列Rの全ての要素Rが正の整数である場合、対象機器(2A)を対象機器(2B)と称する。
通信周期決定部126は、対象機器(2B)の定周期通信周期Cを以下のように決定する。
Figure 0007317269000001
Figure 0007317269000002
Figure 0007317269000003
通信周期決定部126は、残りの対象機器220の定周期通信周期を「T」に決定する。
***実施の形態2の効果***
前述の実施の形態1では、剰余分岐アクセス先リスト196の1行のみに記載されている対象機器220の定周期通信周期が決定された。
しかし、剰余分岐アクセス先リスト196の複数行に記載されている対象機器220に対して定周期通信周期を制御プログラム191の実行周期より長くすることができる場合がある。
このような場合に対して、実施の形態2により、剰余分岐アクセス先リスト196の複数行に記載されている対象機器220に対して制御プログラム191の実行周期より長い定周期通信周期を決定することができる。
実施の形態3.
定数が設定される変数を考慮する形態について、主に実施の形態1および実施の形態2と異なる点を図22から図24に基づいて説明する。
***構成の説明***
制御システム200の構成は、実施の形態1における構成と同じである。
図22に基づいて、通信周期決定装置100の構成を説明する。
通信周期決定装置100は、さらに、編集部140を備える。
通信周期決定プログラムは、さらに、編集部140としてコンピュータを機能させる。
***動作の説明***
図23に基づいて、通信周期決定方法を説明する。
ステップS310において、受付部110は、制御プログラム191と入出力変数リスト192との他に、指定変数リスト197を受け付ける。
指定変数リスト197は、指定変数のリストである。
指定変数は、定数が設定される変数であり、ユーザによって指定される。
図24に、指定変数リスト197の例を示す。
指定変数リスト197は、指定変数ごとに指定変数と定数とを示している。
通信周期決定装置100は、指定変数リスト197の作成を支援するためのグラフィカル・ユーザ・インタフェースを備えてもよい。
図23に戻り、ステップS320から説明を続ける。
ステップS320において、編集部140は、指定変数リスト197に基づいて、制御プログラム191を編集する。
具体的には、編集部140は、制御プログラム191から各指定変数を見つけ、制御プログラム191の中の各指定変数を定数に置き換える。
ステップS330からステップS370では、編集済みの制御プログラム191が使用される。
ステップS330からステップS380は、実施の形態1のステップS120からステップS170または実施の形態2のステップS220からステップS270と同じである。
***実施の形態3の効果***
前述の実施の形態1では、命令のオペランドおよび比較の対象が定数であることを条件とする処理があった。
しかし、定数に相当する役割を果たす値をあえて変数にして制御プログラム191が作成され、その変数の値が制御プログラム191の冒頭または別途の定義によって特定の値に固定されることがある。
このような場合に対して、実施の形態3により、ユーザが定数として扱われるべき値が代入されている変数を個別に指定した場合に、それらの変数を定数と同様に扱うことができる。
実施の形態4.
分岐結果が固定される分岐命令を考慮する形態について、主に実施の形態1および実施の形態2と異なる点を図25から図28に基づいて説明する。
***構成の説明***
制御システム200の構成は、実施の形態1における構成と同じである。
図25に基づいて、通信周期決定装置100の構成を説明する。
通信周期決定装置100は、さらに、編集部150を備える。
通信周期決定プログラムは、さらに、編集部150としてコンピュータを機能させる。
***動作の説明***
図26に基づいて、通信周期決定方法を説明する。
ステップS410において、制御装置210は、制御プログラム191と入出力変数リスト192との他に、指定分岐リスト198を受け付ける。
指定分岐リスト198は、指定分岐命令のリストである。
指定分岐命令は、分岐結果が固定される分岐命令であり、ユーザによって指定される。
図27に、指定分岐リスト198の例を示す。
指定分岐リスト198は、指定分岐命令ごとに分岐命令場所と固定分岐結果とを示す。
分岐命令場所は、制御プログラム191の中の指定分岐命令の場所である。
固定分岐結果は、固定される分岐結果である。
通信周期決定装置100は、指定分岐リスト198の作成を支援するためのグラフィカル・ユーザ・インタフェースを備えてもよい。
図26に戻り、ステップS420から説明を続ける。
ステップS420において、編集部150は、指定分岐リスト198に基づいて、制御プログラム191を編集する。
具体的には、編集部150は、制御プログラム191から各指定分岐命令を見つけ、制御プログラム191の中の各指定分岐命令の分岐結果を固定して無効化する。
ステップS430からステップS470では、編集済みの制御プログラム191が使用される。
ステップS430からステップS480は、実施の形態1のステップS120からステップS170または実施の形態2のステップS220からステップS270と同じである。
***実施の形態4の効果***
図28と図29とのそれぞれに、制御プログラムのフローチャートの例を示す。
図28において、制御プログラムは非定常状態に備えた分岐命令を持ち、非常停止スイッチがOFFにならない限り、制御処理が実行されない。
このような制御プログラムには1回だけ実行される命令がなく、カウンタ変数リストが空になる。カウンタ変数リストが空になる場合、実施の形態は適用できない。
このような事象に対して、実施の形態4により、ユーザによって指定された分岐命令の分岐結果を1つに固定する。その結果、指定された分岐命令が実質的に無効化される。
図28において「非常停止スイッチがOFFになっているか?」という分岐命令の分岐結果を「No」に固定することにより、制御プログラムを図29のように表すことが実質的に可能になる。
***実施の形態4の補足***
実施の形態4は実施の形態3と組み合わせてもよい。つまり、通信周期決定装置100が編集部140と編集部150とを備え、制御プログラム191が編集部140と編集部150とによって編集されてもよい。
***実施の形態の補足***
図30に基づいて、通信周期決定装置100のハードウェア構成を説明する。
通信周期決定装置100は処理回路109を備える。
処理回路109は、受付部110と決定部120と設定部130と編集部140と編集部150とを実現するハードウェアである。
処理回路109は、専用のハードウェアであってもよいし、メモリ102に格納されるプログラムを実行するプロセッサ101であってもよい。
処理回路109が専用のハードウェアである場合、処理回路109は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC、FPGAまたはこれらの組み合わせである。
ASICは、Application Specific Integrated Circuitの略称である。
FPGAは、Field Programmable Gate Arrayの略称である。
通信周期決定装置100は、処理回路109を代替する複数の処理回路を備えてもよい。
処理回路109において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
このように、通信周期決定装置100の機能はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
各実施の形態は、好ましい形態の例示であり、本開示の技術的範囲を制限することを意図するものではない。各実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
通信周期決定装置100は、2台以上の装置で実現されてもよい。
通信周期決定装置100の要素である「部」は、「処理」、「工程」、「回路」または「サーキットリ」と読み替えてもよい。
100 通信周期決定装置、101 プロセッサ、102 メモリ、103 補助記憶装置、104 通信装置、105 入出力インタフェース、109 処理回路、110 受付部、120 決定部、121 カウンタ変数検索部、122 剰余演算検索部、123 分岐命令検索部、124 入出力変数抽出部、125 対象機器特定部、126 通信周期決定部、130 設定部、140 編集部、150 編集部、190 記憶部、191 制御プログラム、192 入出力変数リスト、193 カウンタ変数リスト、194 剰余変数リスト、195 剰余分岐ブロックリスト、196 剰余分岐アクセス先リスト、197 指定変数リスト、198 指定分岐リスト、200 制御システム、201 ネットワーク、202 ネットワーク、210 制御装置、220 対象機器、221 センサ、222 スイッチ、223 ランプ、224 ソレノイド、230 設定装置。

Claims (10)

  1. 1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけるカウンタ変数検索部と、
    前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つける剰余演算検索部と、
    前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つける分岐命令検索部と、
    前記条件分岐命令の分岐先ブロックから入出力変数を抽出する入出力変数抽出部と、
    前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定する対象機器特定部と、
    抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する通信周期決定部と、
    を備える通信周期決定装置。
  2. 前記通信周期決定部は、前記1つ以上の対象機器のうちの残りの対象機器の通信周期を前記実行周期に決定する
    請求項1に記載の通信周期決定装置。
  3. 前記入出力変数抽出部は、前記分岐先ブロックにジャンプ命令があるか判定し、前記分岐先ブロックに前記ジャンプ命令がない場合に前記入出力変数を抽出する
    請求項1または請求項2に記載の通信周期決定装置。
  4. 前記通信周期決定部は、抽出された入出力変数が2つ以上の分岐先ブロックでアクセスされる場合、前記実行周期と前記除数と前記2つ以上の分岐先ブロックに対応する2つ以上の分岐条件の2つ以上の定数とに基づいて、特定された対象機器の通信周期を決定する
    請求項1から請求項3のいずれか1項に記載の通信周期決定装置。
  5. 前記通信周期決定部は、小さい順に並べられた前記2つ以上の定数N~Nに基づく数列Sの要素Sに対して数列Rの全ての要素Rが正の整数であるか判定し、全ての要素Rが正の整数である場合、特定された対象機器の通信周期Cを決定し、
    前記要素Sと前記要素Rと前記通信周期Cとのそれぞれが、
    Figure 0007317269000004
    Figure 0007317269000005
    Figure 0007317269000006
    である
    請求項4に記載の通信周期決定装置。
  6. 定数が設定される変数として指定される指定変数を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定変数を前記指定変数に設定される前記定数に置き換えることによって前記制御プログラムを編集する編集部を備え、
    編集済みの前記制御プログラムを使用して、前記特定された対象機器の通信周期を決定する
    請求項1から請求項5のいずれか1項に記載の通信周期決定装置。
  7. 分岐結果が固定される分岐命令として指定される指定分岐命令を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定分岐命令の分岐結果が固定されるように前記制御プログラムを編集する編集部を備え、
    編集済みの前記制御プログラムを使用して、前記特定された対象機器の通信周期を決定する
    請求項1から請求項5のいずれか1項に記載の通信周期決定装置。
  8. 定数が設定される変数として指定される指定変数を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定変数を前記指定変数に設定される前記定数に置き換えることによって前記制御プログラムを編集する第1編集部と、
    分岐結果が固定される分岐命令として指定される指定分岐命令を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定分岐命令の分岐結果が固定されるように前記制御プログラムを編集する第2編集部と、
    を備え、
    編集済みの前記制御プログラムを使用して、前記特定された対象機器の通信周期を決定する
    請求項1から請求項5のいずれか1項に記載の通信周期決定装置。
  9. 1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけ、
    前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つけ、
    前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つけ、
    前記条件分岐命令の分岐先ブロックから入出力変数を抽出し、
    前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定し、
    抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する
    通信周期決定方法。
  10. 1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけるカウンタ変数検索処理と、
    前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つける剰余演算検索処理と、
    前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つける分岐命令検索処理と、
    前記条件分岐命令の分岐先ブロックから入出力変数を抽出する入出力変数抽出処理と、
    前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定する対象機器特定処理と、
    抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する通信周期決定処理と、
    をコンピュータに実行させるための通信周期決定プログラム。
JP2023531157A 2021-06-28 2021-06-28 通信周期決定装置、通信周期決定方法および通信周期決定プログラム Active JP7317269B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/024381 WO2023275942A1 (ja) 2021-06-28 2021-06-28 通信周期決定装置、通信周期決定方法および通信周期決定プログラム

Publications (2)

Publication Number Publication Date
JPWO2023275942A1 JPWO2023275942A1 (ja) 2023-01-05
JP7317269B2 true JP7317269B2 (ja) 2023-07-28

Family

ID=84691023

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023531157A Active JP7317269B2 (ja) 2021-06-28 2021-06-28 通信周期決定装置、通信周期決定方法および通信周期決定プログラム

Country Status (6)

Country Link
US (1) US20240086295A1 (ja)
JP (1) JP7317269B2 (ja)
CN (1) CN117546104A (ja)
DE (1) DE112021007633T5 (ja)
TW (1) TWI830085B (ja)
WO (1) WO2023275942A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016189689A1 (ja) 2015-05-27 2016-12-01 三菱電機株式会社 プログラム生成装置、プログラム生成方法及びプログラム生成プログラム
WO2021005691A1 (ja) 2019-07-08 2021-01-14 三菱電機株式会社 制御装置、プログラム監視方法及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4203661B2 (ja) * 2004-08-02 2009-01-07 パナソニック株式会社 サーボ制御装置
JP4935369B2 (ja) 2007-01-22 2012-05-23 パナソニック株式会社 サーボシステム
CN110073301A (zh) * 2017-08-02 2019-07-30 强力物联网投资组合2016有限公司 工业物联网中具有大数据集的数据收集环境下的检测方法和系统
JP7328064B2 (ja) * 2019-08-07 2023-08-16 ファナック株式会社 同期方法、及び制御装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016189689A1 (ja) 2015-05-27 2016-12-01 三菱電機株式会社 プログラム生成装置、プログラム生成方法及びプログラム生成プログラム
WO2021005691A1 (ja) 2019-07-08 2021-01-14 三菱電機株式会社 制御装置、プログラム監視方法及びプログラム

Also Published As

Publication number Publication date
CN117546104A (zh) 2024-02-09
DE112021007633T5 (de) 2024-02-22
TW202301052A (zh) 2023-01-01
WO2023275942A1 (ja) 2023-01-05
US20240086295A1 (en) 2024-03-14
TWI830085B (zh) 2024-01-21
JPWO2023275942A1 (ja) 2023-01-05

Similar Documents

Publication Publication Date Title
JP2947356B2 (ja) 並列処理システム及び並列プロセッサの同期方法
CN103348318A (zh) 控制依赖于相同数据条件的相邻指令的执行
US20070168685A1 (en) Organic electroluminescence device
JPH0622035B2 (ja) ベクトル処理装置
JP7317269B2 (ja) 通信周期決定装置、通信周期決定方法および通信周期決定プログラム
EP0032515A1 (en) A method of pipeline control for a computer
JP2001015398A (ja) 半導体処理工程制御システム、半導体処理工程制御方法、及び、そのための処理を記録した記録媒体
KR20010001022A (ko) 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치
CN116737279B (zh) 用于程序运行的方法及装置、处理器、电子设备、介质
US10353591B2 (en) Fused shader programs
EP0164418A1 (en) Microprogram control system
CN105122158B (zh) 具有短延迟时间的可编程控制装置
JPS63142431A (ja) パイプライン制御方式
US8490097B2 (en) Information processing apparatus having a plurality of control units receiving transactions at the current time such that when the current time coincides with most recent start-up time the control units update the start-up time with the current time and sum up the number of transactions being processed limited to a predetermined threshold
EP0436402A2 (en) Channel assignment in data processing apparatus
CN109858721B (zh) 一种控制计算策略生成方法以及系统
JPS5819953A (ja) マイクロプログラム制御方式
US8291145B2 (en) Method and apparatus for setting a primary port on a PCI bridge
CN110968412B (zh) 一种任务执行方法、系统及存储介质
CN117093268B (zh) 一种向量处理方法、系统、设备及存储介质
JP2000250612A (ja) プログラマブルコントローラ
WO2022201506A1 (ja) プログラム作成支援システムおよびプログラム作成支援プログラム
CN111258643B (zh) 数据处理方法、处理器、数据处理装置及存储介质
JPS6116111B2 (ja)
JPH086797A (ja) 定数参照最適化処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230529

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230529

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: 20230620

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230718

R150 Certificate of patent or registration of utility model

Ref document number: 7317269

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150