JP2012059078A - Plc system and development support device therefor - Google Patents
Plc system and development support device therefor Download PDFInfo
- Publication number
- JP2012059078A JP2012059078A JP2010202481A JP2010202481A JP2012059078A JP 2012059078 A JP2012059078 A JP 2012059078A JP 2010202481 A JP2010202481 A JP 2010202481A JP 2010202481 A JP2010202481 A JP 2010202481A JP 2012059078 A JP2012059078 A JP 2012059078A
- Authority
- JP
- Japan
- Prior art keywords
- object code
- execution object
- processing units
- size
- pou
- 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.)
- Granted
Links
Landscapes
- Programmable Controllers (AREA)
Abstract
【課題】複数の演算処理部に対して、開発支援装置で自動的にほぼ最適な負荷配分を行える。
【解決手段】任意のアプリケーションをコンパイラ11がコンパイルして実行オブジェクトコードを生成する。これに伴って、POUサイズ算出機能部13が、各POUそれぞれの実行オブジェクトコードのサイズを求め、呼出情報生成機能部14が「POUの呼び出し情報」を生成する。最適負荷配分機能部15が、これら実行オブジェクトコードサイズと「POUの呼び出し情報」とに基づいて、複数のCPU2a,2bに対して実行オブジェクトコードを配分する。
【選択図】図1A development support apparatus can automatically perform a substantially optimal load distribution for a plurality of arithmetic processing units.
A compiler 11 compiles an arbitrary application to generate an execution object code. Accordingly, the POU size calculation function unit 13 obtains the size of the execution object code of each POU, and the call information generation function unit 14 generates “POU call information”. The optimum load distribution function unit 15 distributes the execution object code to the plurality of CPUs 2a and 2b based on the execution object code size and the “POU call information”.
[Selection] Figure 1
Description
本発明は、プログラマブルコントローラの開発支援装置に関する。 The present invention relates to a development support apparatus for a programmable controller.
近年、マイクロコントローラやLSIを使用した組込システムにおいては、ハードウェアでのクロック周波数の向上などによる実行速度の改善は、限界に近づきつつあり、その為、複数のCPUを並列実行することで全体の実行速度を上げるマルチコア方式が用いられるようになってきている。その際、ユーザは複数の演算処理部(CPU)から成るシステムを効率的に利用するために、各CPUに掛かる負荷を調整することが求められる場合がある。 In recent years, in embedded systems using microcontrollers and LSIs, the improvement in execution speed due to an increase in hardware clock frequency is approaching the limit. The multi-core method that increases the execution speed of is now being used. At that time, the user may be required to adjust the load applied to each CPU in order to efficiently use a system including a plurality of arithmetic processing units (CPUs).
しかしながら、シーケンシャルな処理が多く、且つリアルタイム性能を要求されることが多いPLCにおいては、負荷の調整には、入出力機器等を含めたシステム構成に依存した処理のノウハウが必要で難易度が高く、システム規模の増大に伴い、調整工数も増大傾向にある。この工数を削減するために考案された負荷の自動分散方式については、従来技術文献として以下の特許文献1,2が存在する。 However, in PLCs that often require sequential processing and often require real-time performance, load adjustment requires processing know-how that depends on the system configuration, including input / output devices, and is difficult. As the system scale increases, the adjustment man-hours are also increasing. Regarding the automatic load distribution method devised to reduce the man-hours, there are the following Patent Documents 1 and 2 as prior art documents.
特許文献1;システム稼動時(動的)に負荷分散する方式。システム稼動時、各PLCが自己の負荷をそれぞれ算出し、算出した負荷に対応して自己の処理の少なくとも一部を他のPLCに依頼することで、負荷の自動配分を実現している。 Patent Document 1: A method of load distribution when the system is operating (dynamic). When the system is in operation, each PLC calculates its own load, and at least part of its processing is requested to another PLC in accordance with the calculated load, thereby realizing automatic load distribution.
特許文献2;システムの非稼動時(静的)に負荷分散する方式。PLCの国際規格化言語(IEC61131-3)の1つであるSFCに特化しつつ、その特徴を利用した自動配分方式を実現している。 Patent Document 2: A method of distributing the load when the system is not operating (static). It specializes in SFC, one of the international standardized languages of PLC (IEC61131-3), and realizes an automatic allocation method that uses these features.
プログラマブルコントローラのアプリケーションは、近年、複雑化、大容量化してきており、複数のCPUに負荷を分散して処理効率を向上させようとしても、その配分を決定することが難しい。また、試行錯誤的に負荷の配分を行った場合、多大な時間が掛かる為、ユーザの負担になってきている。 In recent years, applications of programmable controllers have become more complex and larger in capacity, and it is difficult to determine the distribution even if the load is distributed to a plurality of CPUs to improve processing efficiency. In addition, when load is distributed by trial and error, it takes a lot of time, which is a burden on the user.
また、試行錯誤的に負荷の配分を行った場合、多大な時間が掛かる為、ユーザの負担となり、アプリケーションプログラムの開発難易度が増大するだけでなく、開発効率が低下する。 In addition, when load is distributed by trial and error, it takes a lot of time, which is a burden on the user, which not only increases the difficulty of developing an application program, but also reduces the development efficiency.
また、近年、PLCのアプリケーションは、従来のラダー言語などによる処理単位で記述された単純構造のプログラムではなく、IEC61131-3のような多言語を駆使した機能単位の構造化設計が行われるようになってきており、ユーザが処理全体の流れを把握することが困難になってきている。構造化設計の場合、同一の機能単位、関数等が別々のプログラムから呼び出されることが多く、プログラム作成者が複数にわたる開発も多くなってきている。 Also, in recent years, PLC applications are designed to be structured in functional units using multiple languages such as IEC61131-3, rather than simply structured programs written in processing units in a conventional ladder language or the like. As a result, it has become difficult for the user to grasp the overall flow of processing. In the case of structured design, the same functional unit, function, and the like are often called from different programs, and the program creator has developed a number of developments.
このような状況では、複数のCPUリソースを持つシステムであっても、アプリケーションプログラム作成者が自力で負荷配分を行うことは難易度が高く、結果的に処理負荷のアンバランスによるトータルシステム処理性能の低下、またシステム立ち上げ工数の増加が考えられる。 In such a situation, even if the system has a plurality of CPU resources, it is difficult for the application program creator to distribute the load by himself, resulting in the total system processing performance due to the imbalance of processing load. Decrease and increase of system startup man-hours can be considered.
本発明の課題は、複数の演算処理部を有し、任意のアプリケーション実行に係わる負荷を複数の演算処理部に分散させるPLCシステムにおいて、開発支援装置で自動的にほぼ最適な負荷配分を行え、以ってユーザのシステム開発効率を向上させることができ、システム立ち上げ時の工数削減を図ることができるPLCシステム、その開発支援装置等を提供することである。 An object of the present invention is to have a plurality of arithmetic processing units, and in a PLC system that distributes a load related to arbitrary application execution to a plurality of arithmetic processing units, a development support apparatus can automatically perform almost optimal load distribution, Accordingly, it is to provide a PLC system capable of improving the system development efficiency of the user and reducing man-hours at the time of starting the system, a development support apparatus thereof, and the like.
本発明のPLCシステムは、第1に、開発支援装置と複数の演算処理部を有し、任意のアプリケーションの実行に係わる負荷を該複数の演算処理部に分散させ実行するPLCシステムであって、前記開発支援装置は、前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、前記アプリケーションを構成する複数の処理単位毎に、その処理単位に係わる前記実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出手段と、前記アプリケーションの処理を前記各処理単位で前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各処理単位それぞれの実行オブジェクトコードサイズ総数に基づいて、前記複数の演算処理部それぞれの負荷が略均等となるように前記アプリケーションの処理を前記各演算処理部に配分する負荷配分手段とを有する。 The PLC system of the present invention is a PLC system that first includes a development support apparatus and a plurality of arithmetic processing units, and distributes a load related to execution of an arbitrary application to the plurality of arithmetic processing units. The development support apparatus determines a total number of sizes of the execution object code related to a processing unit for each of a plurality of processing units constituting the application and a compiling unit that generates an execution object code by compiling the application. Total execution object code size calculation means, and means for allocating the processing of the application to the plurality of arithmetic processing units in each processing unit, each of the processing units calculated by the total execution object code size calculation means Based on the total execution object code size of And a load distribution unit for arithmetic processing unit of the respective load number to distribute the processing of the application so as to be substantially equal to each processing unit.
コンパイル後の実行オブジェクトコードのサイズに基づいて、複数の演算処理部への実行オブジェクトコードの配分を決めるので、適切な負荷配分が行えると共に、コンパイル前のPLC言語が何であるかは関係ないことになる。 Based on the size of the execution object code after compilation, the distribution of the execution object code to a plurality of arithmetic processing units is determined, so that appropriate load distribution can be performed and it does not matter what the pre-compile PLC language is. Become.
本発明のPLCシステムは、第2に、開発支援装置と複数の演算処理部を有し、複数のプログラムと該プログラムから呼び出される各種POUより構成される任意のアプリケーションの実行に係わる負荷を該複数の演算処理部に分散させ実行するPLCシステムであって、前記開発支援装置は、前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、前記POUそれぞれの前記実行オブジェクトコードのサイズを求めるPOUサイズ算出手段と、前記コンパイル時に前記POUの呼び出し情報を求める呼出情報生成手段と、前記POUそれぞれの前記実行オブジェクトコードのサイズと、前記POUの呼び出し情報とに基づいて、前記アプリケーションを構成するプログラム毎に、そのプログラムに係わる各POUの前記実行オブジェクトコードのサイズと実行回数に応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出手段と、前記各プログラムを前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記プログラムそれぞれの実行オブジェクトコードサイズ総数に基づいて、前記複数の演算処理部の負荷が略均等となるように前記各プログラムを前記各演算処理部に配分する負荷配分手段とを有する。 Secondly, the PLC system of the present invention includes a development support apparatus and a plurality of arithmetic processing units, and loads the plurality of loads related to execution of an arbitrary application including a plurality of programs and various POUs called from the programs. The development support apparatus determines a size of the execution object code of each of the POUs, and a compiling unit that generates an execution object code by compiling the application. POU size calculation means, call information generation means for obtaining call information of the POU at the time of compilation, a program constituting the application based on the size of the execution object code of each POU and the call information of the POU Each time the program A total execution object code size calculating means for calculating the total number of execution object code sizes according to the size of the execution object code of each POU and the number of executions, and a means for allocating each program to the plurality of arithmetic processing units. Then, based on the total number of execution object code sizes of each of the programs calculated by the total execution object code size calculation means, each program is processed by each calculation process so that the load on the plurality of calculation processing units is substantially equal. Load distribution means for allocating to each section.
構造化設計の場合、同一の機能単位、関数等が別々のプログラムから呼び出されることが多く、人間が負荷配分を行うには難易度が高いが、上記PLCシステムでは各POU毎の実行オブジェクトコードのサイズとPOUの呼び出し情報とに基づいて、自動的に適切な負荷配分が行える。 In the case of structured design, the same functional unit, function, etc. are often called from different programs, and it is difficult for humans to perform load distribution. However, in the PLC system, the execution object code for each POU is high. Based on the size and the POU call information, appropriate load distribution can be automatically performed.
本発明のPLCシステム、その開発支援装置等によれば、開発支援装置で自動的にほぼ最適な負荷配分を行え、以ってユーザのシステム開発効率を向上させることができ、システム立ち上げにかかる工数を削減することができる。これは、IEC61131-3のような構造化設計の場合に、特に顕著な効果を奏する。また、実行オブジェクトコードサイズを用いるので、PLC言語が何であっても関係なく適用可能である。 According to the PLC system of the present invention, its development support device, and the like, the development support device can automatically perform almost optimal load distribution, thereby improving the system development efficiency of the user and starting up the system. Man-hours can be reduced. This has a particularly remarkable effect in the case of a structured design such as IEC61131-3. Moreover, since the execution object code size is used, it can be applied regardless of the PLC language.
以下、図面を参照して、本発明の実施の形態について説明する。
図1(a),(b)は、本例のPLC(プログラマブルコントローラ)システムのシステム構成例(その1)、(その2)である。
Embodiments of the present invention will be described below with reference to the drawings.
FIGS. 1A and 1B are system configuration examples (part 1) and (part 2) of a PLC (programmable controller) system of this example.
図1(a)、(b)のPLCシステムは、何れも、複数の演算処理部(CPU)と、開発支援装置10を有する。但し、図1(a)ではそれぞれが演算処理部(CPU)を有する複数の演算モジュールより成る構成であり、図1(b)は1つの演算モジュール内に複数の演算処理部(CPU)がある構成となっている。何れにしても、演算処理部が複数存在するPLCシステムであり、任意のアプリケーションプログラムを実行する場合には、複数の演算処理部(CPU)に負荷を分散させて処理効率を向上させる為に、複数のCPUへの負荷配分を行うものであることを前提とする。 Each of the PLC systems shown in FIGS. 1A and 1B includes a plurality of arithmetic processing units (CPUs) and a development support apparatus 10. However, in FIG. 1A, each is composed of a plurality of arithmetic modules each having an arithmetic processing unit (CPU), and FIG. 1B has a plurality of arithmetic processing units (CPU) in one arithmetic module. It has a configuration. In any case, the PLC system has a plurality of arithmetic processing units, and when executing an arbitrary application program, in order to improve the processing efficiency by distributing the load to the plurality of arithmetic processing units (CPU), It is assumed that the load is distributed to a plurality of CPUs.
本例のPLCシステム(その開発支援装置)は、上記特許文献1のような運用中に動的に負荷配分を行うものではなく、運用前に静的に負荷配分を行うものである。
図1(a)のPLCシステムでは、開発支援装置10(10A)と複数のPLCモジュール2(演算モジュール)がネットワーク1に接続しており、ネットワーク1を介して相互に通信可能となっている。各PLCモジュール2がそれぞれ1つのCPU2a、CPU2bを有することで、複数の演算処理部(CPU)がある構成となっている。
The PLC system (development support apparatus) of this example does not dynamically perform load distribution during operation as described in Patent Document 1, but performs load distribution statically before operation.
In the PLC system of FIG. 1A, the development support apparatus 10 (10A) and a plurality of PLC modules 2 (calculation modules) are connected to the network 1 and can communicate with each other via the network 1. Since each PLC module 2 has one CPU 2a and CPU 2b, a plurality of arithmetic processing units (CPUs) are provided.
一方、図1(b)のPLCシステムは、開発支援装置10(10B)と1つのPLCモジュール4がネットワーク1に接続しており、ネットワーク1を介して相互に通信可能となっている。このPLCモジュール4が複数のCPU4a,4bを有することで、複数の演算処理部(CPU)がある構成となっている。 On the other hand, in the PLC system of FIG. 1B, the development support apparatus 10 (10B) and one PLC module 4 are connected to the network 1 and can communicate with each other via the network 1. Since the PLC module 4 includes a plurality of CPUs 4a and 4b, a plurality of arithmetic processing units (CPUs) are provided.
尚、各PLCモジュール(2or4)は、I/Oモジュール3に接続している。
図1(a)、(b)の開発支援装置10(10A、10B)は、ユーザ等に任意のアプリケーションプログラムを作成させ、これをコンパイルして実行オブジェクトコードを生成した後、ネットワーク1を介して実行オブジェクトコードをPLCモジュール2又は4に転送する。この転送処理は、予め登録されるシステム定義に従って行われるが、これについては特に説明しない。
Each PLC module (2 or 4) is connected to the I / O module 3.
The development support apparatus 10 (10A, 10B) of FIGS. 1A and 1B causes a user or the like to create an arbitrary application program, compiles the generated application program code, generates an execution object code, and then via the network 1 The execution object code is transferred to the PLC module 2 or 4. This transfer process is performed according to a system definition registered in advance, but this will not be described in particular.
図1(a)、(b)の開発支援装置10(10A、10B)は、上記転送に係わる処理に関しては多少の違いがあるが、本手法に係わる機能は略同一であるので、同一符号を付してあり、以後、特に区別せずに説明するものとする。 The development support apparatuses 10 (10A, 10B) in FIGS. 1A and 1B have some differences regarding the processing related to the transfer, but the functions related to this method are substantially the same, and therefore the same reference numerals are used. In the following description, no particular distinction is made.
図1(a)、(b)に示す開発支援装置10は、コンパイラ11、リンカ12、POUサイズ算出機能部13、呼出情報生成機能部14、最適負荷配分機能部15を有する。
コンパイラ11とリンカ12は、従来の開発支援装置でも備えられている一般的な機能であり、ここでは特に説明しない。また、特に図示・説明しないが、従来の開発支援装置でも備えられている一般的な機能として、更に、ユーザに任意のアプリケーションを作成させる機能を有するものであってもよい。本例の開発支援装置10は、更に上記POUサイズ算出機能部13、呼出情報生成機能部14、最適負荷配分機能部15を有することを特徴としている。
1A and 1B includes a compiler 11, a linker 12, a POU size calculation function unit 13, a call information generation function unit 14, and an optimum load distribution function unit 15.
The compiler 11 and the linker 12 are general functions provided in a conventional development support apparatus, and are not specifically described here. Although not particularly shown or described, a general function provided in the conventional development support apparatus may further have a function of causing the user to create an arbitrary application. The development support apparatus 10 of this example further includes the POU size calculation function unit 13, the call information generation function unit 14, and the optimum load distribution function unit 15.
ユーザにより任意のアプリケーションプログラムが作成された後、コンパイラ11等によりこのアプリケーションが実行オブジェクトコードに変換される。実行オブジェクトコードのサイズは、RISC型のCPUにおいて、ほぼコードステップ数と同等であると考えられる。これより、本手法では、実行オブジェクトコードのサイズに基づいて、CPUにおけるプログラムの実行時間を推定し、負荷の大きさを算出する。 After an arbitrary application program is created by the user, this application is converted into an execution object code by the compiler 11 or the like. The size of the execution object code is considered to be almost equal to the number of code steps in the RISC type CPU. Thus, in this method, the execution time of the program in the CPU is estimated based on the size of the execution object code, and the load is calculated.
呼出情報生成機能部14は、コンパイラ11による上記アプリケーションプログラムのコンパイル時に「POUの呼び出し情報(相関ツリー)」を生成してメモリ等に保存する。この呼出情報生成機能部14の機能は、既存技術であるので、ここでは詳細には説明しないが、「POUの呼び出し情報(相関ツリー)」の一例を図3(a)、(b)に示す。 The call information generation function unit 14 generates “POU call information (correlation tree)” when the compiler 11 compiles the application program and stores it in a memory or the like. Since the function of the call information generation function unit 14 is an existing technology, an example of “POU call information (correlation tree)” is shown in FIGS. .
図3(a)は「POUの呼び出し情報」を分かり易く示す為のイメージ図であり、実際のデータ格納形式は図3(b)に示す。
ここで、本例では、IEC61131-3のような機能単位の構造化設計を例にする。上述してあるように、構造化設計の場合、同一の機能単位、関数等が別々のプログラムから呼び出されることが多い。
FIG. 3A is an image diagram for easy understanding of “POU call information”, and the actual data storage format is shown in FIG.
Here, in this example, a structured design of functional units such as IEC61131-3 is taken as an example. As described above, in the case of structured design, the same functional unit, function, etc. are often called from different programs.
ここで、上記POUとは、IEC61131-3に規定されている、プログラムの最小単位であり、プログラム(PG)、ファンクション(FCT)、ファンクションブロック(FB)の総称である。そして、本例では、上記アプリケーションプログラムは、複数のプログラム(PG)より成り、図3(a)、(b)に示す一例ではPG1、PG2、PG3、PG4、PG5の5つのプログラム(PG)より成るものとする。 Here, the POU is a minimum unit of a program defined in IEC 61131-3, and is a general term for a program (PG), a function (FCT), and a function block (FB). In this example, the application program is composed of a plurality of programs (PG). In the example shown in FIGS. 3A and 3B, the five programs PG1, PG2, PG3, PG4, and PG5 are included. Shall be.
そして、通常、図3(a)、(b)に示すように、各プログラム(PG)は、1以上のファンクション(FCT)または/及び1以上のファンクションブロック(FB)を呼び出す構造となっている。また、プログラム(PG)から呼び出されたファンクションブロック(FB)が、更に他のファンクションブロック(FB)を呼び出し、または/及び、1以上のファンクション(FCT)を呼び出す場合もある。 Normally, as shown in FIGS. 3A and 3B, each program (PG) has a structure for calling one or more functions (FCT) or / and one or more function blocks (FB). . Further, the function block (FB) called from the program (PG) may call another function block (FB) or / and one or more functions (FCT).
何れにしても本例では上記PG1、PG2、PG3、PG4、PG5の各プログラム(PG)を、1つの「処理単位」(1つのまとまった処理)としてアプリケーション処理が実行されるものであり、この様な「処理単位」を更に分割して複数のCPUに分配・実行させることは困難である。従って、上記PG1〜PG5のような複数の「処理単位」から成るアプリケーションを、複数のCPUで実行させる場合には、「処理単位」毎にCPUに分配する必要がある(例えば後に図5に示す例の様に分配する)。尚、本例では上記PG1〜PG5の各プログラム(PG)を「処理単位」としたが、この例に限るものではない。 In any case, in this example, application processing is executed with each program (PG) of PG1, PG2, PG3, PG4, and PG5 as one "processing unit" (one grouped process). It is difficult to further divide such “processing units” and distribute / execute them to a plurality of CPUs. Therefore, when an application composed of a plurality of “processing units” such as PG1 to PG5 is executed by a plurality of CPUs, it is necessary to distribute them to the CPUs for each “processing unit” (for example, as shown in FIG. 5 later). Distributed as in the example). In this example, each program (PG) of PG1 to PG5 is a “processing unit”, but the present invention is not limited to this example.
尚、上記「処理単位」とは、広義には例えば後述するようにアプリケーションを任意の複数のグループに分割して、各グループを「処理単位」とするようにしてもよいが、狭義には、上記PG1〜PG5の例のようにそれ以上分割することが困難である(CPU側で正常に実行できなくなる)ようにグループ分けしたものを「処理単位」と呼んでも良い。 The “processing unit” may be broadly defined, for example, by dividing the application into a plurality of arbitrary groups as described later, and each group may be defined as a “processing unit”. As in the above examples of PG1 to PG5, those divided into groups so that it is difficult to divide further (cannot be executed normally on the CPU side) may be called “processing units”.
各プログラム(PG)が、ファンクション(FCT)、ファンクションブロック(FB)等の各種POUを呼び出すことで、そのプログラム(PG)の処理が実行される。
尚、図3(b)には、図3(a)に示す各プログラムPG1〜PG5のうち一例としてプログラムPG1についてのみ「POUの呼び出し情報」のデータ格納例を示す。
When each program (PG) calls various POUs such as a function (FCT) and a function block (FB), processing of the program (PG) is executed.
FIG. 3B shows a data storage example of “POU call information” only for the program PG1 as an example of the programs PG1 to PG5 shown in FIG.
これより、図3(b)も参照してプログラムPG1を例にして詳細に説明するならば、プログラムPG1は、ファンクションFCT1、ファンクションFCT1、ファンクションFCT2、ファンクションブロックFB1、ファンクションブロックFB1を順次呼び出す。尚、ファンクションFCT1が最初に2回連続して呼び出されているように、同一のファンクション/ファンクションブロックが複数回呼び出される場合もある。 Accordingly, if the program PG1 is described in detail with reference to FIG. 3B as an example, the program PG1 sequentially calls the function FCT1, the function FCT1, the function FCT2, the function block FB1, and the function block FB1. Note that the same function / function block may be called a plurality of times as the function FCT1 is called twice consecutively for the first time.
図3(b)に示すように、プログラム(PG)から呼び出されるPOUは、階層1のPOUとして規定される。階層1のPOUから呼び出されるPOUは、階層2のPOUとして規定される。階層2のPOUから呼び出されるPOUは、階層3のPOUとして規定される。 As shown in FIG. 3B, the POU called from the program (PG) is defined as a POU of level 1. A POU called from a POU at Tier 1 is defined as a POU at Tier 2. A POU called from a Tier 2 POU is defined as a Tier 3 POU.
尚、プログラム(PG)が呼び出されることはないので、“呼び出されるPOU”とは、PGを除くPOUを意味し、よってFBまたはFCTを意味する。これは、換言すれば、上記各階層1〜3のPOUは、全て、FBまたはFCTであることを意味する。 Since the program (PG) is never called, “called POU” means a POU excluding PG, and thus means FB or FCT. In other words, this means that all the POUs in the respective layers 1 to 3 are FB or FCT.
図3(b)に示すように、階層1の各POUのうち、ファンクションブロックFB1とFB2は、更にPOUを呼び出す。呼び出されるPOUは階層2のPOUと規定されることになる。すなわち、階層1のファンクションブロックFB1は、階層2のファンクションFCT1,FCT2を呼び出し、階層1のファンクションブロックFB2は、階層2のファンクションFCT1とファンクションブロックFB3を呼び出す。 As shown in FIG. 3B, among the POUs in the hierarchy 1, the function blocks FB1 and FB2 further call the POU. The POU to be called will be defined as the POU of level 2. That is, the function block FB1 in the hierarchy 1 calls the functions FCT1 and FCT2 in the hierarchy 2, and the function block FB2 in the hierarchy 1 calls the functions FCT1 and the function block FB3 in the hierarchy 2.
呼び出された(階層2の)ファンクションブロックFB3は、ファンクションFCT1,FCT2と,ファンクションブロックFB4(何れも階層3)を呼び出す。
上記の例では、例えば、ファンクションFCT1は全部で5回呼び出されることになり、呼び出される毎にファンクションFCT1が実行されるので、ファンクションFCT1の実行時間を仮にt1とするならば、プログラムPG1に係わるファンクションFCT1の全実行時間は「5×t1」となることになる。
The called function block FB3 (hierarchy 2) calls the functions FCT1 and FCT2 and the function block FB4 (both hierarchies 3).
In the above example, for example, the function FCT1 is called five times in total, and the function FCT1 is executed every time it is called. Therefore, if the execution time of the function FCT1 is t1, the function related to the program PG1 The total execution time of FCT1 is “5 × t1”.
ここで、上記ファンクションFCT1の実行時間t1は、ファンクションFCT1の実行オブジェクトコードのサイズ(上記の通り、ほぼコードステップ数と同等)によって決まるものと見做してよい。例えば、仮に1ステップ当たりの処理実行に掛かる時間をt2とした場合、FCT1のステップ数が後述する例の様に‘3’であるならば、t1=3×t2ということになる。 Here, the execution time t1 of the function FCT1 may be considered to be determined by the size of the execution object code of the function FCT1 (as described above, substantially equal to the number of code steps). For example, assuming that the time required for execution of processing per step is t2, if the number of steps of FCT1 is '3' as will be described later, then t1 = 3 × t2.
このように、実行オブジェクトコードのサイズ(ステップ数)と実行時間とは、単純な計算式により相関関係が記述できると考えられることから、実行オブジェクトコード・サイズ(コードステップ数)を算出することにより、ユーザが作成したアプリケーションプログラムの各「処理単位」毎の(例えば各プログラム(PG)毎の)実行時間を推定することができる。各CPUの負荷の大きさを、処理時間(割り当てられた全てのPGの実行時間)として見積もることができる。 Thus, since it is considered that the correlation between the execution object code size (number of steps) and the execution time can be described by a simple calculation formula, the execution object code size (number of code steps) is calculated. The execution time for each “processing unit” of the application program created by the user (for example, for each program (PG)) can be estimated. The magnitude of the load on each CPU can be estimated as processing time (execution time of all assigned PGs).
上記POUサイズ算出機能部13は、アプリケーションの各POU(PG/FB/FCT)それぞれの実行オブジェクトコードのサイズ(≒コードステップ数)を求めて記憶する。図3(a)に示すアプリケーションの例の場合、図4(a)に示すように、各プログラムPG1〜PG5それぞれのサイズ、各ファンクションブロックFB1、FB2,FB3,FB4それぞれのサイズ、各ファンクションFCT1,FCT2,FCT3それぞれのサイズが、求められることになる。 The POU size calculation function unit 13 calculates and stores the size (≈code step number) of the execution object code of each POU (PG / FB / FCT) of the application. In the case of the application example shown in FIG. 3A, as shown in FIG. 4A, the size of each program PG1 to PG5, the size of each function block FB1, FB2, FB3, FB4, the function FCT1, The sizes of FCT2 and FCT3 are obtained.
尚、POUサイズ算出機能部13自体は、一般的なコンパイラに備えられている既存の機能であり、これ以上詳細には説明しないが、
ここで、図2に、開発支援装置10の処理フローチャート図を示す。
The POU size calculation function unit 13 itself is an existing function provided in a general compiler, and will not be described in more detail.
Here, FIG. 2 shows a process flowchart of the development support apparatus 10.
開発支援装置10は、任意のアプリケーションプログラムが生成された後、任意のときにまず、その実行オブジェクトコード生成処理を実行する(ステップS11)。この実行オブジェクトコード生成時に、上記の通り、POUサイズ算出機能部13が、各POU(PG/FB/FCT)それぞれの実行オブジェクトコードのサイズ(≒コードステップ数)を求めて記憶し、呼出情報生成機能部14が、「POUの呼び出し情報(相関ツリー)」を生成して保存する。この「POUの呼び出し情報(相関ツリー)」の生成機能も、一般的なコンパイラに備えられている既存の機能であり、これ以上詳細には説明しない。 The development support apparatus 10 first executes the execution object code generation process at any time after an arbitrary application program is generated (step S11). When generating the execution object code, as described above, the POU size calculation function unit 13 obtains and stores the size (≈code step number) of each execution object code for each POU (PG / FB / FCT), and generates call information. The functional unit 14 generates and stores “POU call information (correlation tree)”. The function for generating the “POU call information (correlation tree)” is also an existing function provided in a general compiler, and will not be described in further detail.
このように、このステップS11の処理(コンパイルによる実行オブジェクトコード生成と実行オブジェクトコードサイズの生成・記憶と「POUの呼び出し情報(相関ツリー)」の生成・保存)は、一般的なコンパイラが実行する既存の処理と考えて良い。 In this way, the processing of step S11 (execution object code generation by compilation, generation / storage of execution object code size, and generation / storage of “POU call information (correlation tree)”) is executed by a general compiler. Think of it as an existing process.
本手法の特徴的な機能は、次のステップS12とステップS13の処理にある。上記最適負荷配分機能部15が、ステップS12、S13の処理を実行する。
まず、ステップS12では、各プログラム(PG)毎に、そのPGの総実行オブジェクトコードサイズ(実行オブジェクトコードサイズ総数)を、以下の(1)式によって求める。
The characteristic function of this method is in the processing of the next step S12 and step S13. The optimum load distribution function unit 15 executes the processes of steps S12 and S13.
First, in step S12, for each program (PG), the total execution object code size (total execution object code size) of the PG is obtained by the following equation (1).
尚、上記(1)式における「呼び出し回数」は、例えば「実行回数」に置き換えてもよい。上記(1)式による総実行オブジェクトコードサイズにはプログラム(PG)自体のサイズも含まれるが、上記の通りプログラム(PG)自体は呼び出されるものではないからである。 The “number of calls” in the above equation (1) may be replaced with “the number of executions”, for example. This is because the total execution object code size according to the above equation (1) includes the size of the program (PG) itself, but the program (PG) itself is not called as described above.
既に例えばプログラムPG1に係わるファンクションFCT1の全実行時間は「5×t1」である旨説明したが、上記(1)式ではt1の代わりにファンクションFCT1の実行オブジェクトコードのサイズ(≒コードステップ数)を用いるものと考えてよい。各POUの実行オブジェクトコードのサイズ(≒コードステップ数)は、POUサイズ算出機能部13が求めて記憶してあるので(図4(a))、これを参照すればよい。 For example, the total execution time of the function FCT1 related to the program PG1 has already been described as “5 × t1”. In the above equation (1), the size of the execution object code of the function FCT1 (≈the number of code steps) is used instead of t1. You can think of it as being used. The size of the execution object code (≈code step number) of each POU is obtained and stored by the POU size calculation function unit 13 (FIG. 4A), and this can be referred to.
図3(b)に示す例では、プログラムPG1に関して呼び出されるPOUは、ファンクションブロックFB1,FB2,FB3、ファンクションFCT1,FCT2,FCT4であり、これら各POUの呼び出し回数(実行回数)は、FB1が1回、FB2が1回、FB3が1回、FCT1が5回、FCT2が3回、FCT4が1回であり、これにプログラムPG1自体の実行回数(1回)が加わる。 In the example shown in FIG. 3B, the POU called for the program PG1 is the function blocks FB1, FB2, and FB3, and the functions FCT1, FCT2, and FCT4. Times, FB2 once, FB3 once, FCT1 five times, FCT2 three times, FCT4 one time, and the number of executions (one time) of the program PG1 itself is added.
ここで、仮に、「<POU>;POUのオブジェクトコードサイズを表すもの」とする。すなわち、各POUの実行オブジェクトコードのサイズ(≒コードステップ数)を、例えばPG1は<PG1>、FB1は<FB1>、FCT1は<FCT1>等と表記するものとする。そして、各POU(PG/FB/FCT)それぞれの実行オブジェクトコードのサイズ(≒コードステップ数)が仮に図4(a)に示す通りとするならば、上記(1)式による上記プログラムPG1の総実行オブジェクトコードサイズ(実行オブジェクトコードサイズ総数)は、以下のように算出される。 Here, it is assumed that “<POU>; represents the object code size of POU”. That is, the size of the execution object code (≈ number of code steps) of each POU is expressed as, for example, <PG1> for PG1, <FB1> for FB1, and <FCT1> for FCT1. If the size of the execution object code (≈code step number) of each POU (PG / FB / FCT) is as shown in FIG. 4A, the total of the program PG1 according to the above equation (1) is assumed. The execution object code size (total number of execution object code sizes) is calculated as follows.
プログラムPG1の総実行オブジェクトコードサイズ
=<PG1>×1+<FB1>×1+<FB2>×1+<FB3>×1+<FB4>×1+<FCT1>×5+<FCT2>×3
=10×1+6×1+7×1+8×1+3×5+1×3+6×1
=55
他の各プログラムPG2、PG3、PG4、PG5についても、同様にして、図3(a)に示す「POUの呼び出し情報」と、図4(a)に示す各POUの実行オブジェクトコードのサイズとを用いて、上記(1)式によって総実行オブジェクトコードサイズを算出すると、その結果は図4(b)に示す通りとなる。
Total execution object code size of program PG1 = <PG1> × 1 + <FB1> × 1 + <FB2> × 1 + <FB3> × 1 + <FB4> × 1 + <FCT1> × 5 + <FCT2> × 3
= 10 × 1 + 6 × 1 + 7 × 1 + 8 × 1 + 3 × 5 + 1 × 3 + 6 × 1
= 55
Similarly, for each of the other programs PG2, PG3, PG4, and PG5, the “POU call information” shown in FIG. 3A and the size of the execution object code of each POU shown in FIG. When the total execution object code size is calculated by the above equation (1), the result is as shown in FIG.
最適負荷配分機能部15は、図4(b)に示す情報(アプリケーションプログラムを構成する各プログラム(PG)毎の実行オブジェクトコードサイズ総数)が得られたら、このサイズ総数情報に基づいて複数のCPUに対して処理負荷が略均等になるようにして各プログラム(PG1〜PG5)を割り当てる(ステップS13)。割り当て結果の一例を図5に示す。 When the optimum load distribution function unit 15 obtains the information shown in FIG. 4B (the total number of execution object code sizes for each program (PG) constituting the application program), a plurality of CPUs are based on the total size information. The programs (PG1 to PG5) are assigned so that the processing load is substantially equal to the program (step S13). An example of the assignment result is shown in FIG.
図5に示す例では、CPU1に対してはプログラムPG1とPG5を割り当て、CPU2に対してはプログラムPG2とPG3とPG4を割り当てている。各プログラムPG1〜PG5の総実行オブジェクトコードサイズは図4(b)に示す通りであるので、CPU1に割り当てられる実行オブジェクトコードサイズはトータルで55+7=62となり、CPU2に割り当てられる実行オブジェクトコードサイズはトータルで25+18+16=59となり、CPU1の処理負荷とCPU2の処理負荷は殆ど同じ(略均等)であると見做すことができる。つまり、ほぼ最適な負荷配分が行えたと見做すことができる。 In the example shown in FIG. 5, programs PG1 and PG5 are assigned to CPU1, and programs PG2, PG3, and PG4 are assigned to CPU2. Since the total execution object code size of each program PG1 to PG5 is as shown in FIG. 4B, the total execution object code size assigned to the CPU 1 is 55 + 7 = 62, and the execution object code size assigned to the CPU 2 is the total. 25 + 18 + 16 = 59, so that the processing load on the CPU 1 and the processing load on the CPU 2 are almost the same (substantially equal). That is, it can be considered that almost optimal load distribution has been performed.
そして、上記ステップS13で決定した各CPUに対する各プログラム(PG1〜PG5)の割り当て結果に応じて、各プログラム(PG1〜PG5)のメモリ振分けを行う(ステップS14)。これは例えば、図5の例の場合、プログラムPG1とPG5をCPU1に送信してそのメモリ等に格納させ、プログラムPG2とPG3とPG4をCPU2に送信してそのメモリ等に格納させるものである。尚、ステップS14の処理も最適負荷配分機能部15が実行するものであってもよいし、ステップS14の処理は不図示の他の機能部(各CPUへのプログラム振分け自体は既存機能であり特に説明しない)が実行するものであってもよい。 Then, according to the assignment result of each program (PG1 to PG5) to each CPU determined in step S13, memory allocation of each program (PG1 to PG5) is performed (step S14). For example, in the example of FIG. 5, the programs PG1 and PG5 are transmitted to the CPU 1 and stored in the memory thereof, and the programs PG2, PG3 and PG4 are transmitted to the CPU 2 and stored in the memory and the like. Note that the process of step S14 may also be executed by the optimum load distribution function unit 15, and the process of step S14 may be performed by other function units (not shown). (Not described) may be executed.
尚、CPU1とCPU2は、例えば図1(a)に示す例のCPU2aとCPU2bに相当すると考えても良い。あるいは、CPU1とCPU2は、例えば図1(b)に示す例のCPU4aとCPU4bに相当すると考えても良い。 Note that the CPU 1 and the CPU 2 may be considered to correspond to the CPU 2a and the CPU 2b in the example illustrated in FIG. Alternatively, the CPU 1 and the CPU 2 may be considered to correspond to the CPU 4a and the CPU 4b in the example illustrated in FIG.
また、尚、上記各プログラム(PG1〜PG5)の実行順番が決まっている場合には、従来より例えば開発支援装置10側にPG実行順番を示す情報(実行順番テーブルというものとする;不図示)が格納されているので、例えば上記ステップS14の処理の際にこの実行順番テーブルもCPU1のメモリ、CPU2のメモリに記憶させるようにしてもよい。それによって、例えばCPU1において、PG5を先に実行して、後にPG1を実行するようなことも起こり得る。 If the execution order of the programs (PG1 to PG5) is determined, for example, information indicating the PG execution order on the development support apparatus 10 side (referred to as an execution order table; not shown). For example, this execution order table may be stored in the memory of the CPU 1 and the memory of the CPU 2 in the process of step S14. Thereby, for example, the CPU 1 may execute PG5 first and then execute PG1 later.
上記各プログラム(PG)毎の総実行オブジェクトコードサイズに基づく複数のCPUへの各プログラムの割り当て方法は、様々な方法であってよく、一例を以下に説明するが、これらの例に限るものではない。 The method of assigning each program to a plurality of CPUs based on the total execution object code size for each program (PG) may be various methods. An example will be described below, but the method is not limited to these examples. Absent.
すなわち、例えば、
(1)負荷(サイズ)が大きいプログラム(PG)から順に各CPUへ順次割り当てていく方法。
That is, for example,
(1) A method of sequentially assigning to each CPU in order from a program (PG) having a large load (size).
例えば、図4(b)に示す例では、負荷(サイズ)が大きいプログラム(PG)から順次割り当てると、PG1→PG2→PG3→PG4→PG5の順番で各プログラム(PG)を順次割り当ることになる。 For example, in the example shown in FIG. 4B, when programs (PG) having a large load (size) are sequentially allocated, the programs (PG) are sequentially allocated in the order of PG1, PG2, PG3, PG4, and PG5. Become.
ここで、例えば一例としては、最初は各CPUにPGを負荷(サイズ)が大きいものから順に1つずつ割り当て、その後は現在の負荷(サイズ)の割り当て総量が最も小さいCPUへ次のPG(残っているなかで最もサイズが大きいPG)を割り当てる方法が考えられる。 Here, for example, as an example, PGs are first assigned to each CPU in order from the largest load (size), and then the next PG (remaining) is assigned to the CPU with the smallest total amount of current load (size). A method of allocating PG) having the largest size among them is conceivable.
この方法によれば、図4(b)に示す例では、最初はPG1をCPU1に割り当て、PG2をCPU2に割り当てることになる。その後は、PG3はCPU2に割り当て、続くPG4もCPU2に割り当てることになる(何れも、その時点の負荷の割り当て総量が、CPU1>CPU2であるので)。最後に、PG5は、CPU1に割り当てることになる(その時点の負荷の割り当て総量が、CPU1(=55)<CPU2(=25+18+16=59)であるので)。 According to this method, in the example shown in FIG. 4B, PG1 is initially assigned to CPU1 and PG2 is assigned to CPU2. Thereafter, PG3 is assigned to CPU2, and subsequent PG4 is also assigned to CPU2 (because the total load allocation amount at that time is CPU1> CPU2). Finally, PG5 is assigned to CPU1 (since the total amount of load assigned at that time is CPU1 (= 55) <CPU2 (= 25 + 18 + 16 = 59)).
この様な割り当て処理によって、図5に示す結果となる。
この様にして、例えば図5に示すように、CPU1の処理負荷とCPU2の処理負荷が殆ど同じ(略均等)となるように、アプリケーションプログラムを構成する各プログラム(PG)を、複数のCPUに割り当てることが出来る。
By such an allocation process, the result shown in FIG. 5 is obtained.
In this manner, for example, as shown in FIG. 5, each program (PG) constituting the application program is distributed to a plurality of CPUs so that the processing load of the CPU 1 and the processing load of the CPU 2 are almost the same (substantially equal). Can be assigned.
(2)割り当て負荷総量の平均値(平均の負荷配分値)を求めて、各CPU毎に平均値を越えるまで各プログラム(PG)を割り当てていく方法。
これは、例えば、まず、各CPUへ割り当てる負荷総量の平均値を算出する。これは、上記全てのプログラムPG1〜PG5の総実行オブジェクトコードサイズの総和を求める。図4(b)の例では、総和=55+25+18+16+7=121となる。
(2) A method of obtaining an average value (average load distribution value) of the total assigned load and assigning each program (PG) until the average value is exceeded for each CPU.
For example, first, an average value of the total load allocated to each CPU is calculated. This obtains the total sum of the total execution object code sizes of all the programs PG1 to PG5. In the example of FIG. 4B, the sum = 55 + 25 + 18 + 16 + 7 = 121.
この総和をCPU数で割ることで、各CPUへ割り当てる負荷総量の平均値を算出する。仮に図5の例と同様にCPU1、CPU2の2つのCPUに割り当てる場合、平均値=121÷2=60.5となる。 By dividing this total by the number of CPUs, the average value of the total load allocated to each CPU is calculated. If the assignment is made to the two CPUs CPU1 and CPU2 as in the example of FIG. 5, the average value = 121 ÷ 2 = 60.5.
そして、例えばまずCPU1に対して、平均値(=60.5)を越えるまでプログラム(PG)を割り当てていく。これは、一例としては、各プログラム(PG)をランダムに割り当てていく。但し、この例に限らず、例えば以下に説明するようにしてもよい。 For example, first, a program (PG) is assigned to the CPU 1 until the average value (= 60.5) is exceeded. As an example, each program (PG) is randomly assigned. However, the present invention is not limited to this example, and may be described below, for example.
すなわち、負荷(サイズ)が大きいプログラム(PG)から順次割り当てるようにする。但し、上記(1)とは異なり、1つのCPUに対して上記平均値を越えるまで集中的に割り当てる。更に、平均値を越えた時点で完了とせずに、平均値を越えたときに割り当てたプログラム(PG)を、未だ割り当てていない他のプログラム(PG)と置き換えて、合計サイズが最も平均値に近いものに決定する。 That is, a program (PG) having a large load (size) is assigned sequentially. However, unlike the above (1), allocation is concentrated to one CPU until the average value is exceeded. Furthermore, the program (PG) assigned when the average value is exceeded is not completed when the average value is exceeded, and the program (PG) assigned when the average value is exceeded is replaced with another program (PG) that has not yet been assigned. Decide on something close.
すなわち、CPU1に対してまずPG1を割り当て、次にPG2を割り当てると、合計サイズ=55+25=80なので平均値(=60.5)を越えたことになる。ここで、PG2の代わりに未だ割り当てていない他のプログラムPG3,PG4,PG5を順次割り当てると、PG3の場合の合計サイズ=55+18=73、PG4の場合の合計サイズ=55+16=71、PG5の場合の合計サイズ=55+7=62となり、PG5の場合が最も平均値に近いので、CPU1に対してはPG1とPG5を割り当てることになる。 That is, when PG1 is first assigned to CPU1, and then PG2 is assigned, the total size exceeds 55 + 25 = 80, and thus exceeds the average value (= 60.5). Here, when other programs PG3, PG4, and PG5 that have not yet been assigned are sequentially assigned instead of PG2, the total size in the case of PG3 = 55 + 18 = 73, the total size in the case of PG4 = 55 + 16 = 71, and the case of PG5 The total size = 55 + 7 = 62, and since the case of PG5 is closest to the average value, PG1 and PG5 are assigned to the CPU1.
(3)組み合せ最適化問題として定義し、最適化手法(経験的手法・メタヒューリスティック等)を用いて解く方法。
この最適化手法自体は、既存の一般的な手法であり、ここでは特に説明しないが、この方法によれば、負荷の大きさにバラツキがあった場合や負荷の数が膨大になるような複雑な場合においても、最適な負荷配分を求めることができる。
(3) A method defined as a combinatorial optimization problem and solved using an optimization method (empirical method, metaheuristic, etc.).
This optimization method itself is an existing general method, and is not particularly described here. However, according to this method, when the load size varies or the number of loads becomes enormous, Even in such a case, the optimum load distribution can be obtained.
また、上記(1)、(2)、(3)の3つの方法を組み合わせて、複数のCPUにプログラム(PG)を割り当てるようにしてもよい。例えば、図4(b)の例において、まず最初は、(1)の方法により最もサイズが大きいPG1をCPU1に割り当て、2番目にサイズが大きいPG2をCPU2に割り当てる。その後は、残りのPG3、PG4,PG5を1つ以上、PG1またはPG2と適宜組み合わせることで、様々な組み合わせを作成すると共に作成した組み合わせによる合計サイズ(例えば、PG1とPG3の組み合わせでは合計サイズは55+18=73となる)を求める。そして、合計サイズと上記平均の負荷配分値(=60.5)との差異が最も小さくなるような組み合わせを求める。 Further, the program (PG) may be assigned to a plurality of CPUs by combining the above three methods (1), (2), and (3). For example, in the example of FIG. 4B, first, PG1 having the largest size is assigned to CPU1 by the method (1), and PG2 having the second largest size is assigned to CPU2. Thereafter, by combining one or more of the remaining PG3, PG4, and PG5 with PG1 or PG2 as appropriate, various combinations are created and the total size of the created combinations (for example, the total size is 55 + 18 for the combination of PG1 and PG3) = 73). Then, a combination in which the difference between the total size and the average load distribution value (= 60.5) is minimized is obtained.
尚、負荷の数が膨大となる場合での負荷配分では、1つの負荷が全体の負荷に与える影響が軽減されるため、(1)や(2)の方法を単独で行うことも有効であると考えられる。 In addition, in the load distribution when the number of loads becomes enormous, the influence of one load on the entire load is reduced. Therefore, it is also effective to perform the methods (1) and (2) independently. it is conceivable that.
尚、本例では「POUの呼び出し情報」を用いているが、“どのPOUがどのPOUを呼び出したか”を知る必要はなく、上記のように単に各プログラム(PG)毎に、そのPGに係わる各POUの実行回数が分かればよいのである。本例では既存機能である呼出情報生成機能部14によって生成される「POUの呼び出し情報」を利用しているのであるが、この様な例に限らない。何れにしても必ずしも「POUの呼び出し情報」である必要はなく、単に各POUの実行回数が分かる様な情報であればなんでもよい。 In this example, “POU call information” is used, but it is not necessary to know “which POU called which POU”. As described above, each program (PG) is related to the PG. It is only necessary to know the number of times each POU is executed. In this example, “POU call information” generated by the call information generation function unit 14 which is an existing function is used, but the present invention is not limited to such an example. In any case, the information does not necessarily need to be “POU call information”, and may be any information as long as the number of executions of each POU is known.
IEC-61131-3では、1つのアプリケーションを実行する処理実行部をリソースと呼んで一元管理する概念を持っている。アプリケーションの負荷を配分する対象が、図1(a)のように複数のCPUモジュール2に該当する場合は、一旦1つの実行処理部であると仮定して上記の様に実行オブジェクトコードサイズを算出し、その後、各CPUモジュール2に実行オブジェクトを割り付ける方法によって負荷配分を行う。 IEC-61131-3 has a concept of centrally managing a process execution unit that executes one application as a resource. If the target to which the application load is distributed corresponds to a plurality of CPU modules 2 as shown in FIG. 1A, the execution object code size is calculated as described above, assuming that it is a single execution processing unit. Thereafter, load distribution is performed by a method of assigning execution objects to the CPU modules 2.
これは、図1(b)のCPUモジュール4のような例えばマルチコアマイクロプロセッサやコプロセッサを備えた演算装置に負荷を配分する場合も、同様の考え方で負荷配分を行うことが出来る。但し、図1(b)の1つのCPUモジュール4内の複数のCPU4a,4bは、同一の実行コードを実行する同一性能のマイクロプロセッサもしくは演算LSIなどであるものとし、コンパイル対象のユーザアプリケーションは、各機能の実行結果を相互に参照しないこと前提とする。 This is also possible when the load is distributed to an arithmetic device having, for example, a multi-core microprocessor or a coprocessor such as the CPU module 4 in FIG. 1B. However, a plurality of CPUs 4a and 4b in one CPU module 4 in FIG. 1B are assumed to be microprocessors or arithmetic LSIs having the same performance for executing the same execution code, and the user application to be compiled is It is assumed that the execution results of each function are not mutually referenced.
ここで上記オブジェクトコードのステップ数について、具体例を図6に示して説明する。図6において、図6(a)はプログラミング画面を示し、任意のプログラム部品(ここではADD関数)を示している。このプログラム部品をコンパイルすることで、図6(b)に示す実行オブジェクトコード(点線で囲った部分)が生成される。図示の通り、この実行オブジェクトコードのステップ数は‘9’である(9行;9ステップ)。 A specific example of the number of steps of the object code will be described with reference to FIG. In FIG. 6, FIG. 6 (a) shows a programming screen and shows an arbitrary program component (here, an ADD function). By compiling this program part, an execution object code (portion surrounded by a dotted line) shown in FIG. 6B is generated. As shown in the figure, the number of steps of this execution object code is '9' (9th line; 9th step).
また、本例の開発支援装置10は、ハードウェア的には例えばパソコン等の汎用のコンピュータ装置により実現できる。
図7は、開発支援装置のハードウェア構成の具体例を示す図であり、これはパソコン等の汎用のコンピュータの構成であると考えてよい。
Further, the development support apparatus 10 of this example can be realized by a general-purpose computer device such as a personal computer in terms of hardware.
FIG. 7 is a diagram illustrating a specific example of the hardware configuration of the development support apparatus, which may be considered as the configuration of a general-purpose computer such as a personal computer.
図7において、コンピュータ30は、CPU31、メモリ32、入力部33、出力部34、記憶部35、記録媒体駆動部36、及びネットワーク接続部37を有し、これらがバス38に接続された構成となっている。 In FIG. 7, the computer 30 includes a CPU 31, a memory 32, an input unit 33, an output unit 34, a storage unit 35, a recording medium drive unit 36, and a network connection unit 37, which are connected to a bus 38. It has become.
CPU31は、当該コンピュータ30全体を制御する中央処理装置である。
メモリ32は、任意の処理実行の際に、記憶部35(あるいは可搬型記録媒体39)に記憶されているプログラムあるいはデータを一時的に格納するRAM等のメモリである。CPU31は、メモリ32に読み出したプログラム/データを用いて、上述した各種処理を実行する。
The CPU 31 is a central processing unit that controls the entire computer 30.
The memory 32 is a memory such as a RAM that temporarily stores a program or data stored in the storage unit 35 (or the portable recording medium 39) when executing arbitrary processing. The CPU 31 executes the various processes described above using the program / data read into the memory 32.
出力部34は、例えばディスプレイ等であり、入力部33は、例えば、キーボード、マウス等である。
ネットワーク接続部37は、例えば上記ネットワーク1等に接続して、他の情報処理装置(CPUモジュール2,4等)との通信(コマンド/データ送受信等)を行う為の通信モジュールである。
The output unit 34 is, for example, a display, and the input unit 33 is, for example, a keyboard, a mouse, or the like.
The network connection unit 37 is a communication module that is connected to, for example, the network 1 and performs communication (command / data transmission / reception, etc.) with other information processing apparatuses (CPU modules 2, 4 and the like).
記憶部35は、例えばハードディスク等であり、上述した開発支援装置10の各種処理機能をCPU31により実現させる為のアプリケーションプログラムが格納されている。すなわち、上記コンパイラ11、リンカ12、POUサイズ算出機能部13、呼出情報生成機能部14、最適負荷配分機能部15の各種処理機能部の処理機能を、CPU31により実現させる為のアプリケーションプログラムが格納されている。 The storage unit 35 is, for example, a hard disk or the like, and stores application programs for causing the CPU 31 to realize the various processing functions of the development support apparatus 10 described above. That is, an application program for realizing the processing functions of the various processing function units of the compiler 11, the linker 12, the POU size calculation function unit 13, the call information generation function unit 14, and the optimum load distribution function unit 15 by the CPU 31 is stored. ing.
CPU31は、上記記憶部35に格納されている各種プログラムを読み出し・実行することにより、上述した各種処理を実現する。
また、上記図3(b)や図4(a),(b)に示す各種情報は、記憶部35やメモリ32等に記憶されるものである。
The CPU 31 implements the various processes described above by reading and executing various programs stored in the storage unit 35.
The various information shown in FIG. 3B, FIG. 4A, and FIG. 4B is stored in the storage unit 35, the memory 32, and the like.
上記記憶部35に格納される各種プログラム/データは、可搬型記録媒体39に記憶されているものであってもよい。この場合、可搬型記録媒体39に記憶されているプログラム/データは、記録媒体駆動部36によって読み出される。可搬型記録媒体39とは、例えば、FD(フレキシブル・ディスク)39a、CD−ROM39b、その他、DVD、光磁気ディスク等である。 Various programs / data stored in the storage unit 35 may be stored in the portable recording medium 39. In this case, the program / data stored in the portable recording medium 39 is read by the recording medium driving unit 36. The portable recording medium 39 is, for example, an FD (flexible disk) 39a, a CD-ROM 39b, a DVD, a magneto-optical disk, or the like.
あるいは、また、上記プログラム/データは、ネットワーク接続部37により接続しているネットワークを介して、他の装置内に記憶されているものをダウンロードするものであってもよい。あるいは、更に、インターネットを介して、外部の他の装置内に記憶されているものをダウンロードするものであってもよい。 Alternatively, the program / data may be downloaded from another device via a network connected by the network connection unit 37. Or you may further download what was memorize | stored in the external other apparatus via the internet.
また、本発明は、上記本発明の各種処理をコンピュータ上で実現するプログラムを記録した可搬型記憶媒体として構成できるだけでなく、当該プログラム自体として構成することもできる。 In addition, the present invention can be configured not only as a portable storage medium recording a program for realizing the various processes of the present invention on a computer, but also as the program itself.
尚、上述した説明は一例であり、この例に限らない。ユーザが作成するアプリケーションが、例えばラダー図を用いるプログラムであっても構わない。本手法ではコンパイル後のプログラム(実行オブジェクトコード;機械語)を用いるので、ユーザが使用するPLC言語が何であっても関係ないからである。そして、実行オブジェクトコードのサイズ(ステップ数)を用いることで、的確に負荷を推定でき、それによってほぼ最適な負荷配分を実現できる。 The above description is an example, and the present invention is not limited to this example. The application created by the user may be a program using a ladder diagram, for example. This is because this method uses a compiled program (execution object code; machine language), so it does not matter what PLC language the user uses. Then, by using the size (number of steps) of the execution object code, it is possible to accurately estimate the load, thereby realizing almost optimal load distribution.
PLC言語に関係なく本例の開発支援装置10の機能を概略的に説明するならば、特に図示等しないが本例の開発支援装置10は以下の各種機能部を有するものと言うことができる。 If the functions of the development support apparatus 10 of the present example are schematically described regardless of the PLC language, it can be said that the development support apparatus 10 of the present example includes the following various functional units, although not particularly illustrated.
まず、複数の演算処理部(CPU)で演算させるべき任意のアプリケーションプログラムをコンパイルすることで実行オブジェクトコードを生成するコンパイル機能部(不図示)を備える。 First, a compile function unit (not shown) that generates an execution object code by compiling an arbitrary application program to be operated by a plurality of operation processing units (CPUs) is provided.
また、例えば、上記アプリケーションプログラムを複数のグループ(ここでは一例として特に上記「処理単位」)に分割しておく。これは、例えば開発者等が決めて設定しておく。 Further, for example, the application program is divided into a plurality of groups (here, particularly, the above “processing unit” as an example). This is determined and set by a developer, for example.
そして、開発支援装置10は、更に、これら複数の「処理単位」毎に、その「処理単位」に係わる実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出機能部(不図示)を備える。更に、上記アプリケーションプログラムの処理を上記各「処理単位」で複数の演算処理部(CPU)に配分する機能部であって、上記各「処理単位」毎の実行オブジェクトコードサイズ総数(全ステップ数など)に基づいて、複数の演算処理部の負荷が略均等となるように上記アプリケーションプログラムの処理を各演算処理部に配分する負荷配分機能部(不図示)を備える。 The development support apparatus 10 further includes a total execution object code size calculation function unit (not shown) that calculates the total number of execution object code sizes related to the “processing unit” for each of the plurality of “processing units”. . Furthermore, it is a functional unit that distributes the processing of the application program to a plurality of arithmetic processing units (CPUs) in each “processing unit”, and the total number of execution object codes for each “processing unit” (total number of steps, etc.) ), A load distribution function unit (not shown) that distributes the processing of the application program to each arithmetic processing unit so that the loads of the plurality of arithmetic processing units are substantially equal.
この様に、本例の開発支援装置10は、概略的には上記各種不図示の機能部を備えるものであるということもできる。
上記特許文献1に記載の従来技術は、システムの稼動時に行う動的な負荷配分方式であるため、初期の負荷配分が不適切であった場合には、システム始動時には、CPUの負荷が偏り、PLCシステムで要求される定時性を損う可能性がある。その点、静的な負荷配分方式である本手法では、システム始動時から信頼性の高い運用を行うことが出来る。
Thus, it can be said that the development support apparatus 10 of the present example is roughly provided with the various functional units (not shown).
Since the prior art described in Patent Document 1 is a dynamic load distribution method performed at the time of system operation, when the initial load distribution is inappropriate, the load on the CPU is biased when the system is started. There is a possibility that the punctuality required in the PLC system may be impaired. In this regard, this method, which is a static load distribution method, can perform highly reliable operation from the time of system startup.
また、上記特許文献2記載の従来技術は、システムの非稼動時に行う静的な負荷配分方式でありこの点では本手法と同類であるが、特許文献2ではSFCの特徴を利用しているため、他の言語に関しては適用することができず、特にPLCの分野で最もよく利用されている言語であるラダー言語に対応できないという大きな問題が生じる。 The prior art described in Patent Document 2 is a static load distribution method performed when the system is not operating, and is similar to this method in this respect. However, Patent Document 2 uses the feature of SFC. However, it cannot be applied to other languages, and there arises a big problem that it cannot cope with a ladder language, which is a language most frequently used in the field of PLC.
これに対して、本手法では、SFCやラダー言語等のプログラマが用いるPLC言語には関係なく、何らかのPLC言語で記述されたプログラムをコンパイルすることで生成される実行オブジェクトコード(機械語等)を用いて負荷配分を行うので、PLC言語が何であっても関係なく適用可能である。つまり、本手法では、特許文献2記載の従来技術に比べて汎用性が高いことになる。 On the other hand, in this method, execution object code (machine language, etc.) generated by compiling a program written in some PLC language is used regardless of the PLC language used by a programmer such as SFC or ladder language. Since load distribution is performed using any of them, the present invention can be applied regardless of the PLC language. In other words, this technique is more versatile than the conventional technique described in Patent Document 2.
このように、本手法によれば、複数のCPUを有するPLCシステムにおいて、システム始動時から最適な負荷配分でアプリケーション実行させることができることや、PLC言語に依存せずに適用可能である等の様々なメリットが得られる。 As described above, according to this method, in a PLC system having a plurality of CPUs, applications can be executed with an optimal load distribution from the time of starting the system, and the present invention can be applied without depending on the PLC language. Benefits.
上記本手法を適用したPLCシステムによれば、複数のCPUに対して自動的に(運用初期から)ほぼ最適な負荷配分を行えることで、システムの大規模化・複雑化による増大する「ユーザのシステム開発時間」を短縮することができる。また、コンパイル時に自動的にほぼ最適な負荷配分を行えることで、ユーザのノウハウに依存しない、安定した運用を可能にし、システムの信頼性を向上させることができる。 According to the PLC system to which the present method is applied, it is possible to automatically (almost from the initial stage of operation) load distribution to a plurality of CPUs. System development time can be shortened. In addition, almost optimal load distribution can be automatically performed at the time of compilation, so that stable operation can be performed without depending on the know-how of the user, and the reliability of the system can be improved.
また、既に述べたように、PLCのアプリケーションは、従来のラダー言語などによる処理単位で記述された単純構造のプログラムではなく、IEC61131-3のような多言語を駆使した機能単位の構造化設計が行われるようになってきており、ユーザが処理全体の流れを把握することが困難に成ってきている。構造化設計の場合、同一の機能単位、関数等が別々のプログラムから呼び出されることが多く、プログラム作成者が複数にわたる開発も多くなってきている。 In addition, as already mentioned, the PLC application is not a program with a simple structure described in a processing unit in a conventional ladder language or the like, but a structured design of a functional unit using multiple languages such as IEC61131-3. As a result, it has become difficult for the user to grasp the overall flow of processing. In the case of structured design, the same functional unit, function, and the like are often called from different programs, and the program creator has developed a number of developments.
このような状況では、複数のCPUに対してアプリケーションプログラム作成者等が自力で負荷配分を行うことは難易度が高く、結果的に処理負荷のアンバランスによるトータルシステム処理性能の低下、またシステム立ち上げ時の工数の増加が考えられる。これに対して、本手法では、このような難易度が高いものに対しても、自動的にほぼ最適な負荷配分を行えるので、この様な問題も解決できる。 In such a situation, it is difficult for an application program creator or the like to distribute loads to multiple CPUs on their own, resulting in a decrease in total system processing performance due to processing load imbalance, and system startup. The increase in man-hours when raising can be considered. On the other hand, this method can solve such a problem because it can automatically perform almost optimal load distribution even for such a high degree of difficulty.
尚、「システム立ち上げ時の工数」とは、アプリケーションを複数の演算処理部(CPU等)に配分するユーザの手間を意味する。本手法では、この様なシステム立ち上げに掛かる工数を削減することができる。 Note that “the number of man-hours at the time of starting the system” means a user's trouble of allocating an application to a plurality of arithmetic processing units (CPU and the like). This method can reduce the man-hours required to start up such a system.
1 ネットワーク
2 PLCモジュール
2a、2b CPU
3 I/Oモジュール
4 PLCモジュール
4a,4b CPU
10 開発支援装置
11 コンパイラ
12 リンカ
13 POUサイズ算出機能部
14 呼出情報生成機能部
15 最適負荷配分機能部
30 コンピュータ
31 CPU
32 メモリ
33 入力部
34 出力部
35 記憶部
36 記録媒体駆動部
37 ネットワーク接続部
38 バス
39 可搬型記録媒体
39a FD(フレキシブル・ディスク)
39b CD−ROM
1 Network 2 PLC module 2a, 2b CPU
3 I / O module 4 PLC module 4a, 4b CPU
DESCRIPTION OF SYMBOLS 10 Development support apparatus 11 Compiler 12 Linker 13 POU size calculation function part 14 Call information generation function part 15 Optimal load distribution function part 30 Computer 31 CPU
32 memory 33 input unit 34 output unit 35 storage unit 36 recording medium drive unit 37 network connection unit 38 bus 39 portable recording medium 39a FD (flexible disk)
39b CD-ROM
Claims (5)
前記開発支援装置は、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する複数の処理単位毎に、その処理単位に係わる前記実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出手段と、
前記アプリケーションの処理を前記各処理単位で前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各処理単位それぞれの実行オブジェクトコードサイズ総数に基づいて、前記複数の演算処理部それぞれの負荷が略均等となるように前記アプリケーションの処理を前記各演算処理部に配分する負荷配分手段と、
を有することを特徴とするPLCシステム。 A PLC system having a development support apparatus and a plurality of arithmetic processing units, and distributing and executing a load related to execution of an arbitrary application among the plurality of arithmetic processing units,
The development support apparatus includes:
Compiling means for generating executable object code by compiling the application;
For each of a plurality of processing units constituting the application, a total execution object code size calculating means for obtaining a total number of the sizes of the execution object codes related to the processing units;
Means for allocating the processing of the application to the plurality of arithmetic processing units in each processing unit, based on a total number of execution object code sizes of each processing unit calculated by the total execution object code size calculation means; Load distribution means for allocating the processing of the application to the arithmetic processing units so that the loads of the arithmetic processing units are substantially equal;
A PLC system characterized by comprising:
前記開発支援装置は、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記POUそれぞれの前記実行オブジェクトコードのサイズを求めるPOUサイズ算出手段と、
前記コンパイル時に前記POUの呼び出し情報を求める呼出情報生成手段と、
前記POUそれぞれの前記実行オブジェクトコードのサイズと、前記POUの呼び出し情報とに基づいて、前記アプリケーションを構成するプログラム毎に、そのプログラムに係わる各POUの前記実行オブジェクトコードのサイズと実行回数に応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出手段と、
前記各プログラムを前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記プログラムそれぞれの実行オブジェクトコードサイズ総数に基づいて、前記複数の演算処理部の負荷が略均等となるように前記各プログラムを前記各演算処理部に配分する負荷配分手段と、
を有することを特徴とするPLCシステム。 A PLC system having a development support apparatus and a plurality of arithmetic processing units, and distributing and executing a load related to execution of an arbitrary application composed of a plurality of programs and various POUs called from the programs in the plurality of arithmetic processing units Because
The development support apparatus includes:
Compiling means for generating executable object code by compiling the application;
POU size calculation means for determining the size of the execution object code for each of the POUs;
Call information generating means for obtaining call information of the POU at the time of compilation;
Based on the size of the execution object code of each POU and the call information of the POU, for each program constituting the application, the size of the execution object code and the number of executions of each POU related to the program are determined. Total execution object code size calculating means for calculating the total number of execution object code sizes;
Means for allocating each program to the plurality of arithmetic processing units, based on a total number of execution object code sizes of the programs calculated by the total execution object code size calculating unit; Load distribution means for distributing the programs to the arithmetic processing units so that the load is substantially equal;
A PLC system characterized by comprising:
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する複数の処理単位毎に、その処理単位に係わる前記実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出手段と、
前記アプリケーションの処理を前記各処理単位で前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各処理単位それぞれの実行オブジェクトコードサイズ総数に基づいて、前記複数の演算処理部それぞれの負荷が略均等となるように前記アプリケーションの処理を前記各演算処理部に配分する負荷配分手段と、
を有することを特徴とするPLCシステムにおける開発支援装置。 A development support apparatus in a PLC system having a development support apparatus and a plurality of arithmetic processing units, and distributing and executing a load related to execution of an arbitrary application among the plurality of arithmetic processing units,
Compiling means for generating executable object code by compiling the application;
For each of a plurality of processing units constituting the application, a total execution object code size calculating means for obtaining a total number of the sizes of the execution object codes related to the processing units;
Means for allocating the processing of the application to the plurality of arithmetic processing units in each processing unit, based on a total number of execution object code sizes of each processing unit calculated by the total execution object code size calculation means; Load distribution means for allocating the processing of the application to the arithmetic processing units so that the loads of the arithmetic processing units are substantially equal;
A development support apparatus in a PLC system, characterized by comprising:
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記POUそれぞれの前記実行オブジェクトコードのサイズを求めるPOUサイズ算出手段と、
前記コンパイル時に前記POUの呼び出し情報を求める呼出情報生成手段と、
前記POUそれぞれの前記実行オブジェクトコードのサイズと、前記POUの呼び出し情報とに基づいて、前記アプリケーションを構成するプログラム毎に、そのプログラムに係わる各POUの前記実行オブジェクトコードサイズと実行回数に応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出手段と、
前記各プログラムを前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記プログラムそれぞれの実行オブジェクトコードサイズ総数に基づいて、前記複数の演算処理部の負荷が略均等となるように前記各プログラムを前記各演算処理部に配分する負荷配分手段と、
を有することを特徴とするPLCシステムにおける開発支援装置。
The PLC system includes a development support apparatus and a plurality of arithmetic processing units, and distributes a load related to execution of an arbitrary application including a plurality of programs and various POUs called from the programs to the plurality of arithmetic processing units. A development support device,
Compiling means for generating executable object code by compiling the application;
POU size calculation means for determining the size of the execution object code for each of the POUs;
Call information generating means for obtaining call information of the POU at the time of compilation;
Based on the size of the execution object code of each of the POUs and the call information of the POU, for each program constituting the application, execution according to the execution object code size and the number of executions of each POU related to the program Total execution object code size calculating means for calculating the total object code size;
Means for allocating each program to the plurality of arithmetic processing units, based on a total number of execution object code sizes of the programs calculated by the total execution object code size calculating unit; Load distribution means for distributing the programs to the arithmetic processing units so that the load is substantially equal;
A development support apparatus in a PLC system, characterized by comprising:
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010202481A JP5655448B2 (en) | 2010-09-09 | 2010-09-09 | PLC system and its development support equipment |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010202481A JP5655448B2 (en) | 2010-09-09 | 2010-09-09 | PLC system and its development support equipment |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2012059078A true JP2012059078A (en) | 2012-03-22 |
| JP5655448B2 JP5655448B2 (en) | 2015-01-21 |
Family
ID=46056083
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010202481A Active JP5655448B2 (en) | 2010-09-09 | 2010-09-09 | PLC system and its development support equipment |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5655448B2 (en) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016076236A1 (en) * | 2014-11-12 | 2016-05-19 | 株式会社東芝 | Distributed control system, control device, control method, and program |
| JP6150956B1 (en) * | 2016-02-15 | 2017-06-21 | 三菱電機株式会社 | Load balancer |
| JP2018041373A (en) * | 2016-09-09 | 2018-03-15 | オムロン株式会社 | Executable program creation device, executable program creation method, and executable program creation program |
| CN114326560A (en) * | 2021-11-18 | 2022-04-12 | 北京华能新锐控制技术有限公司 | Method and device for reducing CPU load of home-made PLC of wind turbine generator |
| WO2022137577A1 (en) * | 2020-12-23 | 2022-06-30 | オムロン株式会社 | Control device, control method, and control program |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018042520A1 (en) | 2016-08-30 | 2018-03-08 | 三菱電機株式会社 | Program editing device, program editing method and program editing program |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63127303A (en) * | 1986-11-17 | 1988-05-31 | Toshiba Corp | Programmable controller |
| JPH0695713A (en) * | 1992-09-14 | 1994-04-08 | Hitachi Ltd | Programmable controller and programming method thereof |
-
2010
- 2010-09-09 JP JP2010202481A patent/JP5655448B2/en active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63127303A (en) * | 1986-11-17 | 1988-05-31 | Toshiba Corp | Programmable controller |
| JPH0695713A (en) * | 1992-09-14 | 1994-04-08 | Hitachi Ltd | Programmable controller and programming method thereof |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016076236A1 (en) * | 2014-11-12 | 2016-05-19 | 株式会社東芝 | Distributed control system, control device, control method, and program |
| JP2016095586A (en) * | 2014-11-12 | 2016-05-26 | 株式会社東芝 | Distributed control system, control device, control method, and program |
| US10520935B2 (en) | 2014-11-12 | 2019-12-31 | Kabushiki Kaisha Toshiba | Distributed control system, control device, control method, and computer program product |
| JP6150956B1 (en) * | 2016-02-15 | 2017-06-21 | 三菱電機株式会社 | Load balancer |
| WO2017141332A1 (en) * | 2016-02-15 | 2017-08-24 | 三菱電機株式会社 | Load balancing device |
| US20180095441A1 (en) * | 2016-02-15 | 2018-04-05 | Mitsubishi Electric Corporation | Load distribution device |
| JP2018041373A (en) * | 2016-09-09 | 2018-03-15 | オムロン株式会社 | Executable program creation device, executable program creation method, and executable program creation program |
| WO2018047620A1 (en) * | 2016-09-09 | 2018-03-15 | オムロン株式会社 | Executable program creation device, executable program creation method, and executable program creation program |
| WO2022137577A1 (en) * | 2020-12-23 | 2022-06-30 | オムロン株式会社 | Control device, control method, and control program |
| CN114326560A (en) * | 2021-11-18 | 2022-04-12 | 北京华能新锐控制技术有限公司 | Method and device for reducing CPU load of home-made PLC of wind turbine generator |
| CN114326560B (en) * | 2021-11-18 | 2024-02-09 | 北京华能新锐控制技术有限公司 | Method and device for reducing CPU load of domestic PLC of wind turbine generator |
Also Published As
| Publication number | Publication date |
|---|---|
| JP5655448B2 (en) | 2015-01-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2012118715A (en) | Plc system, development support device for the same, and program | |
| JP6939132B2 (en) | Application profiling job management system, programs, and methods | |
| JP5934094B2 (en) | Mapping across multiple processors of processing logic with data parallel threads | |
| US8495598B2 (en) | Control flow graph operating system configuration | |
| JP5655448B2 (en) | PLC system and its development support equipment | |
| CN113204412B (en) | Method for task scheduling, electronic device and computer storage medium | |
| US8677334B2 (en) | Parallelization method, system and program | |
| CN113391918A (en) | Method, apparatus and computer program product for processing a computing job | |
| EP3032413B1 (en) | Code generation method, compiler, scheduling method, apparatus and scheduling system | |
| CN103218245A (en) | Providing performance tuned versions of compiled code to a cpu in a system of heterogeneous cores | |
| KR20140054948A (en) | Tool composition for supporting opencl application software development for embedded system and method thereof | |
| JP2015509249A5 (en) | ||
| JP2590045B2 (en) | Distributed processing control method and distributed processing system | |
| JP2019049843A (en) | Execution node selection program, execution node selection method and information processing apparatus | |
| WO2024109312A1 (en) | Task scheduling execution method, and generation method and apparatus for task scheduling execution instruction | |
| EP1993038A1 (en) | Data processing system and data processing method | |
| JP6953768B2 (en) | Assistance device, program | |
| JP5360506B2 (en) | Multi-core programming system, method and program | |
| KR102213046B1 (en) | Design support device, design support method, and program stored on a recording medium | |
| KR102512704B1 (en) | Method and apparatus for matrix computation | |
| EP3991027B1 (en) | Method and apparatus for enabling autonomous acceleration of dataflow ai applications | |
| JP6295914B2 (en) | Programmable controller system, its support device, programmable controller | |
| US20090187895A1 (en) | Device, method, program, and recording medium for converting program | |
| JP5845788B2 (en) | Execution control program, execution control apparatus, and execution control method | |
| CN119829062A (en) | Function processing method and device |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130813 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140520 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140718 |
|
| 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: 20141028 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141110 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5655448 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |