JPWO2020065863A1 - Programmable logic controllers, methods, and programs - Google Patents
Programmable logic controllers, methods, and programs Download PDFInfo
- Publication number
- JPWO2020065863A1 JPWO2020065863A1 JP2019537392A JP2019537392A JPWO2020065863A1 JP WO2020065863 A1 JPWO2020065863 A1 JP WO2020065863A1 JP 2019537392 A JP2019537392 A JP 2019537392A JP 2019537392 A JP2019537392 A JP 2019537392A JP WO2020065863 A1 JPWO2020065863 A1 JP WO2020065863A1
- Authority
- JP
- Japan
- Prior art keywords
- unit
- loop
- program
- history
- value
- 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
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable 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
プログラマブルロジックコントローラのCPUユニット(100)において、実行部(103)は、設定された周期毎にプログラムを実行する。デバイスデータ記憶部(101)は、プログラムの入力値及び出力値を含むデバイス値を記憶する。履歴データ記憶部(102)は、デバイス値の更新履歴を記憶する。ループモニタ部(105)は、プログラム内にループ処理があるか否かを判別し、プログラム内にループ処理がある場合に、実行部(103)がループ処理内の命令を実行することにより更新したデバイス値の更新履歴を履歴データ記憶部(102)に格納する。In the CPU unit (100) of the programmable logic controller, the execution unit (103) executes a program at a set cycle. The device data storage unit (101) stores device values including input values and output values of the program. The history data storage unit (102) stores the update history of the device value. The loop monitor unit (105) determines whether or not there is loop processing in the program, and when there is loop processing in the program, the execution unit (103) updates by executing the instruction in the loop processing. The update history of the device value is stored in the history data storage unit (102).
Description
本発明は、プログラマブルロジックコントローラ、方法、及びプログラムに関する。 The present invention relates to programmable logic controllers, methods, and programs.
プログラマブルロジックコントローラは、制御対象の機器を制御するため、設定された周期であるスキャンタイム毎にプログラムの各命令を実行して、検出器から供給された入力信号が示す値を使用した演算を行い、演算結果を示す値に基づく出力信号を制御対象の機器に供給する。プログラマブルロジックコントローラにおいて、検出器から供給された入力信号を示す値と被制御機器に供給される出力信号を示す値とは、デバイスメモリと呼ばれるメモリ上の領域に格納される。 In order to control the device to be controlled, the programmable logic controller executes each instruction of the program at each scan time, which is a set cycle, and performs an operation using the value indicated by the input signal supplied from the detector. , The output signal based on the value indicating the calculation result is supplied to the device to be controlled. In the programmable logic controller, the value indicating the input signal supplied from the detector and the value indicating the output signal supplied to the controlled device are stored in an area on the memory called a device memory.
ユーザは、例えば、プログラマブルロジックコントローラのプログラムの動作が正常であるか否かを確認するために、プログラムの開発ツール、プログラマブル表示器等の外部機器を介してデバイスメモリのデータを監視する。特許文献1には、プログラマブル表示器が、スキャンタイム毎にデバイス値をデバイスメモリから読み出し、読み出したデバイス値をディスプレイに表示することが記載されている。
For example, the user monitors the data in the device memory via an external device such as a program development tool or a programmable display in order to confirm whether or not the operation of the program of the programmable logic controller is normal.
特許文献1に記載されているように、従来のプログラマブルロジックコントローラは、開発ツール、プログラマブル表示器等の外部機器から、デバイスメモリを読み出すことを指示するモニタ要求を受け付けると、I/O(Input/Output:入出力)リフレッシュのタイミングで、モニタ要求で指定されたデバイスメモリの値を外部機器に送信する。I/Oリフレッシュとは、プログラマブルロジックコントローラと検出器及び制御対象の機器との間でデバイスメモリのデータを一括交換することをいう。I/Oリフレッシュは、スキャンタイムの最後に、即ちプログラムの命令が一通り実行された後に実行される。
As described in
ここで、デバイスメモリが記憶するデータは、プログラムの実行中に書き換えられることがある。例えば、特定の条件下において特定の処理が繰り返される処理であるループ処理において同一のデバイスメモリの値が逐次更新されることがある。 Here, the data stored in the device memory may be rewritten during the execution of the program. For example, the same device memory value may be sequentially updated in a loop process, which is a process in which a specific process is repeated under a specific condition.
プログラムのデバッグの際には、ループ処理において更新されるデバイスメモリの値を確認することが必要になる場合がある。従来のプログラマブルロジックコントローラは、スキャンタイムの最後にモニタ要求に対する応答を返していたため、ユーザは、ループ処理において逐次更新されるデバイスメモリの値を確認することができなかった。このため、ループ処理において逐次更新されるデバイスメモリの値を確認するために、ユーザは、デバイスメモリの値をデバッグ用のログファイルに随時出力するためのデバッグ用のコードをプログラムに追加し、プログラムの実行後にデバッグ用のログファイルの内容を確認していた。従来は、ユーザは、プログラムのデバッグのため、このような作業を行うことが必要であった。その結果、プログラムのデバッグに係る工数が増加する傾向にあった。 When debugging a program, it may be necessary to check the value of device memory that is updated during loop processing. Since the conventional programmable logic controller returns a response to the monitor request at the end of the scan time, the user cannot confirm the value of the device memory that is sequentially updated in the loop processing. Therefore, in order to check the device memory value that is sequentially updated in the loop processing, the user adds debug code to the program to output the device memory value to the debug log file at any time. I was checking the contents of the log file for debugging after executing. In the past, users had to do this to debug their programs. As a result, the man-hours for debugging the program tended to increase.
本発明は、上記実情に鑑みてなされたものであり、ユーザが煩雑な作業を行うことなく、ループ処理において逐次書き換えられるデバイス値の更新履歴を取得することを可能とし、プログラムのデバッグに係る工数を削減することを目的とする。 The present invention has been made in view of the above circumstances, and enables the user to acquire the update history of device values that are sequentially rewritten in the loop processing without performing complicated work, and the man-hours related to program debugging. The purpose is to reduce.
上記目的を達成するため、本発明のプログラマブルロジックコントローラにおいて、実行手段は、設定された周期毎にプログラムを実行する。デバイス記憶手段は、プログラムの入力値及び出力値を含むデバイス値を記憶する。履歴記憶手段は、デバイス値の更新履歴を記憶する。履歴管理手段は、プログラム内にループ処理があるか否かを判別し、プログラム内にループ処理がある場合に、前記実行手段がループ処理内の命令を実行することにより更新したデバイス値の更新履歴を履歴記憶手段に格納する。 In order to achieve the above object, in the programmable logic controller of the present invention, the execution means executes a program at a set cycle. The device storage means stores device values including input values and output values of the program. The history storage means stores the update history of the device value. The history management means determines whether or not there is a loop process in the program, and if there is a loop process in the program, the update history of the device value updated by the execution means executing the instruction in the loop process. Is stored in the history storage means.
本発明のプログラマブルロジックコントローラの履歴管理手段は、プログラムにループ処理があるか否かを判別し、プログラム内にループ処理がある場合に、実行手段がループ処理内の命令を実行することにより更新したデバイス値の更新履歴を履歴記憶手段に格納する。このような構成を備えることで、ユーザは煩雑な作業を行うことなく、ループ処理において逐次書き換えられるデバイス値の更新履歴を取得することができ、プログラムのデバッグに係る工数を削減することができる。 The history management means of the programmable logic controller of the present invention determines whether or not the program has loop processing, and if there is loop processing in the program, the executing means updates by executing the instruction in the loop processing. The update history of the device value is stored in the history storage means. By providing such a configuration, the user can acquire the update history of the device value that is sequentially rewritten in the loop processing without performing complicated work, and the man-hours related to program debugging can be reduced.
以下、本発明の実施の形態に係るプログラマブルロジックコントローラ1について、図面を参照しつつ詳細に説明する。
Hereinafter, the
(実施の形態)
図1に示す、プログラマブルロジックコントローラ1は、生産システム、制御システム等において稼動するセンサ、スイッチ等を含む検出器901と、アクチュエータ、電磁弁、表示灯等を含む被制御機器902とを制御する。プログラマブルロジックコントローラ1は、プログラマブルロジックコントローラ1全体を制御するCPU(Central Processing Unit)ユニット100と、検出器901から供給された入力信号をCPUユニット100に入力する入力ユニット200と、CPUユニット100から供給された出力信号を被制御機器902に出力する出力ユニット300と、各ユニットを装着するためのベースユニット400とを含む。(Embodiment)
The
CPUユニット100は、入力ユニット200から供給された入力信号に従って、後述するユーザプログラム111の命令を実行し、出力信号を出力ユニット300に供給する。例えば、CPUユニット100は、検出器901のセンサがオンしていることを示す入力信号が入力されると、ユーザプログラム111の命令を実行し、被制御機器902のアクチュエータをオンすることを示す出力信号を出力する。CPUユニット100は、設定された周期でユーザプログラム111の命令を順次開始し、最後の命令であるEND命令を実行した後、ユーザプログラム111の実行を終了する。CPUユニット100は、次の周期に再びユーザプログラム111の実行を開始する。1つの周期において、ユーザプログラム111の最初の命令から最後の命令までを実行することをスキャンするという場合がある。この設定された周期をスキャンタイムという。
The
また、CPUユニット100は、後述のエンジニアリングツール500からデバイス値のモニタ要求を受信すると、モニタ要求で指定されたデバイス値をエンジニアリングツール500に送信する。
Further, when the
デバイス値は、デバイスメモリ113と呼ばれるCPUユニット100のメモリ110に確保された領域に格納されている値である。デバイス値は、入力ユニット200から供給された入力信号を示す値であって、ユーザプログラム111の演算の入力値と、出力ユニット300に供給される出力信号を示す値であって、ユーザプログラム111の演算の出力値とを含む。
The device value is a value stored in an area reserved in the
モニタ要求とは、デバイスメモリ113のデバイス値の読み出しを要求するため、エンジニアリングツール500がCPUユニット100に送信するコマンドのことをいう。また、CPUユニット100がモニタ要求に応答してエンジニアリングツール500に送信するレスポンスをモニタ応答という。CPUユニット100は、モニタ応答に、指定されたデバイス値をセットして、エンジニアリングツール500に送信する。
The monitor request is a command transmitted by the
CPUユニット100は、モニタ応答として、1回のスキャンが終わった時点のデバイス値をエンジニアリングツール500に送信する機能を備える。なお、この機能は、CPUユニット100が従来備えている機能である。
The
さらに、CPUユニット100は、モニタ応答として、ループ処理により逐次更新されたデバイス値の更新履歴をエンジニアリングツール500に送信する機能を備える。この機能は、実施の形態に係るCPUユニット100において特徴的な機能である。ループ処理とは、特定の条件下において特定の処理を繰り返す処理のことをいう。なお、ループ処理のことを単にループという場合もある。モニタ要求の詳細については後述する。
Further, the
入力ユニット200には、検出器901が接続されている。入力ユニット200は、検出器901から供給されたオン/オフを示す入力信号を決められた信号レベルに変換し、変換した入力信号をCPUユニット100に入力する。出力ユニット300には、被制御機器902が接続されている。出力ユニット300は、CPUユニット100から供給されたオン/オフを示す出力信号を決められた信号レベルに変換し、変換した出力信号を被制御機器902に出力する。
A
ベースユニット400には、CPUユニット100と入力ユニット200と出力ユニット300とが装着される。CPUユニット100と入力ユニット200と出力ユニット300とは、ベースユニット400を介して不図示の電源ユニットに接続され、電源ユニットから供給される電力によって動作する。また、CPUユニット100と入力ユニット200と出力ユニット300とは、共有バス410を介して相互に接続され、共有バス410を介して通信を行う。
The
また、プログラマブルロジックコントローラ1のCPUユニット100には、開発ツールであるエンジニアリングツール500を接続することが可能である。エンジニアリングツール500の構成については後述する。
Further, the
図1に示すCPUユニット100はハードウェア構成として、各種のプログラム及びデータを記憶するメモリ110と、入力ユニット200及び出力ユニット300と通信を行う入出力インタフェース120と、エンジニアリングツール500と通信を行うツール用インタフェース130と、CPUユニット100全体を制御する演算装置140とを有する。メモリ110と入出力インタフェース120とツール用インタフェース130とはバス190を介して演算装置140に接続されており、演算装置140と通信する。
The
メモリ110は、揮発性メモリと不揮発性メモリとを含み、各種プログラムと、プログラムの実行時に使用されるデータとを記憶する。メモリ110には、スキャンタイム毎に実行されるユーザプログラム111と、エンジニアリングツール500から受信したモニタ要求に応答するためのモニタ応答プログラム112とが格納される。ユーザプログラム111は本発明のプログラムの一例である。
The
メモリ110は、さらにデバイスメモリ113を含む。デバイスメモリ113は、ユーザプログラム111の入力値及び出力値を格納するメモリ上の領域である。ユーザプログラム111の入力値は検出器901からCPUユニット100に供給された入力信号を示す値であり、ユーザプログラム111の出力値は被制御機器902に供給される出力信号を示す値である。デバイスメモリ113に格納される入力値及び出力値をデバイス値ということがある。デバイスメモリを単にデバイスと呼ぶこともある。
The
デバイス値は、データの種類に応じた領域に格納される。例えば、入力信号の値が格納されている領域を「X」、出力信号の値が格納されている領域を「Y」、その他の値が格納されている領域を「D」と定義する。「X」、「Y」、「D」のそれぞれの領域には複数のデバイス値が格納されており、各デバイス値には、当該領域において何番目のデータであるかを示す番号が割り当てられている。例えば、「X」の領域の先頭の番号を「1」とした場合、「X100」に格納されたデータは、「X」の領域における100番目のデータである。 The device value is stored in the area according to the type of data. For example, the area where the value of the input signal is stored is defined as "X", the area where the value of the output signal is stored is defined as "Y", and the area where other values are stored is defined as "D". A plurality of device values are stored in each of the areas of "X", "Y", and "D", and each device value is assigned a number indicating the number of data in the area. There is. For example, when the first number of the "X" area is "1", the data stored in the "X100" is the 100th data in the "X" area.
ユーザプログラム111は、プログラマブルロジックコントローラ1に被制御機器902を制御させるため、ユーザが作成したプログラムである。ユーザプログラム111は、演算装置140により実行される。例えば、演算装置140は、ユーザプログラム111を実行して、検出器901から供給された入力信号が示す値を使用した演算を行い、演算結果を示す値に基づく出力信号を被制御機器902に供給する。
The
モニタ応答プログラム112は、CPUユニット100がエンジニアリングツール500からモニタ要求を受信した場合に、エンジニアリングツール500から指定されたデバイス値を含めたモニタ応答をエンジニアリングツール500に送信するためのプログラムである。
The
具体的には、モニタ応答プログラム112は、CPUユニット100が、エンジニアリングツール500から1回のスキャンが終わった時点のデバイス値が要求された場合には、指定されたデバイス値をエンジニアリングツール500に送信するためのプログラムである。さらに、モニタ応答プログラム112は、CPUユニット100が、エンジニアリングツール500からループ処理によって更新されたデバイス値の更新履歴が要求された場合には、ユーザプログラム111に含まれているループ処理を抽出し、ループ処理内で更新されたデバイス値の更新履歴をエンジニアリングツール500に送信するためのプログラムである。モニタ応答プログラム112は演算装置140により実行される。
Specifically, the
入出力インタフェース120は、CPUユニット100が入力ユニット200及び出力ユニット300と通信するための通信インタフェースである。入出力インタフェース120は、演算装置140から供給されたデータを電気信号に変換し、変換した信号を共有バス410を介して出力ユニット300に送信する。また、入出力インタフェース120は、入力ユニット200から受信した電気信号をデータに復元して演算装置140に出力する。
The input /
ツール用インタフェース130は、CPUユニット100が後述のエンジニアリングツール500と通信するための通信インタフェースである。ツール用インタフェース130は、演算装置140から供給されたデータを電気信号に変換し、変換した信号を通信ケーブル905を介してエンジニアリングツール500に送信する。また、ツール用インタフェース130は、エンジニアリングツール500から受信した電気信号をデータに復元して演算装置140に出力する。
The
演算装置140は、MPU(Micro Processing Unit)を有し、メモリ110に記憶される各種プログラムを実行して、CPUユニット100の各種機能を実現する。例えば、演算装置140は、スキャンタイム毎にユーザプログラム111を実行する。また、演算装置140は、モニタ応答プログラム112を実行して、エンジニアリングツール500にモニタ応答を送信する。
The
エンジニアリングツール500は、パーソナルコンピュータに専用のアプリケーションをインストールした開発ツールである。エンジニアリングツール500は、CPUユニット100のデバイス値をモニタする機能を有している。よって、ユーザは、エンジニアリングツール500を使用してCPUユニット100のデバイスメモリ113をモニタすることができる。エンジニアリングツール500は、さらに、プログラムの作成機能を有していてもよい。エンジニアリングツール500は、本発明の外部機器の一例である。
The
エンジニアリングツール500は、ハードウェア構成として、プログラム及びデータを記憶するメモリ510と、ユーザの入力操作を検出する入力装置520と、画像を出力する出力装置530と、CPUユニット100と通信する通信インタフェース540と、エンジニアリングツール500全体を制御する演算装置550とを有する。エンジニアリングツール500の各部はバス590により接続されている。
As a hardware configuration, the
メモリ510は、揮発性メモリと不揮発性メモリとを含み、各種プログラムと、プログラムの実行時に使用されるデータとを記憶する。実施の形態においては、メモリ510は、CPUユニット100のデバイス値をモニタするためのモニタ用プログラム511を記憶する。
The
また、メモリ510は、デバイスの種類毎のデータ長が定義されたデバイス定義情報512を記憶する。デバイス定義情報512は、デバイスメモリのそれぞれの領域について、デバイスの種類と1つのデータのデータ長とが定義された情報である。例えば、「X」、「Y」のデバイスについて、デバイスの種類が「ビットデバイス」であり、デバイス値のデータ長が1ビットであると定義されている。「D」のデバイスについて、デバイスの種類が「ワードデバイス」であり、デバイス値のデータ長が2バイト(16ビット)であると定義されている。
Further, the
入力装置520は、キーボード、マウス等の入力装置を含み、ユーザの入力操作を検出し、検出したユーザの入力操作を示す信号を演算装置550に供給する。出力装置530は、ディスプレイを含み、演算装置550から供給された信号に基づいた画像をディスプレイに表示する。通信インタフェース540は、通信ケーブル905を介してCPUユニット100のツール用インタフェース130と通信する。通信インタフェース540は、演算装置550から供給されたデータを電気信号に変換し、変換した信号を通信ケーブル905を介してCPUユニット100に送信する。また、通信インタフェース540は、CPUユニット100から受信した電気信号をデータに復元して演算装置550に出力する。
The
演算装置550は、CPUを有し、メモリ110に記憶された各種プログラムを実行して、エンジニアリングツール500の各種機能を実現する。実施の形態においては、演算装置550は、モニタ用プログラム511を実行して、CPUユニット100にデバイスメモリ113のモニタ要求を送信し、CPUユニット100から受信したモニタ応答の内容を出力装置530のディスプレイに表示する。
The
続いて図2を参照しながら、CPUユニット100の機能的な構成を説明する。CPUユニット100は、機能的には、デバイス値を記憶するデバイスデータ記憶部101と、ループ処理において更新されるデバイス値を記憶する履歴データ記憶部102と、ユーザプログラム111を実行する実行部103と、デバイス値のモニタに係る処理を行うコマンド処理部104と、指定されたデバイス値の値をループ処理において順次取得するループモニタ部105と、エンジニアリングツール500とコマンドの送受信を行うコマンド送受信部106とを備える。
Subsequently, the functional configuration of the
図2に示すデバイスデータ記憶部101は、今回のスキャンタイムにおけるユーザプログラム111の入力値及び出力値、即ちデバイス値を記憶する。I/Oリフレッシュにより、デバイスデータ記憶部101には、入力ユニット200から供給されたユーザプログラム111の入力値が書き込まれる。さらに、ユーザプログラム111の実行により、デバイスデータ記憶部101には、ユーザプログラム111の実行により出力された出力値が書き込まれる。デバイスデータ記憶部101の機能は、図1に示すメモリ110のデバイスメモリ113により実現される。図2に示すデバイスデータ記憶部101は本発明のデバイス記憶手段の一例である。
The device
履歴データ記憶部102は、ループ処理において更新されるデバイス値の履歴を記憶する。履歴データ記憶部102には、後述するループモニタ部105によりデバイス値が書き込まれる。履歴データ記憶部102の機能は、図1に示すメモリ110により実現される。図2に示す履歴データ記憶部102は本発明の履歴記憶手段の一例である。
The history
実行部103は、スキャンタイム毎にユーザプログラム111を実行する。具体的には実行部103は、デバイスデータ記憶部101に格納されている入力信号を示す値に応じて、ユーザプログラム111の各命令を実行し、演算結果をデバイスデータ記憶部101に格納する。実行部103はユーザプログラム111の最後の命令であるEND命令を実行した後、END命令を実行したことをコマンド処理部104に通知する。実行部103の機能は、図1の演算装置140により実現される。図2に示す実行部103は本発明の実行手段の一例である。
The
コマンド処理部104は、実行部103からユーザプログラム111の最後の命令であるEND命令を実行した旨の通知を受けると、エンジニアリングツール500からモニタ要求を受信している場合には、モニタ応答をエンジニアリングツール500に返すための処理を行う。コマンド処理部104の機能は、図1の演算装置140により実現される。図2に示すコマンド処理部104は本発明の要求処理手段の一例である。
When the
実施の形態においては、CPUユニット100がエンジニアリングツール500から受信するモニタ要求には、(1)スキャン後のデバイス値を要求するモニタ要求と、(2)ループ処理において更新されたデバイス値の更新履歴を要求するモニタ要求とが含まれる。
In the embodiment, the monitor request received by the
(1)スキャン後のデバイス値を要求するモニタ要求
スキャン後のデバイス値を要求するモニタ要求は、実行部103がユーザプログラム111のEND命令を実行したときに、デバイスデータ記憶部101に格納されているデバイス値を要求するものである。以下、スキャン後のデバイス値を要求するモニタ要求をノーマルモニタ要求と称する。ノーマルモニタ要求には、デバイスの領域を特定する値と、当該領域において読み出す範囲を示す開始番号及び終了番号とが含まれている。(1) Monitor Request for Requesting Device Value after Scanning A monitor request for requesting a device value after scanning is stored in the device
コマンド処理部104は、ユーザプログラム111の1スキャンの実行が終わった時点で、エンジニアリングツール500からノーマルモニタ要求を受信している場合、ノーマルモニタ要求に対するモニタ応答として、ノーマルモニタ要求で指定された順序でデバイス値をデバイスデータ記憶部101から読み出し、読み出したデバイス値をコマンド送受信部106に出力する。
When the
例えば、ノーマルモニタ要求で、デバイス「X」の開始番号「100」から終了番号「150」までのデバイス値と、デバイス「D」の開始番号「50」から終了番号「100」までのデバイス値とが要求されたとする。この場合、コマンド処理部104は、「X100」から「X150」のデバイス値と「D50」から「D100」のデバイス値とをこの順序で並べた状態のデータをコマンド送受信部106に出力する。
For example, in a normal monitor request, a device value from the start number "100" to the end number "150" of the device "X" and a device value from the start number "50" to the end number "100" of the device "D". Is requested. In this case, the
(2)ループ処理において更新されたデバイス値の更新履歴を要求するモニタ要求
ループ処理において更新されたデバイス値の更新履歴を要求するモニタ要求は、実行部103がユーザプログラム111のループ処理内で繰り返し更新されたデバイスデータ記憶部101のデバイス値の更新履歴を要求するものである。以下、ループ処理において更新されたデバイス値の更新履歴を要求するモニタ要求をループモニタ要求と称する。ループモニタ要求には、デバイスの領域を特定する値と、当該領域において読み出す範囲を示す開始番号及び終了番号と、デバイス値のデータ長を示す値とが含まれている。(2) Monitor request for requesting update history of device values updated in loop processing A monitor request for requesting update history of device values updated in loop processing is repeated by the
まず、図3のユーザプログラムの一例を参照して、ループ処理によりデバイス値を更新する例を示す。ループ処理では指定された回数だけ決められた処理を繰り返す。図3に示す例では、「FOR 60…NEXT」はループを60回繰り返す命令であることを示す。「FOR 60…NEXT」のループ内の「MOV X101 D1」は、「X101」の値を「D1」に格納する命令であることを示す。これらの命令により、実行部103は、X101の値をD1に格納する処理を60回繰り返す。
First, an example of updating the device value by loop processing is shown with reference to an example of the user program of FIG. In the loop process, the specified process is repeated a specified number of times. In the example shown in FIG. 3, "FOR 60 ... NEXT" indicates that the instruction repeats the
例えば、ループモニタ要求により、D1のデバイス値の履歴を読み出すことが要求されたとする。この場合、後述のループモニタ部105が、60回繰り返されるループにおいてD1に格納された値の履歴を履歴データ記憶部102に格納する。コマンド処理部104は、履歴データ記憶部102に格納されたデータをエンジニアリングツール500に返すため、当該データをコマンド送受信部106に出力する。
For example, suppose that a loop monitor request requests that the history of the device value of D1 be read. In this case, the
図3に示す「FOR 40…NEXT」はループを40回繰り返すことを示す。「FOR 40…NEXT」のループ内の「MOV X102 D2」は、「X102」の値を「D2」に格納する命令であることを示す。これらの命令により、実行部103は、X102の値をD2に格納する処理を40回繰り返す。
“FOR 40 ... NEXT” shown in FIG. 3 indicates that the loop is repeated 40 times. "MOV X102 D2" in the loop of "FOR 40 ... NEXT" indicates that it is an instruction to store the value of "X102" in "D2". By these instructions, the
例えば、モニタ要求により、D2のデバイス値の履歴を読み出すことが要求されたとする。この場合、ループモニタ部105が、40回繰り返されるループにおいてD2に格納された値の履歴を履歴データ記憶部102に格納する。コマンド処理部104は、履歴データ記憶部102に格納されたデータをエンジニアリングツール500に返すため、当該データをコマンド送受信部106に出力する。
For example, suppose that a monitor request requests that the history of the device value of D2 be read. In this case, the
また、「FOR 40…NEXT」のループ内の「BREAK」は、ループを中断する命令であることを示す。ここで、実行部103は入力値「X150」によって接点がオンした場合に「BREAK」を実行する。「BREAK」が実行されることにより、「FOR 40…NEXT」のループが中断される。この結果、実行部103は、「FOR 40…NEXT」のループを抜けて、ループの次の命令を実行する。ループが中断された場合、ループモニタ部105は、ループが中断されるまでのD2のデバイス値の履歴を履歴データ記憶部102に格納する。コマンド処理部104は、履歴データ記憶部102に格納されたデータをエンジニアリングツール500に返す。なお、入力値「X150」によって接点がオンしない場合には、「BREAK」が実行されない。
Further, "BREAK" in the loop of "FOR 40 ... NEXT" indicates that the instruction is to interrupt the loop. Here, the
具体的には、図2に示すコマンド処理部104は、エンジニアリングツール500からループモニタ要求を受信した場合、次のスキャンタイムにおけるユーザプログラム111の実行が開始される前に、デバイス値の更新履歴が要求されている旨と、デバイスの領域を特定する値と、当該領域において読み出す範囲を示す開始番号及び終了番号と、デバイス値のデータ長を示す値とをループモニタ部105に出力する。従って、次のスキャンタイムで、後述のループモニタ部105は、指定されたデバイス値の更新履歴を履歴データ記憶部102に格納する。例えば、指定されたデバイス値が、5回繰り返されるループ内で更新された場合、ループモニタ部105は、更新後の5つの値を履歴データ記憶部102に格納する。
Specifically, when the
スキャンが終了すると、コマンド処理部104は、履歴データ記憶部102に格納されている読み出したデバイス毎のデータ件数と、履歴データ記憶部102から読み出したデバイス値の更新履歴のデータとをコマンド送受信部106を介してエンジニアリングツール500に送信する。その後、コマンド処理部104は、履歴データ記憶部102に格納されたデバイス値の履歴を削除する。
When the scan is completed, the
ループモニタ部105は、コマンド処理部104からデバイス値の更新履歴が要求されている旨とループモニタ要求で指定されたデバイス値を特定する情報とが供給されると、まず、ユーザプログラム111の次の周期における実行が開始される前にデバイス値を格納するのに必要な領域を履歴データ記憶部102に確保する。具体的には、ループモニタ部105は、ユーザプログラム111の構文解析を行い、指定されたデバイス値が更新されるループを抽出し、指定されたデバイス値及びデータ長とから、ループを1回実行する場合に指定されたデバイス値を格納するのに必要なメモリの記憶容量を算出する。
When the
例えば、ループモニタ要求でデバイスメモリの「D1」、「D2」、「D3」のデバイス値の履歴が要求されているとする。これらのデバイス値のデータ長が2バイトであるとする。ユーザプログラム111内のあるループ内で、デバイス「D1」、「D2」の値がそれぞれ1回ずつ更新される場合は、そのループを1回実行する場合に必要なメモリの記憶容量は4バイトである。さらに、ユーザプログラム111内の他のループ内でデバイス「D2」、「D3」の値がそれぞれ1回更新されるとする。この場合、このループを1回実行する場合にデバイス値を記憶するのに必要なメモリの記憶容量は4バイトである。この場合、ループモニタ部105は、指定されたデバイスが更新されるループを特定する情報と、算出したループ毎のメモリの記憶容量とをメモリ110に記憶しておく必要がある。ループを特定する情報は、例えば、ユーザプログラム111内の各命令の実行順を示すステップ番号である。
For example, suppose that a loop monitor request requests a history of device values of "D1", "D2", and "D3" in the device memory. It is assumed that the data length of these device values is 2 bytes. If the values of the devices "D1" and "D2" are updated once in a loop in the
さらに、ループモニタ部105は、実行部103がユーザプログラム111の各命令を実行している最中であって、ループ処理が開始されるタイミングで、ユーザプログラム111でループを繰り返すよう指定された回数であるループの繰り返し回数を判別する。ループ処理が開始されるタイミングとは、例えば、実行部103がループ処理を示すFOR命令を1回目に実行するタイミングである。ループモニタ部105は、判別したループの繰り返し回数と、予め算出しておいたループを1回実行する場合に必要なメモリの記憶容量とから、ループを実行する場合にデバイス値の履歴を記憶するのに必要なメモリの記憶容量を算出する。その後、ループモニタ部105は、算出したメモリの記憶容量から必要な領域を履歴データ記憶部102に確保する。
Further, the
このように、ループを開始するタイミングで繰り返し回数を判別するのは、ループの開始のタイミングにならないと、実際の繰り返し回数を判別することができないからである。これは、次のような理由による。ユーザプログラム111のループは、入力値によって実行されない場合もあるからである。ユーザプログラム111は、リレーシーケンスの回路を実現するものであり、各命令は、入力値によって、接点がオンしたときに実行される。一方、入力値に応じて接点がオフしたときには命令は実行されない。このため、ループ処理自体が実行されないこともあり得るし、ループ処理内の特定の命令が実行されないこともあり得る。また、繰り返し回数が固定値ではなく、ユーザプログラム111の命令の実行によって動的に決められる回数である場合もあるからである。
In this way, the number of repetitions is determined at the timing of starting the loop because the actual number of repetitions cannot be determined until the timing of starting the loop. This is due to the following reasons. This is because the loop of the
ループモニタ部105は、ループが繰り返されるたび、ループモニタ要求で指定されたデバイス値の更新された値を履歴データ記憶部102に格納する。具体的には、ループモニタ部105は、実行部103により図3に示すNEXT命令が実行されるたびに、ループモニタ要求で指定されたデバイス値を履歴データ記憶部102に格納する。さらに、ループモニタ部105は、ループが繰り返された回数をカウントする。
The
また、実行部103が指定されたデバイス値を更新するループ内で、入力値によりループ中断命令を実行し、ループを抜ける場合がある。ループ中断命令が実行されると、それ以降指定されたデバイス値の更新は繰り返されない。例えば、図3に示す例では、「FOR 40…NEXT」のループ内において、入力値「X150」がオンした場合に、「BREAK」が実行される。この場合、実行部103は、「FOR 40…NEXT」のループを抜けて、ループの次の処理を実行する。
Further, in the loop in which the
図2に示すループモニタ部105は、実行部103がループ中断命令を実行した場合には、ループ開始前に判別した繰り返し回数を修正し、修正した繰り返し回数をデータ件数として履歴データ記憶部102に格納する。例えば、ループモニタ部105が、ループ開始前に繰り返し回数が30回であると判別した場合に、実行部103が、ループを15回繰り返した後に、ループ中断命令を実行したとする。この場合、ループモニタ部105は、繰り返し回数を30回から、15回に修正する。ループモニタ部105が繰り返し回数を修正するのは、次のような理由による。前述のように、コマンド処理部104は、履歴データ記憶部102に格納されたデバイス値とともに、データ件数をエンジニアリングツール500に送信するので、正確なデータ件数が履歴データ記憶部102に格納されている必要がある。ループが中断されなかった場合には、ループモニタ部105は、指定されたデバイス毎に、ループ開始前に判別した繰り返し回数をデータ件数として履歴データ記憶部102に格納する。ループモニタ部105の機能は、図1に示す演算装置140により実現される。ループモニタ部105は本発明の履歴管理手段の一例である。
When the
また、ループモニタ部105に、コマンド処理部104からデバイス値の更新履歴が要求されている旨とループモニタ要求で指定されたデバイス値を特定する情報とが供給されたにもかかわらず、ユーザプログラム111内にループ処理が存在していない場合もある。この場合、ループが繰り返されないため、ループモニタ部105は、データ件数として0件を履歴データ記憶部102に格納する。あるいは、ユーザプログラム111内にループ処理が存在していても、入力値によって接点がオンしないことにより、実行部103がループ処理を実行しない場合もある。この場合も、ループモニタ部105は、データ件数として0件を履歴データ記憶部102に格納する。
Further, despite the fact that the
図2に示すコマンド送受信部106は、エンジニアリングツール500からノーマルモニタ要求又はループモニタ要求を受け付け、受け付けたノーマルモニタ要求またはループモニタ要求をコマンド処理部104に出力する。また、コマンド送受信部106は、コマンド処理部104から供給されたデバイス値を含むデータにヘッダを付加したモニタ応答をエンジニアリングツール500に送信する。コマンド送受信部106の機能は、図1のツール用インタフェース130と演算装置140とにより実現される。
The command transmission /
続いて、図2を参照しながらエンジニアリングツール500の機能的な構成を説明する。エンジニアリングツール500は、機能的には、CPUユニット100とコマンドの送受信を行うコマンド送受信部501と、ユーザが指定したデバイス値のモニタ要求を生成するモニタ要求部502と、モニタ応答の内容を表示する表示部503とを備える。
Subsequently, the functional configuration of the
コマンド送受信部501は、モニタ要求部502から供給されたモニタ要求の内容を示すデータにヘッダを付加したモニタ要求をCPUユニット100に送信する。
The command transmission /
さらに、コマンド送受信部501は、CPUユニット100からモニタ応答を受け付け、受け付けたモニタ応答をモニタ要求部502に出力する。コマンド送受信部501の機能は、図1の通信インタフェース540と演算装置550とにより実現される。
Further, the command transmission /
モニタ要求部502は、ユーザの入力操作を受け付け、ユーザの入力操作が示すデバイス値のモニタ要求の内容を示すデータを生成し、生成したモニタ要求の内容を示すデータをコマンド送受信部501に出力する。モニタ要求部502が生成したループモニタ要求の内容を示すデータには、ユーザが指定したデバイスの領域を特定する値と、開始番号及び終了番号と、デバイス定義情報512において定義されたデバイス値のデータ長を示す値とが含まれている。
The
また、モニタ要求部502は、コマンド送受信部501を介して、CPUユニット100からモニタ応答を受信すると、次のような処理を行う。モニタ要求部502は、モニタ応答に含まれているデータ件数と、デバイス定義情報512において定義されたデバイス値のデータ長とからモニタ応答のデータを格納するのに必要なメモリの記憶容量を算出する。モニタ要求部502は、算出したメモリの記憶容量からモニタ応答のデータを格納するのに必要な領域をメモリ510に確保する。その後、モニタ要求部502は、モニタ応答のデータを、確保したメモリ510の領域に格納し、表示部503にモニタ応答のデータをメモリ510に格納した旨を通知する。
Further, when the
表示部503は、メモリ510に格納されたモニタ応答のデータを出力装置530のディスプレイに表示する。表示部503の機能は、図1の出力装置530と演算装置550とにより実現される。
The
続いて、ユーザがエンジニアリングツール500を使用してCPUユニット100のデバイス値をモニタする方法を説明する。ユーザは、図1に示すように、エンジニアリングツール500とCPUユニット100とを通信ケーブル905を介して相互に接続した状態で、キーボード、マウス等の入力装置520を操作して、モニタ用プログラム511を起動する。演算装置550は、ユーザの操作に応答してモニタ用プログラム511を実行し、以下の機能を実現する。
Subsequently, a method for the user to monitor the device value of the
演算装置550は、図4Aに示すようなデバイスモニタの入力画面を出力装置530に表示する。入力画面において、ユーザは、モニタしたいデバイスの領域を選択し、選択された領域における範囲を示す開始番号及び終了番号を入力することができる。さらに、ユーザは、「ループ処理内におけるデバイス値の履歴を出力する。」のチェックボックスのチェックの有無により、スキャン後のデバイス値を要求するのか、ループ処理において更新されたデバイス値の更新履歴を要求するのかを指定することができる。ユーザが、図4Aに示す画面上において、キーボード、マウス等の入力装置520を操作して、モニタしたいデバイスを選択し、当該領域における範囲を示す開始番号及び終了番号を入力し、「送信」ボタンを押したとする。
The
演算装置550は、ユーザの操作に応答して、選択されたデバイスの領域を特定する値と、当該領域において読み出す範囲を示す開始番号及び終了番号とを含むモニタ要求をCPUユニット100に送信する。図示する例では、チェックボックスがオフであるため、演算装置550は、「X100」から「X150」のデバイス値と、「D50」から「D100」のデバイス値を要求する旨のノーマルモニタ要求をCPUユニット100に送信する。これに応答して、CPUユニット100は、ノーマルモニタ要求で指定されたデバイス値を読み出し、読み出したデバイス値を含むモニタ応答をエンジニアリングツール500に送信する。ここでは、CPUユニット100は、図2に示すデバイスデータ記憶部101から「X100」から「X150」のデバイス値と、「D50」から「D100」のデバイス値を、指定された順序で読み出し、読み出したデバイス値をエンジニアリングツール500に送信する。
In response to the user's operation, the
演算装置550は、CPUユニット100からモニタ応答を受信すると、図4Bに示すようなデバイスモニタの結果画面を出力装置530に表示する。図示する例では、演算装置550は、CPUユニット100から受信したデバイス値とともに、ユーザが入力した開始番号及び終了番号に基づいて、各デバイス値が「X」の領域における何番目のデータであるかを示すデバイスの番号を併せて表示する。また、ユーザが「保存」ボタンを押した場合には、演算装置550は、CPUユニット100から受信したモニタ応答に含まれるデバイス値をメモリ510に保存する。
When the
また、ユーザが、図5Aに示すように、入力画面において、モニタしたいデバイスの領域を選択し、選択された領域における範囲を示す開始番号及び終了番号を入力して、「ループ処理内におけるデバイス値の履歴を出力する。」のチェックボックスをオンにして「送信」ボタンを押したとする。この場合、演算装置550は、「Y100」及び「Y201」のデバイス値を要求する旨のループモニタ要求をCPUユニット100に送信する。これに応答して、CPUユニット100は、ループモニタ要求で指定されたデバイス値の履歴を履歴データ記憶部102に格納する。CPUユニット100は、履歴データ記憶部102から読み出したデバイス値を含むモニタ応答をエンジニアリングツール500に送信する。ここでは、CPUユニット100は、図2に示す履歴データ記憶部102から「Y100」及び「Y201」の更新履歴のデータを更新された順序で読み出し、読み出したデバイス値をセットしたモニタ応答をエンジニアリングツール500に送信する。
Further, as shown in FIG. 5A, the user selects the area of the device to be monitored on the input screen, inputs the start number and the end number indicating the range in the selected area, and "device value in the loop processing". It is assumed that the check box of "Output the history of" is selected and the "Send" button is pressed. In this case, the
演算装置550は、CPUユニット100からモニタ応答を受信すると、図5Bに示すようなデバイスモニタの結果画面を出力装置530に表示する。図示する例では、演算装置550は、各デバイス値が何回目のループで更新されたデータであるかを示す番号を併せて表示する。また、ユーザが「保存」ボタンを押した場合には、演算装置550は、CPUユニット100から受信したモニタ応答に含まれるデバイス値をメモリ510に保存する。
When the
次に、CPUユニット100が、エンジニアリングツール500からモニタ要求を受け付けた場合に、モニタ応答をエンジニアリングツール500に返すモニタ応答処理を説明する。以下の処理は、図1に示す演算装置140がモニタ応答プログラム112を実行することで実現される。
Next, when the
演算装置140は、ユーザプログラム111をスキャンタイム毎に実行しており、ユーザプログラム111のEND命令を実行した後に、モニタ要求を受信したか否かを判別する。演算装置140は、エンジニアリングツール500からモニタ要求を受信したと判別した場合に、以下のモニタ応答処理を開始する。演算装置140は、ユーザプログラム111の実行と並行してモニタ応答処理を行うものとする。
The
図6Aに示すように、演算装置140は、エンジニアリングツール500からループモニタ要求を受信したか否かを判別する(ステップS11)。演算装置140は、ループモニタ要求を受信したと判別すると(ステップS11;Yes)、ループを1回実行する場合のメモリの記憶容量を算出する(ステップS12)。具体的には、演算装置140は、ユーザプログラム111の構文解析を行い、モニタ要求で指定されたデバイス値が更新されるループを抽出し、モニタ要求で指定されたデバイス値のデータ長からループを1回実行する場合にデバイス値の更新履歴のデータを格納するのに必要なメモリの記憶容量を判別する。演算装置140は、抽出したループを特定するための情報と、そのループを実行した場合に必要なメモリの記憶容量をメモリ110に格納する。
As shown in FIG. 6A, the
演算装置140は、次の周期として設定されたタイミングで、ユーザプログラム111の実行を開始する。演算装置140は、ユーザプログラム111の各命令を順次実行し、ループモニタ要求で指定されたデバイス値が更新されるループを開始すると判別すると(ステップS13;Yes)、ステップS14の処理を実行する。ステップS14で、演算装置140は、指定されたループの繰り返し回数を判別し、ループの繰り返し回数と、ステップS12で算出したループ1回あたりに必要なメモリの記憶容量とから、そのループを全て実行した場合に必要なメモリの記憶容量を算出し、更新履歴のデータを格納するために、算出した記憶容量の領域をメモリ110に確保する(ステップS14)。さらに、演算装置140は、デバイスが更新されるループを特定するための情報とループの繰り返し回数とをメモリ110に格納する。
The
演算装置140は、ループ内の命令を実行する(ステップS15)。演算装置140は、ステップS15で中断命令を実行したか否かを判別する(ステップS16)。演算装置140は、中断命令を実行していないと判別すると(ステップS16;No)、ループモニタ要求で指定されたデバイス値をメモリ110に格納する(ステップS17)。例えば、演算装置140は、当該ループを1回実行した時点で、指定されたデバイス値をメモリ110の更新履歴のデータを格納するために確保された領域に格納する。さらに、演算装置140は、ループを実行した回数をカウントし、カウントした値をメモリ110に格納する。演算装置140は、ループをステップS14で判別した繰り返し回数だけ繰り返していないと判別すると(ステップS18;No)、再びステップS15の処理を実行する。
The
演算装置140は、ステップS16において、中断命令を実行したと判別すると(ステップS16;Yes)、ループの繰り返し回数を修正する(ステップS19)。例えば、演算装置140は、今回のループで、指定されたデバイス値を更新する前に中断命令を実行した場合には、ステップS14で算出し、メモリ110に格納したデバイス毎のループの繰り返し回数を、実際にループを繰り返した回数をカウントした値で修正する。演算装置140は、今回のループで、指定されたデバイス値を更新した後に中断命令を実行した場合には、ステップS14で算出したデバイス毎のループの繰り返し回数を、実際にループを繰り返した回数をカウントした値に1を加算した値で修正する。
When the
また、演算装置140は、ステップS17を実行した後、命令を指定された回数実行したと判別し(ステップS18;Yes)、END命令を実行すると(ステップS20;Yes)、メモリ110に格納されているデバイス値の更新履歴のデータとデータ件数とをエンジニアリングツール500に送信する(ステップS21)。その後、演算装置140は、メモリ110に格納されているデバイス値の更新履歴のデータを削除し、確保した領域を解放し、モニタ応答処理を終了する。
Further, after executing step S17, the
一方、ステップS11で、演算装置140は、エンジニアリングツール500からループモニタ要求を受信していないと判別すると(ステップS11;No)、即ち、ノーマルモニタ要求を受信した場合、図6Bに示すように、ユーザプログラム111の命令を順次実行し(ステップS22)、END命令を実行してから(ステップS23;Yes)、メモリ110に格納されているスキャン後のデバイス値をエンジニアリングツール500に送信する(ステップS24)。
On the other hand, in step S11, when the
以上説明したように、実施の形態に係るプログラマブルロジックコントローラ1においては、プログラムの繰り返し処理において書き換えられるデバイス値をモニタすることができる。よって、ユーザは、プログラムをデバッグする際に、従来のように、プログラムにデバッグ用のコードを追加したり、プログラムの実行を随時中断したりする必要がない。これにより、プログラムの開発工数を減らすことが可能である。
As described above, in the
(変形例)
実施の形態においては、CPUユニット100は、モニタ応答として、データ件数とデータとをエンジニアリングツール500に送信したが、これに限られない。例えば、CPUユニット100は、モニタ応答の送信前に、データ件数をエンジニアリングツール500に通知するようにしてもよい。この場合、エンジニアリングツール500の演算装置550は、通知されたデータ件数から、ループ処理による更新履歴のデータを格納するのに必要なメモリ容量を算出し、メモリ510に更新履歴のデータを格納することが可能であるか否か判別することができる。または、CPUユニット100は、モニタ応答の送信前に、データ件数から算出した更新履歴のデータを格納するのに必要なメモリ容量をエンジニアリングツール500に通知するようにしてもよい。(Modification example)
In the embodiment, the
演算装置550は、更新履歴のデータをメモリ510に格納することができると判別した場合、モニタ応答の受信が可能である旨の通知をCPUユニット100に送信してもよい。一方、演算装置550は、更新履歴のデータをメモリ510に格納することができないと判別した場合、モニタ応答の受信をキャンセルする旨の通知をCPUユニット100に送信してもよい。このような構成の場合、CPUユニット100から、エンジニアリングツール500に対して、エンジニアリングツール500のメモリ510に格納することができないほどの大容量のデータが送信されることを防止することができる。
When the
また、あるいは、エンジニアリングツール500の演算装置550は、モニタ要求を送信するときに、モニタ応答のデータの件数について事前の通知が必要か否かを示す情報をセットして、モニタ要求をCPUユニット100に送信するようにしてもよい。この場合、CPUユニット100は、データ件数の事前の通知が必要である場合のみ、モニタ応答の送信前に、データ件数をエンジニアリングツール500に通知するようにしてもよい。
Alternatively, the
あるいは、演算装置550は、CPUユニット100から通知されたデータ件数又はメモリ容量から、更新履歴のデータの全部を受信できないと判別した場合には、一部のデータを受信することができることをCPUユニット100に通知するようにしてもよい。例えば、演算装置550は、更新履歴のデータの前半の半分だけ受信する、あるいは、更新履歴のデータの後半の半分だけ受信するようにしてもよい。この場合、演算装置550は、ユーザに指定された範囲のデータを受信するようにしてもよい。
Alternatively, if the
例えば、演算装置550は、算出したメモリの記憶容量を確保することが不可能であると判別した場合、図7に示すように、指定したデバイス値の履歴を全件取得することが不可能であることを示すメッセージを出力装置530のディスプレイに表示する。図示する例では、演算装置550は、CPUユニット100から通知された件数が5000件であることとともに、受信の方法の選択肢を表示している。ここでは、選択肢として、データの前半の半分だけを受信すること、データの後半の半分だけを受信すること、ループモニタ要求をキャンセルすることが挙げられている。ここで、ユーザが、入力装置520を操作していずれかの選択肢を選択し、「送信」を押したとする。
For example, when the
演算装置550は、ユーザが選択した選択肢を示す指示を、CPUユニット100に送信する。ユーザが、「前半の2500件を受信する」を選択した場合、演算装置550は、CPUユニット100に前半の2500件を受信する旨の通知を送信する。さらに、演算装置550は、2500件のデータを受信するのに必要なメモリの記憶容量を算出し、メモリ510に算出したメモリの記憶容量の領域を確保する。この場合、CPUユニット100は、エンジニアリングツール500からの通知に応じたデータをエンジニアリングツール500に送信する。あるいは、ユーザが、「後半の2500件を受信する」を選択した場合、演算装置550は、CPUユニット100に後半の2500件を受信する旨の通知を送信する。さらに、演算装置550は、2500件のデータを受信するのに必要なメモリの記憶容量を算出し、メモリ510に算出したメモリの記憶容量の領域を確保する。この場合、CPUユニット100は、エンジニアリングツール500からの通知に応じたデータをエンジニアリングツール500に送信する。または、ユーザが「モニタ要求をキャンセルする」を選択した場合、演算装置550は、CPUユニット100にモニタ要求をキャンセルする旨の通知を送信する。この場合、CPUユニット100はエンジニアリングツールにデータを送信しない。
The
実施の形態においては、デバイス値をモニタするための外部機器として、エンジニアリングツール500を例に説明したが、外部機器は、プログラマブル表示器であってもよいし、あるいは、CPUユニット100と通信可能な他の情報処理装置であってもよい。
In the embodiment, the
実施の形態においては、図3に示すように繰り返し処理を示す命令として「FOR…NEXT」の例を説明したが、繰り返し処理の命令はこれに限られない。繰り返し処理の他の命令としては、例えば、「DO…WHILE」がある。この場合、ループモニタ部105は、実行部103がDO命令を1回目に実行したときに、ループ処理が開始されたと判別する。ループモニタ部105は、実行部103がWHILE命令を1回目に実行したタイミングで、ループの繰り返し回数を判別し、必要なメモリの記憶容量を算出し、デバイス値を格納するのに必要な領域を履歴データ記憶部102に確保する。さらに、ループモニタ部105は、デバイス値を履歴データ記憶部102に格納すればよい。
In the embodiment, as shown in FIG. 3, an example of "FOR ... NEXT" has been described as an instruction indicating the iterative processing, but the instruction for the iterative processing is not limited to this. As another instruction of the iterative process, for example, there is "DO ... WHILE". In this case, the
実施の形態においては、ユーザは、エンジニアリングツール500を使用して、デバイス値を指定して、更新履歴のモニタ要求をCPUユニット100に出したが、これに限られない。ユーザは、ループと、デバイス値とを指定してモニタ要求をCPUユニット100に出してもよい。この場合、同じデバイス値が複数のループで更新される場合であっても、指定されたループ内における更新履歴だけをモニタすることができる。
In the embodiment, the user uses the
上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。 As the recording medium for recording the above program, a computer-readable recording medium including a magnetic disk, an optical disk, a magneto-optical disk, a flash memory, a semiconductor memory, and a magnetic tape can be used.
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。 The present invention allows for various embodiments and modifications without departing from the broad spirit and scope. Moreover, the above-described embodiment is for explaining the present invention, and does not limit the scope of the present invention. That is, the scope of the present invention is indicated not by the embodiment but by the claims. Then, various modifications made within the scope of the claims and the equivalent meaning of the invention are considered to be within the scope of the present invention.
1 プログラマブルロジックコントローラ、100 CPUユニット、101 デバイスデータ記憶部、102 履歴データ記憶部、103 実行部、104 コマンド処理部、105 ループモニタ部、106,501 コマンド送受信部、110,510 メモリ、111 ユーザプログラム、112 モニタ応答プログラム、113 デバイスメモリ、120 入出力インタフェース、130 ツール用インタフェース、140,550 演算装置、190,590 バス、200 入力ユニット、300 出力ユニット、400 ベースユニット、410 共有バス、500 エンジニアリングツール、502 モニタ要求部、503 表示部、511 モニタ用プログラム、512 デバイス定義情報、520 入力装置、530 出力装置、540 通信インタフェース、901 検出器、902 被制御機器、905 通信ケーブル 1 Programmable logic controller, 100 CPU unit, 101 device data storage unit, 102 history data storage unit, 103 execution unit, 104 command processing unit, 105 loop monitor unit, 106,501 command transmission / reception unit, 110,510 memory, 111 user program , 112 monitor response program, 113 device memory, 120 input / output interface, 130 tool interface, 140,550 arithmetic unit, 190,590 bus, 200 input unit, 300 output unit, 400 base unit, 410 shared bus, 500 engineering tool , 502 monitor request unit, 503 display unit, 511 monitor program, 512 device definition information, 520 input device, 530 output device, 540 communication interface, 901 detector, 902 controlled device, 905 communication cable.
上記目的を達成するため、本発明のプログラマブルロジックコントローラにおいて、実行手段は、設定された周期毎にプログラムを実行する。デバイス記憶手段は、プログラムの入力値及び出力値を含むデバイス値を記憶する。履歴記憶手段は、デバイス値の更新履歴を記憶する。履歴管理手段は、プログラム内にループ処理があるか否かを判別し、プログラム内にループ処理がある場合に、実行手段がループ処理内の命令を実行することにより更新したデバイス値の更新履歴として、ループ処理の繰り返し回数分の更新されたデバイス値を履歴記憶手段に格納する。 In order to achieve the above object, in the programmable logic controller of the present invention, the execution means executes a program at a set cycle. The device storage means stores device values including input values and output values of the program. The history storage means stores the update history of the device value. History management means determines whether or not there is a loop in a program, if there is a loop in the program, the update history of the updated device value by executing means executes an instruction in the loop As a result, the updated device values corresponding to the number of times the loop processing is repeated are stored in the history storage means.
本発明のプログラマブルロジックコントローラの履歴管理手段は、プログラムにループ処理があるか否かを判別し、プログラム内にループ処理がある場合に、実行手段がループ処理内の命令を実行することにより更新したデバイス値の更新履歴として、ループ処理の繰り返し回数分の更新されたデバイス値を履歴記憶手段に格納する。このような構成を備えることで、ユーザは煩雑な作業を行うことなく、ループ処理において逐次書き換えられるデバイス値の更新履歴を取得することができ、プログラムのデバッグに係る工数を削減することができる。 The history management means of the programmable logic controller of the present invention determines whether or not the program has loop processing, and if there is loop processing in the program, the executing means updates by executing the instruction in the loop processing. As the update history of the device value, the updated device value corresponding to the number of times the loop processing is repeated is stored in the history storage means. By providing such a configuration, the user can acquire the update history of the device value that is sequentially rewritten in the loop processing without performing complicated work, and the man-hours related to program debugging can be reduced.
上記目的を達成するため、本発明のプログラマブルロジックコントローラにおいて、実行手段は、設定された周期毎にプログラムを実行する。デバイス記憶手段は、プログラムの入力値及び出力値を含むデバイス値を記憶する。履歴記憶手段は、デバイス値の更新履歴を記憶する。履歴管理手段は、プログラムのループ処理内で更新されたデバイス値の更新履歴が要求されると、プログラム内にループ処理があるか否かを判別し、プログラム内にループ処理がある場合に、実行手段がループ処理内の命令を実行することにより更新したデバイス値の更新履歴として、ループ処理の繰り返し回数分の更新されたデバイス値を履歴記憶手段に格納する。 In order to achieve the above object, in the programmable logic controller of the present invention, the execution means executes a program at a set cycle. The device storage means stores device values including input values and output values of the program. The history storage means stores the update history of the device value. When the update history of the device value updated in the loop processing of the program is requested , the history management means determines whether or not there is loop processing in the program, and executes it when there is loop processing in the program. As the update history of the device value updated by the means executing the instruction in the loop processing, the updated device value corresponding to the number of times the loop processing is repeated is stored in the history storage means.
本発明のプログラマブルロジックコントローラの履歴管理手段は、プログラムのループ処理内で更新されたデバイス値の更新履歴が要求されると、プログラム内にループ処理があるか否かを判別し、プログラム内にループ処理がある場合に、実行手段がループ処理内の命令を実行することにより更新したデバイス値の更新履歴として、ループ処理の繰り返し回数分の更新されたデバイス値を履歴記憶手段に格納する。このような構成を備えることで、ユーザは煩雑な作業を行うことなく、ループ処理において逐次書き換えられるデバイス値の更新履歴を取得することができ、プログラムのデバッグに係る工数を削減することができる。 The history management means of the programmable logic controller of the present invention determines whether or not there is loop processing in the program when the update history of the device value updated in the loop processing of the program is requested , and loops in the program. When there is a process, the updated device value corresponding to the number of times the loop process is repeated is stored in the history storage means as the update history of the device value updated by the executing means executing the instruction in the loop process. By providing such a configuration, the user can acquire the update history of the device value that is sequentially rewritten in the loop processing without performing complicated work, and the man-hours related to program debugging can be reduced.
Claims (9)
前記プログラムの入力値及び出力値を含むデバイス値を記憶するデバイス記憶手段と、
前記デバイス値の更新履歴を記憶する履歴記憶手段と、
前記プログラム内にループ処理があるか否かを判別し、前記プログラム内に前記ループ処理がある場合に、前記実行手段が前記ループ処理内の命令を実行することにより更新した前記デバイス値の前記更新履歴を前記履歴記憶手段に格納する履歴管理手段と、
を備えるプログラマブルロジックコントローラ。Execution means to execute the program at each set cycle,
A device storage means for storing device values including input values and output values of the program, and
A history storage means for storing the update history of the device value and
It is determined whether or not there is a loop process in the program, and when the loop process is in the program, the update of the device value updated by the executing means executing an instruction in the loop process. A history management means for storing the history in the history storage means and
Programmable logic controller with.
請求項1に記載のプログラマブルロジックコントローラ。The history management means stores, as the update history of the device value, the updated device value corresponding to the number of times the loop process is repeated in the history storage means.
The programmable logic controller according to claim 1.
請求項2に記載のプログラマブルロジックコントローラ。The history management means calculates a storage capacity required to store the update history of the device value according to the number of repetitions of the loop process, and secures the calculated storage capacity in the history storage means. ,
The programmable logic controller according to claim 2.
請求項1から3のいずれか1項に記載のプログラマブルロジックコントローラ。The history management means stores the update history of the device value designated by the external device in the history storage means.
The programmable logic controller according to any one of claims 1 to 3.
請求項4に記載のプログラマブルロジックコントローラ。When the external device requests the update history of the device value, the history management means repeatedly executes an instruction in the loop process of the program in the cycle to be started next. The updated history of the device value is stored in the history storage means as the update history of the device value.
The programmable logic controller according to claim 4.
請求項4又は5に記載のプログラマブルロジックコントローラ。A request processing means for transmitting the update history of the device value stored in the history storage means to the external device is further provided.
The programmable logic controller according to claim 4 or 5.
請求項6に記載のプログラマブルロジックコントローラ。The request processing means calculates a storage capacity required to store the update history of the device value according to the number of times the loop processing is repeated, and transmits the calculated storage capacity to the external device.
The programmable logic controller according to claim 6.
前記プログラム内にループ処理があるか否かを判別するステップと、
前記プログラム内に前記ループ処理がある場合に、前記プログラムの入力値及び出力値であって、前記ループ処理内の命令の実行により更新されたデバイス値の更新履歴を記憶手段に格納するステップと、
を実行する方法。A programmable logic controller that executes a program at set intervals
A step of determining whether or not there is a loop process in the program, and
When there is the loop process in the program, a step of storing the update history of the device value which is the input value and the output value of the program and is updated by the execution of the instruction in the loop process in the storage means.
How to do.
前記プログラム内にループ処理があるか否かを判別させ、
前記プログラム内に前記ループ処理がある場合に、前記プログラムの入力値及び出力値であって、前記ループ処理内の命令の実行により更新されたデバイス値の更新履歴を記憶手段に記憶させる、
プログラム。To the programmable logic controller that executes the program at the set cycle
Determine if there is loop processing in the program
When the loop processing is performed in the program, the storage means stores the update history of the input value and the output value of the program and the device values updated by the execution of the instruction in the loop processing.
program.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/036078 WO2020065863A1 (en) | 2018-09-27 | 2018-09-27 | Programmable logic controller, method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2020065863A1 true JPWO2020065863A1 (en) | 2021-01-07 |
Family
ID=69951242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019537392A Pending JPWO2020065863A1 (en) | 2018-09-27 | 2018-09-27 | Programmable logic controllers, methods, and programs |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2020065863A1 (en) |
WO (1) | WO2020065863A1 (en) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4569011B2 (en) * | 2001-02-21 | 2010-10-27 | 三菱電機株式会社 | Programmable controller and peripheral device thereof |
JP2003067008A (en) * | 2001-08-28 | 2003-03-07 | Matsushita Electric Works Ltd | Programmable controller |
JP5667948B2 (en) * | 2011-09-06 | 2015-02-12 | 株式会社東芝 | Program inspection device |
-
2018
- 2018-09-27 JP JP2019537392A patent/JPWO2020065863A1/en active Pending
- 2018-09-27 WO PCT/JP2018/036078 patent/WO2020065863A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2020065863A1 (en) | 2020-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9984244B2 (en) | Controller, information processing apparatus, and recording medium | |
JP6171386B2 (en) | Controller, information processing apparatus and program | |
US7385927B2 (en) | Methods and structure for improved testing of embedded systems | |
US20140067886A1 (en) | Information processing apparatus, method of outputting log, and recording medium | |
US9824229B2 (en) | Controller with enhanced reliability | |
JP5359601B2 (en) | Dump output control device, dump output control program, and dump output control method | |
US20100312541A1 (en) | Program test device and program | |
JPWO2020065863A1 (en) | Programmable logic controllers, methods, and programs | |
JP5133649B2 (en) | Electronic device and memory management program | |
JP2014235575A (en) | Information processing device, information processing method, and program | |
US10228882B2 (en) | Semiconductor device and memory access control method | |
JP7023807B2 (en) | Management system, information processing device, setting management method, and program | |
CN110554966B (en) | Driving debugging method, behavior analysis method and driving debugging system | |
JP6563155B1 (en) | Programmable logic controller, external device, method, and program | |
JP6405972B2 (en) | Operation verification apparatus, operation verification method, and operation verification program | |
US20220164219A1 (en) | Processing system, processing method, higher-level system, lower-level system, higher-level program, and lower-level program | |
US20230034567A1 (en) | Generating and debugging bytecode for a rule | |
WO2023097883A1 (en) | Data transmission method and vehicle-mounted dynamic data management system | |
KR20180061590A (en) | Software build system and software build method using the system | |
KR100619679B1 (en) | Real time monitoring apparatus and method for processor | |
JP3977694B2 (en) | Reset device | |
JP2019145049A (en) | Dynamic link management device, method for managing dynamic link, and program | |
CN115903558A (en) | Integrated circuit, control method and electronic device | |
JP2009075724A (en) | Management apparatus, management system, management program, and management method | |
KR101323833B1 (en) | Apparatus and Method For Scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190710 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190710 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20190710 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20190806 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191008 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191209 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20200114 |