JP2012118715A - Plc system, development support device for the same, and program - Google Patents

Plc system, development support device for the same, and program Download PDF

Info

Publication number
JP2012118715A
JP2012118715A JP2010267233A JP2010267233A JP2012118715A JP 2012118715 A JP2012118715 A JP 2012118715A JP 2010267233 A JP2010267233 A JP 2010267233A JP 2010267233 A JP2010267233 A JP 2010267233A JP 2012118715 A JP2012118715 A JP 2012118715A
Authority
JP
Japan
Prior art keywords
program
object code
processing units
arithmetic processing
execution object
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
Application number
JP2010267233A
Other languages
Japanese (ja)
Inventor
Toshiyuki Nishiwaki
敏之 西脇
Daisuke Yoshihara
大助 吉原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2010267233A priority Critical patent/JP2012118715A/en
Publication of JP2012118715A publication Critical patent/JP2012118715A/en
Pending legal-status Critical Current

Links

Landscapes

  • Programmable Controllers (AREA)

Abstract

PROBLEM TO BE SOLVED: To perform almost optimal load distribution while maintaining uniqueness (synchronization) of output of a program.SOLUTION: An optimal load distribution function part 25 distributes a program having an identical input variable to the same controller on the basis of variable list information generated by a variable list information generation function part 26 and, as for the rest of the programs, distributes them to the controller so that a total execution object code size total sum of each controller becomes almost the same on the basis of a total execution object code size of each program obtained on the basis of a processing result of a POU size calculation function part 23 and a call information generation function part 24.

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.

また、従来のPLCシステムの一例を図13(b)に示す。
図示のように、PLCシステムは、開発支援装置101、コントローラ110、入出力機器102等から成る。入出力機器102は、コントローラ110による各種制御対象機器等(制御対象機器とのI/Oインタフェース等であってもよい)であり、制御対象機器だけでなく、その状態計測の為の各種センサ類や、表示部等も含まれているものとする。
An example of a conventional PLC system is shown in FIG.
As illustrated, the PLC system includes a development support apparatus 101, a controller 110, an input / output device 102, and the like. The input / output device 102 is a device to be controlled by the controller 110 (may be an I / O interface with the device to be controlled), and is not only a device to be controlled but also various sensors for measuring its state. In addition, a display unit and the like are also included.

コントローラ110は、入力メモリ111、出力メモリ112、マイコン113等を有する。入力メモリ111には各変数(入力変数;図示の例では変数a,b,c,d)が記憶されており、入出力機器102からの入力処理に応じた各変数の値が更新される。例えば、上記入出力機器102の各種センサ類の計測データ等が、入力メモリ111上の該当する変数の値となる。出力メモリ112にも各変数(出力変数;図示の例では変数s,t,u,v)が記憶されており、この出力メモリ112上の各変数の値に基づいて入出力機器102への出力(値の表示、制御等)が行われる。   The controller 110 includes an input memory 111, an output memory 112, a microcomputer 113, and the like. Each variable (input variable; variables a, b, c, d in the illustrated example) is stored in the input memory 111, and the value of each variable is updated according to the input processing from the input / output device 102. For example, measurement data of various sensors of the input / output device 102 is the value of the corresponding variable on the input memory 111. Each variable (output variable; variables s, t, u, v in the illustrated example) is also stored in the output memory 112, and output to the input / output device 102 based on the value of each variable on the output memory 112. (Value display, control, etc.) are performed.

マイコン113が各プログラム(図示の例ではプログラムA,B,C,D)を実行する毎に、そのプログラムに係わる入力変数の値が入力メモリ111から読み込まれ、処理実行され、この処理結果によってそのプログラムに係わる出力変数の値が更新されることになる。   Each time the microcomputer 113 executes each program (in the example shown, programs A, B, C, and D), the value of the input variable related to that program is read from the input memory 111 and processed, and the processing result The value of the output variable related to the program is updated.

開発者等は、開発支援装置101上でラダー言語等のプログラム作成言語を用いて任意のアプリケーションを作成する。コンパイラ、リンカによって、作成されたアプリケーションの各プログラムの実行オブジェクトが生成され、これがコントローラ110にダウンロードされてマイコン113の内蔵メモリ等に格納される。図示の例では、プログラムA,B,C,Dの4つのプログラムの実行オブジェクトが、開発支援装置101からコントローラ110にダウンロードされて、マイコン113の内蔵メモリ等に格納される。これより、マイコン113は、これら4つのプログラムA,B,C,Dを、例えば定周期で実行する。   A developer or the like creates an arbitrary application on the development support apparatus 101 using a program creation language such as a ladder language. An execution object of each program of the created application is generated by the compiler and linker, and is downloaded to the controller 110 and stored in the built-in memory of the microcomputer 113 or the like. In the illustrated example, execution objects of four programs A, B, C, and D are downloaded from the development support apparatus 101 to the controller 110 and stored in the built-in memory of the microcomputer 113 or the like. As a result, the microcomputer 113 executes these four programs A, B, C, and D, for example, at regular intervals.

このように任意のアプリケーションのプログラムA,B,C,Dをコントローラ110(そのマイコン113)で実行させる場合、マイコン113は、各プログラム実行に伴い、入力メモリ111から所定の変数記憶領域に格納されている変数データを読み込み、読み込んだ変数データに基づいて所定の演算処理を実行し、この演算処理結果を出力メモリ112の所定の変数記憶領域に書き込む。ここで、各プログラムA,B,C,Dが実行する処理、入力メモリ111から読み込む変数、出力メモリ112に書き込む変数を、図13(a)に一覧で示す。   As described above, when the program A, B, C, or D of an arbitrary application is executed by the controller 110 (its microcomputer 113), the microcomputer 113 is stored in a predetermined variable storage area from the input memory 111 as each program is executed. Variable data is read, predetermined calculation processing is executed based on the read variable data, and the calculation processing result is written in a predetermined variable storage area of the output memory 112. Here, processing executed by each program A, B, C, D, variables read from the input memory 111, and variables written to the output memory 112 are shown in a list in FIG.

図13(a)に示す一例では、プログラムAは、入力メモリ111から変数aと変数cの値を読み込み、これに基づいて所定の演算処理(処理A)を実行し、演算処理結果を出力メモリ112の変数sの記憶領域に書き込むことになる。同様に、プログラムBは、入力メモリ111から変数bの値を読み込み、これに基づいて所定の演算処理(処理B)を実行し、演算処理結果を出力メモリ112の変数tの記憶領域に書き込む。プログラムCは、入力メモリ111から変数cの値を読み込み、これに基づいて所定の演算処理(処理C)を実行し、演算処理結果を出力メモリ112の変数uの記憶領域に書き込む。プログラムDは、入力メモリ111から変数dの値を読み込み、これに基づいて所定の演算処理(処理D)を実行し、演算処理結果を出力メモリ112の変数vの記憶領域に書き込む。   In one example shown in FIG. 13A, the program A reads the values of the variable a and the variable c from the input memory 111, executes predetermined arithmetic processing (processing A) based on this, and outputs the arithmetic processing result to the output memory. It is written in the storage area of the variable s 112. Similarly, the program B reads the value of the variable b from the input memory 111, executes a predetermined calculation process (process B) based on the value, and writes the calculation process result in the storage area of the variable t in the output memory 112. The program C reads the value of the variable c from the input memory 111, executes a predetermined calculation process (process C) based on this value, and writes the calculation process result in the storage area of the variable u in the output memory 112. The program D reads the value of the variable d from the input memory 111, executes a predetermined calculation process (process D) based on the value, and writes the calculation process result in the storage area of the variable v in the output memory 112.

尚、本説明では、入力メモリ111に格納される変数を入力変数、出力メモリ112に格納される変数を出力変数と呼ぶ場合もあるものとする。
ここで、従来のPLCの動作としては、各プログラム実行毎にそのプログラムに係わる変数値の入力と出力を行う場合もあるが、複数のプログラムに係わる変数値の入力、出力をまとめて行う場合もある。その一例を図14に示す。
In this description, a variable stored in the input memory 111 may be referred to as an input variable, and a variable stored in the output memory 112 may be referred to as an output variable.
Here, as the operation of the conventional PLC, there is a case where the input and output of variable values related to the program is performed every time the program is executed, but the case where the input and output of variable values related to a plurality of programs are performed collectively. is there. An example is shown in FIG.

図14において、図示のPG-A、PG-B、PG-C、PG-Dは、それぞれ、上記プログラムA,B,C,Dの演算処理実行を意味する(つまり、上記処理A、処理B、処理C、処理Dの実行を意味する)。そして、図示のIは、入力メモリ111からの変数データ読込みを意味するが、これは上記処理A〜処理Dの全てに係る変数データをまとめて読み込む処理である。よって、上記の例では図示のIの処理で変数a、b,c,dの各変数値を読み込むことになる。同様に、図示のOは、上記処理A〜処理Dの処理結果をまとめて出力メモリ112に書き込む処理を意味し、上記の例では、変数s,t,u,vの各格納領域に処理結果を書き込む処理となる。   In FIG. 14, PG-A, PG-B, PG-C, and PG-D shown in the figure mean execution of arithmetic processing of the programs A, B, C, and D, respectively (that is, the processing A and the processing B). , Process C and process D). And I shown in the figure means reading of variable data from the input memory 111. This is a process of collectively reading the variable data related to all of the processes A to D. Therefore, in the above example, each variable value of the variables a, b, c, and d is read by the process I shown in the figure. Similarly, O shown in the figure means processing for collectively writing the processing results of the processing A to processing D into the output memory 112. In the above example, the processing results are stored in the storage areas of the variables s, t, u, and v. Will be written.

この様に、入出力処理をまとめて行うのは、プログラムの出力の一義性(または同期性)を確保する為である。例えばモーションコントローラ等や、制御対象がサーボアンプやインバータ等であった場合、高速な位置決め制御が必要な場合等には、複数のプログラムのなかに、共通の入力に基づいて各々の処理を行い、更に出力結果に応じた動作が互いに関連するような関係の複数のプログラムが存在する場合がある。この様な場合、上記出力の一義性(または同期性)を確保する必要がある。例えば、位置決め制御の場合、出力の一義性(または同期性)を確保出来ないことは位置決め精度の悪化に直結することになる。   The reason why the input / output processing is performed in this way is to ensure the unambiguousness (or synchronism) of the program output. For example, when a motion controller or the like is controlled by a servo amplifier or inverter, or when high-speed positioning control is required, each processing is performed based on a common input in a plurality of programs. Furthermore, there may be a plurality of programs having a relationship in which operations according to output results are related to each other. In such a case, it is necessary to ensure the uniqueness (or synchronism) of the output. For example, in the case of positioning control, the fact that the unambiguousness (or synchronism) of the output cannot be ensured directly leads to deterioration in positioning accuracy.

通常、上記各プログラムは、その入力データが変化したならば、その出力データもそれに応じた値に変わることになるが、上記のような関係の複数のプログラムの場合には、入力データの変化に応じた出力データの変化のタイミングが、ほぼ同じであることが要求される。この様な要求を満たすことをここでは「プログラムの出力の一義性(または同期性)を確保する」と言う。   Normally, if the input data of each program changes, the output data also changes to a value corresponding to the program. However, in the case of a plurality of programs having the above relationship, the input data changes. The corresponding output data change timing is required to be substantially the same. Satisfying such a requirement is referred to herein as “ensuring uniqueness (or synchronism) of program output”.

しかしながら、複数の演算処理部(CPU)に負荷分散する場合、「プログラムの出力の一義性(または同期性)を確保する」ことが出来なくなる可能性がある。これについて、図15を参照して説明する。   However, when the load is distributed to a plurality of arithmetic processing units (CPUs), it may not be possible to “ensure the unambiguousness (or synchronism) of program output”. This will be described with reference to FIG.

上記出力動作が互いに関連する関係の複数のプログラムは、上記の通り入力変数が共通である。これより、図13(a)に示す例では、プログラムAとプログラムCとがこの様な関係にある(入力変数cが共通)。   A plurality of programs in which the output operations are related to each other share the same input variable as described above. Thus, in the example shown in FIG. 13A, the program A and the program C have such a relationship (the input variable c is common).

ここで、仮に、上記4つのプログラムA〜Dを、2つのコントローラ110(基本コントローラ、拡張コントローラと呼ぶものとする)に分けて割りあてるものとし、プログラムA、Dは基本コントローラに割り当て、プログラムB,Cは拡張コントローラに割り当てるものとする。   Here, it is assumed that the above four programs A to D are divided and assigned to two controllers 110 (referred to as basic controllers and extended controllers), and programs A and D are assigned to basic controllers and program B is assigned. , C are assigned to the expansion controller.

これより、図15に示すように、基本コントローラにおいては、定周期でプログラムA、Dが実行されることになる。この場合、入力処理Iでは変数a,c,dの値をまとめて読み込み、出力処理Oでは変数s,vへの書き込みを行うことになる。一方、拡張コントローラにおいては、定周期でプログラムB,Cが実行されることになる。この場合、入力処理Iでは変数b,cの値をまとめて読み込み、出力処理Oでは変数t,uへの書き込みを行うことになる。   Thus, as shown in FIG. 15, in the basic controller, the programs A and D are executed at regular intervals. In this case, in the input process I, the values of the variables a, c, and d are read together, and in the output process O, writing to the variables s and v is performed. On the other hand, in the extended controller, the programs B and C are executed at regular intervals. In this case, in the input process I, the values of the variables b and c are read together, and in the output process O, the variables t and u are written.

ここで、図15には入力変数cと、出力変数s,uの変化タイミングを示している。すなわち、図示の入力変数cと、出力変数s,uのそれぞれに関して、‘0’(L)から‘1’(H)に変化しているタイミングが、これら各変数のデータ変化タイミングを意味するものとする。入力変数cの変化に応じて出力変数s,uが変化する。尚、これは、変数データが‘0’から‘1’に変化しているとは限らず、任意のデータ内容から他のデータ内容へと変化しているものと考えても良い。また、尚、入力変数cは上述した入出力機器102からの入力処理によって任意のタイミングで更新されるものとする。   FIG. 15 shows the change timing of the input variable c and the output variables s and u. That is, with respect to each of the illustrated input variable c and output variables s and u, the timing of changing from “0” (L) to “1” (H) means the data change timing of each of these variables. And The output variables s and u change according to the change of the input variable c. Note that this is not limited to variable data changing from ‘0’ to ‘1’, but may be considered as changing from arbitrary data content to other data content. The input variable c is updated at an arbitrary timing by the input processing from the input / output device 102 described above.

図示のように基本コントローラと拡張コントローラとで処理実行タイミングが異なる場合、図中の任意のサイクルでは、基本コントローラの入力処理Iのタイミングでは未だ入力変数cは変化していないが、その直後に変化し、その後の拡張コントローラの入力処理Iでは変化後の入力変数cを入力している。これによって、このサイクルでは、出力変数uは変化するが、出力変数sは変化しない。出力変数sが変化するのは次のサイクルのときであり、この為、図示の通り、出力変数uが変化するタイミングと、出力変数sが変化するタイミングとに大きなズレが生じることになる。別の言い方をすれば、変化後の入力変数cを入力するタイミングが、図示の通り基本と拡張とで大きく異なることになる。つまり、「プログラムの出力の一義性(または同期性)」が損なわれていることになる。   As shown in the figure, when the processing execution timing differs between the basic controller and the extended controller, the input variable c has not changed at the timing of the input processing I of the basic controller in any cycle in the figure, but changes immediately thereafter. Then, in the input process I of the extended controller after that, the input variable c after the change is input. As a result, in this cycle, the output variable u changes, but the output variable s does not change. The output variable s changes during the next cycle. Therefore, as shown in the figure, a large deviation occurs between the timing when the output variable u changes and the timing when the output variable s changes. In other words, the timing for inputting the input variable c after the change is greatly different between the basic and the extended as shown in the figure. That is, “uniqueness (or synchronism) of program output” is impaired.

特開平9−91011号公報JP-A-9-91011 特開平7−28390号公報JP-A-7-28390

プログラマブルコントローラのアプリケーションは、近年、複雑化、大容量化してきており、複数の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.

また、上述した「プログラムの出力の一義性(または同期性)」が損なわれないようにする必要がある。「プログラムの出力の一義性(または同期性)」が保てないと、例えば上記のように位置決め精度の悪化を招き、それによって誤動作や何らかの危険な問題が生じる可能性もあるので、こちらの方が最適な負荷配分を行うことよりも優先順位が高い。   Further, it is necessary to prevent the above-described “uniqueness (or synchronism) of program output” from being lost. If the “uniqueness (or synchronism) of the program output” cannot be maintained, for example, as described above, the positioning accuracy may be deteriorated, which may cause malfunction and some dangerous problems. Has a higher priority than optimal load distribution.

本発明の課題は、複数の演算処理部を有し、任意のアプリケーション実行に係わる負荷を複数の演算処理部に分散させるPLCシステムにおいて、プログラムの出力の一義性(同期性)を保ったうえでほぼ最適な負荷配分を行えるPLCシステム、その開発支援装置等を提供することである。   An object of the present invention is to maintain a program output unambiguousness (synchronization) in a PLC system that has a plurality of arithmetic processing units and distributes a load related to execution of an arbitrary application to a plurality of arithmetic processing units. It is to provide a PLC system that can perform almost optimal load distribution, a development support device, and the like.

本発明のPLCシステムは、開発支援装置と複数の演算処理部を有し、任意のアプリケーションの実行に係わる負荷を該複数の演算処理部に分散させて実行するPLCシステムであって、前記開発支援装置は、前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、前記アプリケーションを構成する複数の処理単位毎に、その処理単位に係わる前記実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出手段と、前記アプリケーションを構成する複数の処理単位毎に、少なくともその処理単位に係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、前記アプリケーションの負荷を前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各処理単位それぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有する処理単位は同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記アプリケーションの各処理単位を前記各演算処理部に配分する負荷配分手段を有し、前記各演算処理部は、自己に割り当てられた全ての処理単位に係る前記入力変数をまとめて入力し、該自己に割り当てられた全ての処理単位を順次実行し、該実行結果をまとめて出力する。   The PLC system of the present invention is a PLC system that 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 and executes the development support. An apparatus includes: a compiling unit that generates an execution object code by compiling the application; and a total execution object for obtaining a total number of sizes of the execution object code related to the processing unit for each of a plurality of processing units constituting the application. A code size calculating means; variable list information generating means for generating variable list information including at least an input variable related to the processing unit for each of a plurality of processing units constituting the application; and the load of the application. Means for allocating to the arithmetic processing unit, wherein the total Based on the total execution object code size of each processing unit calculated by the line object code size calculating means and the variable list information, processing units having the common input variable are distributed to the same arithmetic processing unit. And a load distribution means for allocating each processing unit of the application to each arithmetic processing unit so that the load of each of the plurality of arithmetic processing units is substantially equal while satisfying this condition. The processing unit collectively inputs the input variables related to all the processing units assigned to itself, sequentially executes all the processing units assigned to the self, and outputs the execution results collectively.

あるいは、本発明のPLCシステムは、開発支援装置と複数の演算処理部を有し、プログラム本体と該プログラム本体から呼び出される各種POUより成る複数のプログラムより構成される任意のアプリケーションの実行に係わる負荷を、前記複数の演算処理部に分散させて実行するPLCシステムであって、前記開発支援装置は、前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、前記アプリケーションを構成する前記各プログラム毎に、少なくともそのプログラムに係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズを求めるPOUサイズ算出手段と、前記コンパイル時に前記POUの呼び出し情報を求める呼出情報生成手段と、前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズと、前記POUの呼び出し情報とに基づいて、前記アプリケーションを構成する前記各プログラム毎に、そのプログラムに係わるプログラム本体または各POUの前記実行オブジェクトコードのサイズと各POUの実行回数とに応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出手段と、前記各プログラムを前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各プログラムそれぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有するプログラムは同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記各プログラムを前記各演算処理部に配分する負荷配分手段とを有し、前記各演算処理部は、自己に割り当てられた全てのプログラムに係る前記入力変数をまとめて入力し、該自己に割り当てられた全てのプログラムを順次実行し、該実行結果をまとめて出力する。   Alternatively, the PLC system of the present invention includes a development support apparatus and a plurality of arithmetic processing units, and a load related to execution of an arbitrary application including a program main body and a plurality of programs that are called from the program main body. Is distributed to the plurality of arithmetic processing units, and the development support device compiles the application to generate an execution object code, and each of the components constituting the application For each program, variable list information generating means for generating variable list information including at least input variables related to the program, POU size calculating means for determining the size of the execution object code of each of the program body or POU, and the compilation Sometimes Based on the call information generating means for obtaining the POU call information, the size of the execution object code of each of the program body or POU, and the POU call information, for each program constituting the application, A total execution object code size calculating means for calculating a total number of execution object code sizes according to the size of the execution object code of each program body or each POU and the number of executions of each POU; A means for allocating to the processing unit, having a common input variable based on a total number of execution object code sizes of each of the programs calculated by the total execution object code size calculation means and the variable list information; Professional Load distribution means for distributing each program to each arithmetic processing unit so that the load of each of the plurality of arithmetic processing units is substantially equal while satisfying this condition on condition that the ram is distributed to the same arithmetic processing unit The arithmetic processing units collectively input the input variables related to all the programs assigned to itself, sequentially execute all the programs assigned to the self, and collect the execution results. Output.

上記演算処理部は、自己に割り当てられた全ての処理単位(またはプログラム)に係る入力変数をまとめて入力し、該自己に割り当てられた全ての処理単位(またはプログラム)を順次実行し、該実行結果をまとめて出力する。各演算処理部がこの様な動作を行う場合には、共通の入力変数を有する「処理単位」(またはプログラム)が、異なる演算処理部に配分されてしまうと、プログラムの出力の一義性(同期性)を保てなくなる。これに対して上記構成のPLCシステム、その開発支援装置によれば、この様な問題が生じないようにでき、そのうえでほぼ最適な負荷配分を行うことが可能となる。   The arithmetic processing unit collectively inputs input variables relating to all processing units (or programs) assigned to itself, sequentially executes all the processing units (or programs) assigned to the self, Output the results together. When each arithmetic processing unit performs such an operation, if the “processing unit” (or program) having a common input variable is distributed to different arithmetic processing units, the unambiguousness (synchronization) of the program output (synchronization) Gender). On the other hand, according to the PLC system having the above configuration and its development support apparatus, it is possible to prevent such a problem and to perform almost optimal load distribution.

また、上記PLCシステムにおいて、例えば、前記負荷配分手段は、前記共通の入力変数を有するプログラムはグループ化して該グループ単位で前記演算処理部に配分し、その後、グループ化されなかった残りの各プログラムを、該各プログラムの前記実行オブジェクトコードサイズ総数に基づいて、前記各演算処理部に割り当てられた全てのプログラムの実行オブジェクトコードサイズ総数の総和が該複数の演算処理部で略均等となるように、前記演算処理部に配分するように構成してもよい。   In the PLC system, for example, the load distribution means groups the programs having the common input variables and distributes them to the arithmetic processing unit in units of groups, and then each remaining program that is not grouped. Based on the total number of execution object code sizes of each program, the sum of the total number of execution object code sizes of all programs assigned to each arithmetic processing unit is substantially equal in the plurality of arithmetic processing units. The operation processing unit may be distributed.

あるいは、上記PLCシステムにおいて、例えば、前記負荷配分手段は、前記共通の入力変数を有するプログラムはグループ化すると共に、そのグループに属する全てのプログラムの実行オブジェクトコードサイズ総数の総和を該グループの実行オブジェクトコードサイズ総数として算出し、該算出されたグループ単位の実行オブジェクトコードサイズ総数と、グループ化されなかった各プログラムの前記実行オブジェクトコードサイズ総数とに基づいて、前記グループ化されたプログラムはグループ単位で配分し且つ前記各演算処理部に割り当てられた全てのプログラムの実行オブジェクトコードサイズ総数の総和が該複数の演算処理部で略均等となるように、前記各プログラムを前記演算処理部に配分するように構成してもよい。   Alternatively, in the PLC system, for example, the load distribution unit groups the programs having the common input variable, and calculates the total sum of the execution object code sizes of all the programs belonging to the group. Based on the calculated total execution object code size in group units and the total execution object code size of each program that has not been grouped, the grouped programs are calculated in group units. The respective programs are distributed to the arithmetic processing units so that the total sum of the execution object code sizes of all the programs allocated and allocated to the respective arithmetic processing units is substantially equal in the plurality of arithmetic processing units. You may comprise.

本発明のPLCシステム、その開発支援装置等によれば、複数の演算処理部を有し、任意のアプリケーション実行に係わる負荷を複数の演算処理部に分散させるPLCシステムにおいて、プログラムの出力の一義性(同期性)を保ったうえでほぼ最適な負荷配分を行える。自動的にほぼ最適な負荷配分を行えることに関しては、IEC61131-3のような構造化設計の場合に、特に顕著な効果を奏する。また、実行オブジェクトコードサイズを用いるので、PLC言語が何であっても関係なく適用可能である。   According to the PLC system of the present invention, its development support device, etc., in a PLC system having a plurality of arithmetic processing units and distributing a load related to arbitrary application execution to the plurality of arithmetic processing units, unambiguousness of program output Almost optimal load distribution can be performed while maintaining (synchronization). As regards being able to automatically perform almost optimal load distribution, there is 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.

(a),(b)は、本例のPLCシステムのシステム構成例(その1)、(その2)である。(A), (b) is a system configuration example (part 1) and (part 2) of the PLC system of this example. 開発支援装置の処理フローチャート図である。It is a process flowchart figure of a development assistance apparatus. (a)、(b)は「POUの呼び出し情報」の一例を示す図である。(A), (b) is a figure which shows an example of "POU call information." (a)は実行オブジェクトコードサイズの一例、(b)は総実行オブジェクトコードサイズの一例を一覧で示す図である。(A) is an example of an execution object code size, and (b) is a diagram showing an example of the total execution object code size in a list. 複数のCPUへの負荷配分結果の一例である。It is an example of the load distribution result to a plurality of CPUs. (a)、(b)はオブジェクトコードのステップ数について説明する為の図である。(A), (b) is a figure for demonstrating the step number of an object code. (a)、(b)は、従来の図13の例の場合における実施例1の具体例について説明する為の図である。(A), (b) is a figure for demonstrating the specific example of Example 1 in the case of the example of the conventional FIG. 実施例2の開発支援装置とPLCシステムを示す図である。It is a figure which shows the development assistance apparatus and PLC system of Example 2. FIG. (a)、(b)は、実施例2のプログラム配分結果とそれに応じた動作を示す図である。(A), (b) is a figure which shows the program distribution result of Example 2, and the operation | movement according to it. 変数リスト情報の具体例を示す図である。It is a figure which shows the specific example of variable list information. 実施例2の最適負荷配分機能部の処理の一部を示すフローチャート図である。It is a flowchart figure which shows a part of process of the optimal load distribution function part of Example 2. FIG. 開発支援装置のハードウェア構成例である。It is a hardware structural example of a development assistance apparatus. (a)、(b)は、従来のPLCシステムの動作を説明する為の図である。(A), (b) is a figure for demonstrating operation | movement of the conventional PLC system. 複数のプログラムに係る入力、出力をまとめて行う動作を説明する為の図である。It is a figure for demonstrating the operation | movement which collectively performs the input and output which concern on a some program. 図14の動作に係る従来の問題点を説明する為の図である。It is a figure for demonstrating the conventional problem concerning the operation | movement of FIG.

以下、図面を参照して、本発明の実施の形態について説明する。
図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.

上記の通り、図1(a)、(b)はどちらも、複数の演算処理部(CPU)がある構成となっている点では同じであり、複数の演算処理部(CPU)に負荷分散する点でも同じである。   As described above, both FIGS. 1A and 1B are the same in that there are a plurality of arithmetic processing units (CPUs), and the load is distributed to the plurality of arithmetic processing units (CPUs). The point is the same.

尚、各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)に係わる処理が実行される。これは、別の言い方をすれば、上記プログラム(PG)をプログラム本体と見做し、このプログラム本体から上記各種POUを呼び出すことで、1つのプログラムの処理が実現するものと言うこともできる。よって、上記「処理単位」を、プログラム本体と、当該プログラム本体から呼び出される1以上のPOUとから構成されるものと見做してもよい。   When each program (PG) calls various POUs such as a function (FCT) and a function block (FB), processing related to the program (PG) is executed. In other words, it can be said that processing of one program is realized by regarding the program (PG) as a program body and calling the various POUs from the program body. Therefore, the “processing unit” may be regarded as being composed of a program body and one or more POUs called from the program body.

あるいは、上記PGは当該PGから呼び出される1以上のPOUも含むものとし、上記のようにPGが上記「処理単位」(1つのプログラム)に相当するものと見做してもよい(但し、この場合でも、後述するサイズ算出に関しては、PGのサイズはプログラム本体部分としてのサイズとなる)。   Alternatively, the PG may include one or more POUs called from the PG, and the PG may be regarded as corresponding to the “processing unit” (one program) as described above (however, in this case) However, regarding the size calculation described later, the size of the PG is the size of the program body).

尚、図3(b)には、図3(a)に示す各プログラムPG1〜PG5のうち一例としてプログラムPG1についてのみ「POUの呼び出し情報」のデータ格納例を示す。
これより、図3(b)も参照してプログラムPG1を例にして詳細に説明するならば、プログラムPG1は、ファンクションFCT1、ファンクションFCT1、ファンクションFCT2、ファンクションブロックFB1、ファンクションブロックFB1を順次呼び出す。尚、ファンクションFCT1が最初に2回連続して呼び出されているように、同一のファンクション/ファンクションブロックが複数回呼び出される場合もある。
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.
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であることを意味する。尚、ここではPG(プログラム本体)もPOUの一種であると見做しているが、PGはPOUとは区別して扱うようにしてもよい。   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. Although PG (program body) is also considered as a kind of POU here, PG may be handled separately from POU.

図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 is 1, FB3 is 1, FCT1 is 5, FCT2 is 3, and FCT4 is 1, and the number of executions (1 time) of the program PG1 itself (program body) 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+6×1+3×5+1×3
=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 + 6 × 1 + 3 × 5 + 1 × 3
= 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は、ハードウェア的には例えばパソコン等の汎用のコンピュータ装置により実現できる。
以上説明した一実施形態を、実施例1とする。
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.
One embodiment described above is referred to as Example 1.

以下、実施例2について説明する。
但し、実施例2の説明を行う前に、上記従来の図13の例の場合における実施例1の具体例について、図7を参照して説明する。
Example 2 will be described below.
However, before describing the second embodiment, a specific example of the first embodiment in the case of the conventional example of FIG. 13 will be described with reference to FIG.

まず、図13(a)の例の場合、上記実施例1による負荷配分を行った結果は、例えば図7(a)に示す通りとなる。尚、ここでは、図1(a)に示す例に適用するものとし、図1(a)に示す2つのPLCモジュール2を、ここでは基本コントローラ2、拡張コントローラ2として区別して記述するものとする。   First, in the case of the example of FIG. 13A, the result of the load distribution according to the first embodiment is as shown in FIG. 7A, for example. Here, it is assumed that the present invention is applied to the example shown in FIG. 1A, and the two PLC modules 2 shown in FIG. 1A are described separately as a basic controller 2 and an extended controller 2 here. .

また、図7(b)は図1(a)に示すPLCシステムを示すものであって、2つのPLCモジュール2の詳細構成例を示しており、ここでは図13(b)に示した従来構成と略同様の構成であるものとする。また、図示の2つのPLCモジュール2の詳細構成例には、図7(a)に示す負荷配分結果を反映させている。また、図7(b)に示す入出力機器5は、図13(b)に示した従来構成における入出力機器102と略同様の構成であり、あるいは図1に示すI/Oモジュール3に相当する構成であると考えてもよい。   FIG. 7B shows the PLC system shown in FIG. 1A, showing a detailed configuration example of two PLC modules 2. Here, the conventional configuration shown in FIG. 13B is shown. It is assumed that the configuration is substantially the same. Moreover, the load distribution result shown to Fig.7 (a) is reflected in the detailed structural example of two PLC modules 2 shown in figure. Further, the input / output device 5 shown in FIG. 7B has substantially the same configuration as the input / output device 102 in the conventional configuration shown in FIG. 13B, or corresponds to the I / O module 3 shown in FIG. You may think that it is the structure which does.

尚、2つのPLCモジュール2は略同様の構成であるが、ここでは符号は区別して付してある。すなわち、図7(b)に示す通り、基本コントローラ2は、入力メモリ21a、出力メモリ22a、マイコン23aを有する。同様に、拡張コントローラ2は、入力メモリ21b、出力メモリ22b、マイコン23bを有する。尚、マイコン23aは図1におけるCPU2aに相当し、マイコン23bはCPU2bに相当する。   The two PLC modules 2 have substantially the same configuration, but the reference numerals are distinguished here. That is, as shown in FIG. 7B, the basic controller 2 includes an input memory 21a, an output memory 22a, and a microcomputer 23a. Similarly, the expansion controller 2 has an input memory 21b, an output memory 22b, and a microcomputer 23b. The microcomputer 23a corresponds to the CPU 2a in FIG. 1, and the microcomputer 23b corresponds to the CPU 2b.

上記図7(a)に示す例の場合、例えば基本コントローラ2にはプログラムAとプログラムDが割り当てられ、拡張コントローラ2にはプログラムBとプログラムCとが割り当てられる。これより、基本コントローラ2、拡張コントローラ2の両方とも、トータルのオブジェクトサイズは‘50’となり、均等に負荷配分が行われることになる。しかしながら、上記図15で説明した問題が生じる。つまり「プログラムの出力の一義性(または同期性)」が損なわれることになる。   In the example shown in FIG. 7A, for example, the program A and the program D are assigned to the basic controller 2, and the program B and the program C are assigned to the extended controller 2. Thus, both the basic controller 2 and the expansion controller 2 have a total object size of '50', and load distribution is performed evenly. However, the problem described in FIG. 15 occurs. That is, “uniqueness (or synchronism) of program output” is lost.

すなわち、この場合、図7(b)に示すように、開発支援装置10においてコンパイラ11等によって生成された各プログラムの実行オブジェクトコード(プログラムA,B,C,D)は、それぞれ、基本コントローラ2、拡張コントローラ2の何れか一方にダウンロードされる。本例では、図7(a)に示す負荷配分に従って、プログラムAとプログラムDは基本コントローラ2にダウンロードされ、プログラムBとプログラムCは拡張コントローラ2にダウンロードされる。   That is, in this case, as shown in FIG. 7B, the execution object code (programs A, B, C, D) of each program generated by the compiler 11 or the like in the development support apparatus 10 is the basic controller 2. And downloaded to either one of the expansion controllers 2. In this example, the program A and the program D are downloaded to the basic controller 2 and the program B and the program C are downloaded to the expansion controller 2 according to the load distribution shown in FIG.

これによって、その後は、基本コントローラ2においてはマイコン23a(CPU2a)がプログラムAとプログラムDを定周期で実行する毎に、上記図14で説明した上記入力処理Iとして変数a、変数c、変数dをまとめて入力メモリ21aから読込み、各プログラムA,Dを順次実行し、その処理結果(変数s、変数v)をまとめて出力メモリ22aに書き込むことになる(出力処理Oを実行する)。   Thus, thereafter, every time the microcomputer 23a (CPU 2a) executes the program A and the program D at a constant cycle in the basic controller 2, the input process I described in FIG. Are read from the input memory 21a, the programs A and D are sequentially executed, and the processing results (variable s, variable v) are collectively written in the output memory 22a (output processing O is executed).

尚、図では入力メモリ21aには変数a、変数c、変数dを示すが、これは入力メモリ21aに格納されている変数のうちプログラムA及びプログラムDによって読み込む変数のみを示している。よって、入力メモリ21aには不図示の他の変数も格納されていてよい。これは、出力メモリ22a、入力メモリ21b、出力メモリ22bに関しても同様である。   In the figure, variable a, variable c, and variable d are shown in the input memory 21a, but only variables read by the program A and program D among the variables stored in the input memory 21a are shown. Therefore, other variables (not shown) may be stored in the input memory 21a. The same applies to the output memory 22a, the input memory 21b, and the output memory 22b.

また、図13(b)で説明した従来例と同様、入力メモリ21a、21bに格納される各変数の値は、入出力機器5からの入力処理に伴って更新される場合がある。同様に、出力メモリ22a、22bに格納される各変数の値は、出力処理によって入出力機器5へ出力される。これら入力処理、出力処理は、入出力機器5側が行っても良いし、マイコン23a,23bが上記プログラムA〜D以外の他のプログラムを実行することによって行っても良い。   Similarly to the conventional example described with reference to FIG. 13B, the values of the variables stored in the input memories 21 a and 21 b may be updated in accordance with input processing from the input / output device 5. Similarly, the values of the variables stored in the output memories 22a and 22b are output to the input / output device 5 by output processing. These input processing and output processing may be performed by the input / output device 5 side, or may be performed by the microcomputers 23a and 23b executing programs other than the programs A to D.

拡張コントローラ2においてはマイコン23b(CPU2b)がプログラムBとプログラムCを定周期で実行する毎に、上記図14で説明した上記入力処理Iとして変数b、変数cをまとめて入力メモリ21bから読込み、各プログラムB,Cを順次実行し、その処理結果(変数t、変数u)をまとめて出力メモリ22bに書き込むことになる(出力処理Oを実行する)。   In the extended controller 2, every time the microcomputer 23b (CPU 2b) executes the program B and the program C at a constant cycle, the variable b and the variable c are collectively read from the input memory 21b as the input process I described in FIG. The programs B and C are sequentially executed, and the processing results (variable t, variable u) are collectively written in the output memory 22b (output processing O is executed).

上記の様に、基本コントローラ2、拡張コントローラ2の両方で入力データとして変数cを用いており、入力変数cの値に応じて出力変数s,uの値が決まることになり、よって、入力変数cの値が変われば出力変数s,uの値も変わることになる。従って図15で説明した通り、変数cが変化するタイミングと、基本コントローラ2、拡張コントローラ2各々の入力処理Iのタイミングとによって、場合によっては、出力変数sが変化するタイミングと出力変数uが変化するタイミングとが大きく異なることになる。つまり、上述した「プログラムの出力の一義性(または同期性)」が保てないことになる。   As described above, the variable c is used as the input data in both the basic controller 2 and the expansion controller 2, and the values of the output variables s and u are determined according to the value of the input variable c. If the value of c changes, the values of the output variables s and u also change. Accordingly, as described with reference to FIG. 15, the timing at which the output variable s changes and the output variable u may change depending on the timing at which the variable c changes and the timing of the input processing I of each of the basic controller 2 and the extended controller 2. The timing to do is very different. That is, the above-mentioned “uniqueness (or synchronism) of program output” cannot be maintained.

この様に、「プログラムの出力の一義性(または同期性)」を損なわないことが条件に加わると、上記実施例1の負荷配分結果は、適切(最適)とは言えないことになる。
これに対して、実施例2では、プログラムの出力の一義性(または同期性)を保ったうえでほぼ最適な(略均等な)負荷配分を行える。
As described above, if the condition that “uniqueness (or synchronism) of program output” is not impaired is added, the load distribution result of the first embodiment cannot be said to be appropriate (optimal).
On the other hand, in the second embodiment, it is possible to perform almost optimal (substantially equal) load distribution while maintaining the unambiguousness (or synchronization) of the output of the program.

図8に、実施例2の開発支援装置20を含むPLCシステムを示す。
開発支援装置20は、コンパイラ21、リンカ22、POUサイズ算出機能部23、呼出情報生成機能部24、最適負荷配分機能部25、変数リスト情報生成機能部26を有する。このうち、コンパイラ21、リンカ22、POUサイズ算出機能部23、呼出情報生成機能部24は、上記実施例1のコンパイラ11、リンカ12、POUサイズ算出機能部13、呼出情報生成機能部14と略同様であってよく、ここでは特に説明しない。
FIG. 8 shows a PLC system including the development support apparatus 20 of the second embodiment.
The development support apparatus 20 includes a compiler 21, a linker 22, a POU size calculation function unit 23, a call information generation function unit 24, an optimum load distribution function unit 25, and a variable list information generation function unit 26. Among them, the compiler 21, the linker 22, the POU size calculation function unit 23, and the call information generation function unit 24 are abbreviated as the compiler 11, the linker 12, the POU size calculation function unit 13, and the call information generation function unit 14 of the first embodiment. It may be the same and is not specifically described here.

開発支援装置20は、プログラムの出力の一義性(または同期性)を保ったうえでほぼ最適な(略均等な)負荷配分を行える。これより、上記図13(a)の例の場合、各プログラムA,B,C,Dの配分結果は、例えば図8の図上下側に示す通りとなるが、これについては、後に図9も参照して説明する。   The development support apparatus 20 can perform almost optimal (substantially equal) load distribution while maintaining the unambiguousness (or synchronization) of the program output. Thus, in the example of FIG. 13A, the distribution results of the programs A, B, C, and D are as shown on the upper and lower sides of FIG. 8, for example. The description will be given with reference.

変数リスト情報生成機能部26は、変数リスト情報を生成するものであり、既存のコンパイラの機能の一部と考えてよい。尚、変数リスト情報の具体例は、図10に示し、後に説明する。   The variable list information generation function unit 26 generates variable list information and may be considered as a part of the functions of an existing compiler. A specific example of the variable list information is shown in FIG. 10 and will be described later.

最適負荷配分機能部25は、まず、上記最適負荷配分機能部15と同様に、各プログラム毎に、そのプログラムの総実行オブジェクトコードサイズ(実行オブジェクトコードサイズ総数)を上記(1)式を用いて算出する。上記の例では、各プログラムA,B,C,D毎の総実行オブジェクトコードサイズを算出することになる。   The optimum load distribution function unit 25 first calculates the total execution object code size (total number of execution object code sizes) of the program for each program using the above equation (1), as with the optimum load distribution function unit 15. calculate. In the above example, the total execution object code size for each program A, B, C, D is calculated.

最適負荷配分機能部25は、続いて、上記変数リスト情報を用いて、複数のプログラムが同じ入力変数を持つ場合には、当該複数のプログラムをひとまとめにして扱う。ひとまとめにした複数のプログラム(ペアやグループ;以下、プログラム・グループという)の総実行オブジェクトコードサイズの総和(以下、グループサイズ総数というものとする)を求めるようにしてもよい。例えば上記プログラムA〜Dの例では、プログラムAとプログラムCをひとまとめにすることになり、プログラム・グループ“A+C”のグループサイズ総数は10+30=40となる。   Next, the optimum load distribution function unit 25 uses the variable list information to handle the plurality of programs as a whole when the plurality of programs have the same input variable. You may make it obtain | require the sum total (henceforth a total number of group sizes) of the total execution object code size of several programs (a pair and group; hereafter called a program group) put together. For example, in the example of the programs A to D, the program A and the program C are grouped together, and the total group size of the program group “A + C” is 10 + 30 = 40.

そのうえで、例えばまず、グループ化された複数のプログラムをグループ単位で複数のCPUに対して配分する。上記の例ではプログラム・グループは1つだけなので、このグループすなわち上記プログラム・グループ“A+C”を(プログラムAとプログラムCとを)、基本コントローラ2、拡張コントローラ2の何れか一方に配分する。図8や図9に示す例では基本コントローラ2に配分しているが、この例に限らない。   In addition, for example, first, a plurality of grouped programs are distributed to a plurality of CPUs in units of groups. In the above example, since there is only one program group, this group, that is, the program group “A + C” (program A and program C) is allocated to either the basic controller 2 or the expansion controller 2. In the examples shown in FIGS. 8 and 9, the basic controller 2 is allocated, but the present invention is not limited to this example.

また、複数のグループがある場合にも、グループ単位で複数のCPUに配分するが、この配分方法は任意であってよいが(例えば、基本コントローラ2と拡張コントローラ2とに交互に配分する等)、以下に説明する方法であってもよい。   Further, even when there are a plurality of groups, distribution is made to a plurality of CPUs in units of groups, but this distribution method may be arbitrary (for example, distribution to the basic controller 2 and the expansion controller 2 alternately). The method described below may be used.

すなわち、各グループの上記グループサイズ総数に基づいて、上記実施例1と略同様の配分方法により、各グループを複数のCPUに配分するようにしてもよい。このように、プログラム・グループが複数(特に3つ以上)となった場合には、各グループのグループサイズ総数に基づいて、グループ単位での配分が終了した段階でも出来るだけ処理負荷が略均等となるように配分を行うようにしてもよい。   That is, based on the total group size of each group, each group may be distributed to a plurality of CPUs by a distribution method substantially similar to that of the first embodiment. In this way, when there are a plurality of program groups (especially three or more), the processing load is approximately equal as much as possible even at the stage where distribution in groups is completed based on the total group size of each group. You may make it distribute so that it may become.

その後、残りのプログラム(グループ化されたプログラム以外のプログラム)を、その総実行オブジェクトコードサイズに基づいて配分する。つまり、上記プログラム・グループの配分が確定した状態から、実施例1と略同様の配分方法により配分を行う。   Thereafter, the remaining programs (programs other than the grouped programs) are distributed based on the total execution object code size. That is, the distribution is performed by the distribution method substantially the same as that in the first embodiment from the state in which the distribution of the program group is fixed.

あるいは、プログラム・グループを1つのプログラムとして扱うことで、プログラムとプログラム・グループとを区別することなく一緒にまとめて配分するようにしてもよい。この場合は、例えば、プログラム・グループをプログラムとして扱うと共にグループサイズ総数を総実行オブジェクトコードサイズとして扱ったうえで、実施例1の方法と略同様にしてプログラム配分を行う。上記の例では、例えば、プログラムB、プログラムD、プログラム“A+C”の3つのプログラムがあり、各プログラムの総実行オブジェクトコードサイズが20、40、40であるものとして、実施例1の手法により例えば2つのCPU(2aと2b、もしくは4aと4b)に対するプログラム配分を行うことになる。   Alternatively, by treating the program group as one program, the program and the program group may be collectively distributed without being distinguished. In this case, for example, the program group is handled as a program and the total group size is handled as the total execution object code size. In the above example, for example, there are three programs B, D, and “A + C”, and the total execution object code size of each program is 20, 40, 40. Program distribution is performed for two CPUs (2a and 2b, or 4a and 4b).

何れにしても、実施例2では、複数のプログラムを複数のCPUに配分する処理において、以下の優先順位に従って処理を行うことになる。
優先順位1;同一変数を使用しているプログラムは、同一CPU(コントローラ)に配置する。
In any case, in the second embodiment, in the process of distributing a plurality of programs to a plurality of CPUs, the processes are performed according to the following priority order.
Priority 1; programs using the same variable are placed on the same CPU (controller).

優先順位2;各CPU(コントローラ)の処理負荷が略均等となるようにプログラム配分する。
実施例1では、優先順位2の条件のみに従って配分処理を行ったが、実施例2では優先順位1の条件が加わり、且つこれは優先順位2よりも優先順位が高いものである。
Priority 2; programs are distributed so that the processing load of each CPU (controller) is substantially equal.
In the first embodiment, the distribution process is performed only according to the priority order 2 condition. However, in the second embodiment, the priority order 1 condition is added, which is higher in priority order than the priority order 2.

そして、実施例2では上記一例の場合、プログラム配分結果は例えば図8や図9(a)に示す通りとなる。例えば、まず、プログラム・グループの配分を行う。本例ではプログラム・グループは“A+C”の1つのみであるので、これを基本コントローラ2、拡張コントローラ2の何れかに配分する。図8や図9(a)に示す例では基本コントローラ2に配分している。次に、残りのプログラムB,Dを配分する。まず、比較的オブジェクトサイズが大きいプログラムDが配分対象となり、拡張コントローラ2に割り当てることになる。これにより、基本コントローラ2、拡張コントローラ2の両方で負荷が‘40’になるので、プログラムBはどちらに割り当ててもよいが、図8や図9(a)に示す例では拡張コントローラ2に配分している。   In the second embodiment, in the case of the above example, the program distribution result is as shown in FIGS. 8 and 9A, for example. For example, first, program groups are allocated. In this example, since there is only one program group “A + C”, it is distributed to either the basic controller 2 or the expansion controller 2. In the example shown in FIGS. 8 and 9A, the basic controller 2 is allocated. Next, the remaining programs B and D are allocated. First, a program D having a relatively large object size is to be distributed and assigned to the expansion controller 2. As a result, both the basic controller 2 and the expansion controller 2 have a load of “40”, so the program B may be assigned to either, but in the example shown in FIG. 8 or FIG. is doing.

これより、図8や図9(a)に示すように、基本コントローラ2にはプログラムAとプログラムCが配分され、拡張コントローラ2にはプログラムBとプログラムDが配分される。実施例1の方法を用いる場合には図7(a)に示すように、基本コントローラ2の負荷は‘50’で、拡張コントローラ2の負荷も‘50’であり、完全に均等に負荷配分できている。一方、本例では図9(a)に示すように、基本コントローラ2の負荷は‘40’で、拡張コントローラ2の負荷は‘60’であり、完全に均等に負荷配分することはできていない。しかしながら、同じ入力変数cを用いるプログラムAとプログラムCを同じCPU2(基本コントローラ2)に割り当てることが出来ているので、「プログラムの出力の一義性(または同期性)」が損なわれないで済む。   As a result, as shown in FIG. 8 and FIG. 9A, the program A and the program C are allocated to the basic controller 2, and the program B and the program D are allocated to the extended controller 2. When the method of the first embodiment is used, as shown in FIG. 7A, the load of the basic controller 2 is “50” and the load of the expansion controller 2 is also “50”. ing. On the other hand, in this example, as shown in FIG. 9A, the load of the basic controller 2 is “40” and the load of the expansion controller 2 is “60”, and the load cannot be distributed completely evenly. . However, since the program A and the program C using the same input variable c can be assigned to the same CPU 2 (basic controller 2), the “uniqueness (or synchronism) of program output” is not impaired.

これより、図9(b)に示すように、基本コントローラ2の入力処理IにおいてプログラムA,Cの入力変数a,cがまとめて入力され、この入力変数a,cに基づいてプログラムA,Cが順次実行され、基本コントローラ2の出力処理OにおいてプログラムAの処理結果である出力変数sとプログラムCの処理結果である出力変数uがまとめて出力メモリ22aに出力される。これより、図示の通り、入力変数cが変化すると、これに応じて出力変数s,uも略同一のタイミングで変化することになる。つまり、「プログラムの出力の一義性(または同期性)」が保たれていることになる。   As a result, as shown in FIG. 9B, the input variables a and c of the programs A and C are input together in the input process I of the basic controller 2, and the programs A and C are based on the input variables a and c. Are sequentially executed, and in the output process O of the basic controller 2, the output variable s which is the process result of the program A and the output variable u which is the process result of the program C are collectively output to the output memory 22a. Thus, as shown in the figure, when the input variable c changes, the output variables s and u change accordingly at substantially the same timing. That is, “uniqueness (or synchronism) of program output” is maintained.

ここで、図10に上記変数リスト情報の具体例を示す。また、図11に、実施例2の最適負荷配分機能部25の処理の一部を示すフローチャート図を示す。以下、図10、図11を参照して、実施例2の負荷配分処理の具体例について説明する。   FIG. 10 shows a specific example of the variable list information. FIG. 11 is a flowchart showing a part of the process of the optimum load distribution function unit 25 according to the second embodiment. Hereinafter, a specific example of the load distribution process according to the second embodiment will be described with reference to FIGS. 10 and 11.

まず、上述した説明では、配分対象のプログラムは、プログラムA〜Dの4つとしたが、図10に示す例では16個のプログラムがあるものとし、これら各プログラムの変数リスト情報が図10に示すPG情報0、PG情報1、・・・PG情報15である。尚、これらの変数リスト情報に対応するプログラムを、PG0、PG1、・・・PG15等と呼ぶものとする。   First, in the above description, the distribution target programs are four programs A to D. However, in the example shown in FIG. 10, it is assumed that there are 16 programs, and variable list information of each program is shown in FIG. PG information 0, PG information 1,... PG information 15. Note that the programs corresponding to these variable list information are called PG0, PG1,.

上記PG情報0、PG情報1、・・・PG情報15の各変数リスト情報のデータ構成は略同様であり、図10ではPG情報0とPG情報1のデータ構成を示すが、図示の通りデータ構成は同じであり、同一符号を付してある。   The data structure of each variable list information of PG information 0, PG information 1,... PG information 15 is substantially the same, and FIG. 10 shows the data structure of PG information 0 and PG information 1. The configuration is the same, and the same reference numerals are given.

よって、特にPG情報0、PG情報1を区別せずに説明するが、図示の通り変数リスト情報は、プログラム番号41、サイズ42、グループ番号43、コントローラ番号44、入力変数個数45、入力変数群46、出力変数個数47、出力変数群48等から成る。   Therefore, the PG information 0 and PG information 1 will be described without distinction. As shown in the figure, the variable list information includes a program number 41, a size 42, a group number 43, a controller number 44, an input variable number 45, and an input variable group. 46, the number of output variables 47, an output variable group 48, and the like.

プログラム番号41は、各プログラムの識別番号であり、例えば上記PG0は‘0’、PG1は‘1’、PG15は‘15’等とする。
サイズ42は、例えば上記実施例1の図4(a)に示す各プログラム(PG1〜PG5)毎の実行オブジェクトコードサイズ等に相当する、各プログラム本体のオブジェクトコードのサイズ情報である。
The program number 41 is an identification number of each program. For example, PG0 is “0”, PG1 is “1”, PG15 is “15”, and the like.
The size 42 is, for example, the size information of the object code of each program body corresponding to the execution object code size for each program (PG1 to PG5) shown in FIG.

グループ番号43は、そのプログラムと同じ入力変数を有する他のプログラムを示すBit情報であり、各プログラムに1Bitずつ割り当て、よって上記の例ではPG0〜PG15の16個のプログラムに対応して16Bitの情報となる。グループ番号43は、初期状態では全Bit情報が‘0’となっている。グループ番号43については、後に図11を参照して詳しく説明する。   The group number 43 is Bit information indicating another program having the same input variable as the program, and 1 bit is assigned to each program. Therefore, in the above example, 16-bit information corresponding to 16 programs PG0 to PG15. It becomes. In the group number 43, all bit information is “0” in the initial state. The group number 43 will be described in detail later with reference to FIG.

コントローラ番号44は、そのプログラムの配分先のCPU(コントローラ)を示す情報であり、ここでは、基本コントローラは‘0’、拡張コントローラは‘1’であるものとする。この例では、コントローラ番号44は、後述する図11の処理によって‘0’または‘1’が設定されるものであり、初期状態では無データとなっている。   The controller number 44 is information indicating the CPU (controller) to which the program is distributed. Here, the basic controller is “0” and the extended controller is “1”. In this example, the controller number 44 is set to ‘0’ or ‘1’ by the processing of FIG. 11 described later, and has no data in the initial state.

入力変数個数45は、入力変数群46に格納される入力変数の個数である。
入力変数群46は、そのプログラムで用いる各入力変数(変数名、変数の格納アドレス等、その変数を示す情報;本例では各入力変数の格納アドレスであるものとする)である。
The input variable number 45 is the number of input variables stored in the input variable group 46.
The input variable group 46 is each input variable used in the program (information indicating the variable, such as a variable name, a variable storage address, etc .; in this example, it is a storage address of each input variable).

出力変数個数47は、出力変数群48等に格納される出力変数の個数である。
出力変数群48は、そのプログラムで用いる各出力変数(変数名、変数の格納アドレス等、その変数を示す情報;本例では各出力変数の格納アドレスであるものとする)である。
The output variable number 47 is the number of output variables stored in the output variable group 48 or the like.
The output variable group 48 is each output variable used in the program (information indicating the variable, such as a variable name and a variable storage address; in this example, it is a storage address of each output variable).

概略的には、図10に示すように、任意の2つのPG情報(図ではPG情報0とPG情報1)の入力変数群46の各入力変数(各変数の格納アドレス)を総当りで比較して、一致するものがあるか否かをチェックする。例えばPG情報0とPG情報1とで一致する格納アドレスが1つ以上ある場合には(同じ入力変数が1つ以上ある場合には)、当該2つのPG情報のプログラムは、同じCPU(コントローラ)に配分すべきものとする。つまり、1つのグループにまとめる。詳しくは図11を参照して説明する。   Schematically, as shown in FIG. 10, each input variable (storage address of each variable) of the input variable group 46 of arbitrary two PG information (PG information 0 and PG information 1 in the figure) is compared brute-force. Then, it is checked whether there is a match. For example, when there is one or more storage addresses that match between PG information 0 and PG information 1 (when there are one or more same input variables), the programs of the two PG information are the same CPU (controller). Should be allocated. That is, they are grouped into one group. Details will be described with reference to FIG.

図11において、まず、チェック対象プログラムのPG情報の入力変数群46を読み込み(ステップS21)、比較対象プログラムのPG情報の入力変数群46を読み込む(ステップS22)。比較対象プログラムは、チェック対象プログラム以外の全てのプログラムが成り得る。例えば、チェック対象プログラムをPG0とした場合、比較対象プログラムと成り得るのはPG1〜PG15であり、ステップS26の判定がNOとなる毎に比較対象プログラムを順次更新していく(PG1→PG2→PG3→・・・→PG14→PG15)。そして、チェック対象プログラムと各比較対象プログラムとで同じ入力変数を有するか否かをステップS23,S24,S25の処理によりチェックする(アドレス比較チェックを行う)。チェック完了したら、ステップS27がNOとなる毎にチェック対象プログラムを更新し、次のチェック対象プログラムについても同様にして各比較対象プログラムとのアドレス比較チェックを行う。   In FIG. 11, first, the input variable group 46 of PG information of the check target program is read (step S21), and the input variable group 46 of PG information of the comparison target program is read (step S22). The comparison target program can be any program other than the check target program. For example, when the check target program is PG0, the comparison target programs can be PG1 to PG15, and the comparison target program is sequentially updated every time the determination in step S26 is NO (PG1 → PG2 → PG3). → ... → PG14 → PG15). Then, whether or not the check target program and each comparison target program have the same input variable is checked by the processing of steps S23, S24, and S25 (address comparison check is performed). When the check is completed, the check target program is updated every time the step S27 becomes NO, and the address comparison check with each comparison target program is similarly performed for the next check target program.

尚、次のチェック対象プログラムがPG1となったならば、比較対象プログラムはPG0とPG2〜PG15としてもよいし、既にチェック対象プログラムとなったプログラム(ここではPG0のみ)は除外してPG2〜PG15としてもよい。   If the next check target program is PG1, the comparison target programs may be PG0 and PG2 to PG15, or the programs that have already become the check target programs (here, only PG0) are excluded and PG2 to PG15. It is good.

ステップS23,S24,S25の処理では、チェック対象プログラムの入力変数群46の各入力変数(その格納アドレス)と、比較対象プログラムの入力変数群46の各入力変数(その格納アドレス)とを総当りで順次比較し、一致する入力変数(同じ格納アドレス)があった場合には(ステップS23,YES)、チェック対象プログラムと比較対象プログラムの両方のPG情報のグループ番号43の該当ビットを立てる(ビットONする)(ステップS24)。   In the processing of steps S23, S24, and S25, each input variable (its storage address) of the input variable group 46 of the check target program and each input variable (its storage address) of the input variable group 46 of the comparison target program are brute force. When there is a matching input variable (the same storage address) (step S23, YES), the corresponding bit of the group number 43 of the PG information of both the check target program and the comparison target program is set (bit ON) (step S24).

該当ビットとは、チェック対象プログラムのPG情報のグループ番号43においては、比較対象プログラムに対応するビットであり、比較対象プログラムのPG情報のグループ番号43においては、チェック対象プログラムに対応するビットである。尚、上記の通り、グループ番号43は、PG0〜PG15の16個のプログラムに対応した16Bitの情報である。ここでは、PG0に対応するビットをビット‘0’、PG1に対応するビットをビット‘1’、・・・PG15に対応するビットをビット‘15’と記すものとする。   The corresponding bit is a bit corresponding to the comparison target program in the group number 43 of the PG information of the check target program, and is a bit corresponding to the check target program in the group number 43 of the PG information of the comparison target program. . As described above, the group number 43 is 16-bit information corresponding to 16 programs PG0 to PG15. Here, the bit corresponding to PG0 is described as bit '0', the bit corresponding to PG1 as bit '1',..., And the bit corresponding to PG15 as bit '15'.

これより、例えば上記のPG0とPG1の例の場合、相互に一致する入力変数(格納アドレス)があった場合には、PG情報0のグループ番号43はビット‘1’がONし、PG情報1のグループ番号43はビット‘0’がONすることになる。尚、仮にPG0とPG15とを比較して、相互に一致する入力変数(格納アドレス)があった場合に、PG情報0のグループ番号43はビット‘15’がONし、PG情報15のグループ番号43はビット‘0’がONすることになる。尚、本手法では、どの変数が一致したのかはプログラム配分には関係ないので、一致した変数を示す情報を記録するようなことはない。   Thus, for example, in the case of the above PG0 and PG1, when there is an input variable (storage address) that matches each other, the bit number “1” is turned ON in the group number 43 of the PG information 0, and the PG information 1 In the group number 43, the bit “0” is turned ON. If PG0 and PG15 are compared and there is an input variable (storage address) that matches each other, the bit number “15” of the group number 43 of PG information 0 is turned ON, and the group number of PG information 15 For bit 43, bit '0' is turned ON. In this method, which variable matches is not related to program distribution, so information indicating the matched variable is not recorded.

図11に示す処理例では、チェック対象プログラムの全ての入力変数と、比較対象プログラムの全ての入力変数とを、総当りで比較チェックするまで(ステップS25の判定がYESとなるまで)上記ステップS23,S24の処理を繰り返し実行する。但し、これは一例であり、この例に限らず、例えばステップS24の処理を実行した場合にはステップS26へ移行するようにしてもよい。一致する入力変数が複数ある場合でも上記ステップS24の処理を複数回実行するだけなので、結局、ステップS24の処理を1回だけ実行する場合と比べて処理結果は変わらないからである。但し、本説明は図11に示す一例に沿って説明する。   In the processing example shown in FIG. 11, all the input variables of the check target program and all the input variables of the comparison target program are compared and checked in a round-robin manner (until the determination in step S25 becomes YES), step S23 above. , S24 is repeatedly executed. However, this is only an example, and the present invention is not limited to this example. For example, when the process of step S24 is executed, the process may proceed to step S26. This is because, even when there are a plurality of matching input variables, the process of step S24 is only executed a plurality of times, so that the process result is not changed compared to the case where the process of step S24 is executed only once. However, this description will be made along an example shown in FIG.

チェック対象プログラムの全ての入力変数と比較対象プログラムの全ての入力変数との総当りの比較チェックが完了したら(ステップS25,YES)、現在のチェック対象プログラムと他の全てのプログラムとの比較チェック処理が実行されたか否かを判定する(ステップS26)。   When the brute force comparison check between all the input variables of the check target program and all the input variables of the comparison target program is completed (step S25, YES), the comparison check process between the current check target program and all other programs It is determined whether or not is executed (step S26).

未だ現在のチェック対象プログラムとの比較チェック処理が行われていないプログラムが残っているならば(ステップS26、YES)、当該未処理のプログラムを新たな比較対象プログラムにしてステップS22に戻ることで、チェック対象プログラムと当該新たな比較対象プログラムとの比較チェック処理が開始されることになる。   If there is still a program that has not been subjected to the comparison check process with the current check target program (step S26, YES), the unprocessed program is made a new comparison target program and the process returns to step S22. The comparison check process between the check target program and the new comparison target program is started.

一方、他の全てのプログラムとの比較チェック処理が実行済みとなったならば(ステップS26,NO)、未だチェック対象プログラムとなっていないプログラムがあるか否かを確認し(ステップS27)、ある場合には(ステップS27,YES)当該未チェックのプログラムを新たなチェック対象プログラムとしてステップS21に戻る。これによって、当該新たなチェック対象プログラムと他の全てのプログラムとの比較チェック処理が開始されることになる。   On the other hand, if the comparison check process with all other programs has been executed (step S26, NO), it is confirmed whether there is a program that has not yet been checked (step S27). In such a case (step S27, YES), the program returns to step S21 with the unchecked program as a new check target program. As a result, the comparison check process between the new program to be checked and all other programs is started.

そして、全てのプログラムをチェック対象プログラムにして上記比較チェック処理を実行したならば、全てのプログラムの上記グループ番号43を参照して、ステップS28,S29,S30の処理を行うことで、同じ入力変数を有するプログラムは1つのグループにまとめて、当該グループ化されたプログラムはグループ単位でCPU(コントローラ)に配分する。   If the comparison check process is executed with all the programs as check target programs, the same input variables are obtained by performing the processes of steps S28, S29, and S30 with reference to the group number 43 of all the programs. Are grouped into one group, and the grouped program is distributed to the CPU (controller) in groups.

これは、まず、各プログラムの上記グループ番号43を参照して、そのプログラムがグループ化対象か否かを判定する(ステップS28)。すなわち、上記の例ではグループ番号43はPG0〜PG15の16個のプログラムに対応した16Bitの情報であるので、16Bit全てがOFFであるプログラムは、他のプログラムと共有する入力変数が1つも無いプログラムであり、グループ化対象ではないと判定され(ステップS28,NO)、そのままステップS30へ移行する。ステップS30では全てのプログラムについて上記ステップS28の判定を実行したか否かを判定し、未実行のプログラムがある場合には(ステップS30,YES)、ステップS28に戻る。   First, with reference to the group number 43 of each program, it is determined whether or not the program is a grouping target (step S28). In other words, in the above example, the group number 43 is 16-bit information corresponding to 16 programs PG0 to PG15. Therefore, a program in which all 16 bits are OFF is a program that has no input variable shared with other programs. Therefore, it is determined that it is not a grouping target (NO in step S28), and the process proceeds to step S30 as it is. In step S30, it is determined whether or not the determination in step S28 has been executed for all the programs. If there is an unexecuted program (YES in step S30), the process returns to step S28.

一方、上記16Bitのうちの1bitでも立っている(ONしている)ならば、そのプログラムはグループ化対象であると判定され(ステップS28,YES)、ステップS29の処理を実行して、上記ステップS30の処理を実行する。   On the other hand, if one bit of the 16 bits is standing (ON), it is determined that the program is a grouping target (YES in step S28), and the process of step S29 is executed. The process of S30 is executed.

ステップS29の処理では、まず当該処理対象プログラムの上記グループ番号43(ステップS28で参照したもの)を再度参照して、今度は当該処理対象プログラムと同じグループとすべき(共有する入力変数がある)他のプログラムを判別する。上記の通り、16Bitの情報はPG0〜PG15の16個のプログラムに対応しており、例えば‘3’ビットと‘5’ビットがONであったならば、PG3とPG5が当該処理対象プログラムと同じグループとすべきプログラムであることが分かる。   In the process of step S29, first, the group number 43 (referred to in step S28) of the processing target program is referred again, and this time, the same group as the processing target program should be used (there is an input variable to share). Determine other programs. As described above, 16-bit information corresponds to 16 programs PG0 to PG15. For example, if the '3' bit and the '5' bit are ON, PG3 and PG5 are the same as the processing target program. It turns out that the program should be a group.

そして、当該処理対象プログラムと、当該“同じグループとすべきプログラム”とを、同じCPU(コントローラ)に割り当てるようにコントローラ番号44を設定する。図10に示す例では、コントローラ番号44は1bitの情報であり、‘0’が基本コントローラ、‘1’が拡張コントローラへの割り当てを意味する。よって、この例では、当該処理対象プログラムのコントローラ番号44と、当該“同じグループとすべきプログラム”のコントローラ番号44とを同じ値に設定する(両方とも‘0’または両方とも‘1’とする)。   Then, the controller number 44 is set so that the processing target program and the “program to be in the same group” are allocated to the same CPU (controller). In the example shown in FIG. 10, the controller number 44 is 1-bit information, “0” means allocation to the basic controller and “1” means allocation to the expansion controller. Therefore, in this example, the controller number 44 of the processing target program and the controller number 44 of the “program to be in the same group” are set to the same value (both set to “0” or both set to “1”). ).

コントローラ番号44を‘0’と‘1’のどちらに設定するのかは、任意に決めてよく、例えばステップS29の処理を実行する毎に交互に設定する(‘0’→‘1’→‘0’→‘1’・・・)ようにしてもよいし、既に述べたように実施例1と略同様の手法により配分先を決定してもよい。但し、当該処理対象プログラムのコントローラ番号44が既に設定済みの場合には、当該設定値を用いるものとする。   Whether the controller number 44 is set to “0” or “1” may be arbitrarily determined. For example, the controller number 44 is alternately set every time the process of step S29 is executed (“0” → “1” → “0”). '→' 1 '...), Or as described above, the distribution destination may be determined by a method substantially similar to that of the first embodiment. However, when the controller number 44 of the processing target program has already been set, the setting value is used.

例えば、ここで簡単の為にPG0、PG1、PG2の3つのプログラムを例にして以下の具体例を想定する。
PG0、PG1、PG2は全て入力変数個数45は‘2’であり、つまり、入力変数群46は「アドレス1」と「アドレス2」のみであるものとする。そして、PG0に関しては、「アドレス1」は変数aの格納アドレス、「アドレス2」は変数bの格納アドレスとする。同様に、PG1に関しては、「アドレス1」は変数cの格納アドレス、「アドレス2」は変数aの格納アドレスとする。PG2に関しては、「アドレス1」は変数dの格納アドレス、「アドレス2」は変数cの格納アドレスとする。
For example, for the sake of simplicity, the following specific example is assumed by taking three programs PG0, PG1, and PG2 as examples.
PG0, PG1, and PG2 all have an input variable number 45 of “2”, that is, the input variable group 46 has only “address 1” and “address 2”. For PG0, “address 1” is the storage address of variable a, and “address 2” is the storage address of variable b. Similarly, for PG1, “address 1” is the storage address of variable c, and “address 2” is the storage address of variable a. Regarding PG2, “address 1” is the storage address of variable d, and “address 2” is the storage address of variable c.

この例において、PG0、PG1、PG2の順番で上記ステップS28等の処理を行った場合には、当然、全てがステップS28でYESとなりステップS29の処理を行うことになる。そして、まず、PG0についてはPG1が“同じグループとすべきプログラム”であることが分かり、例えばPG0とPG1の両方ともコントローラ番号44を‘0’に設定したものとする。   In this example, when the processes of step S28 and the like are performed in the order of PG0, PG1, and PG2, all of them are YES in step S28 and the process of step S29 is performed. First, for PG0, it is understood that PG1 is a “program to be in the same group”. For example, it is assumed that both PG0 and PG1 have the controller number 44 set to “0”.

続いて、PG1を処理対象としたとき、PG0とPG2を“同じグループとすべきプログラム”であることが分かり、基本的には上記の通り交互に設定するものとした場合には、今度はPG0、PG1、PG2の全てのコントローラ番号44を‘1’に設定することになる。しかしながら、その前に、処理対象のPG1のコントローラ番号44が設定済みか否かをチェックし、設定済みの場合には当該設定値を用いて未設定のコントローラ番号44を設定する。すなわち、この場合、PG1のコントローラ番号44の設定値‘0’を用いて、PG2のコントローラ番号44を‘0’に設定する(PG0とPG1は既に設定済みなので、そのままとする)。   Subsequently, when PG1 is a processing target, it is understood that PG0 and PG2 are “programs that should be in the same group”, and basically when PG0 and PG2 are set alternately as described above, this time PG0 , PG1, PG2 all controller numbers 44 are set to “1”. However, before that, it is checked whether or not the controller number 44 of the processing target PG 1 has been set. If it has been set, an unset controller number 44 is set using the set value. That is, in this case, using the set value “0” of the controller number 44 of PG1, the controller number 44 of PG2 is set to “0” (PG0 and PG1 are already set, and are left as they are).

尚、上記ステップS29の処理において上記のように(特に複数のグループがある場合において)実施例1と略同様の手法により配分先を決定する場合には、各グループ毎の総実行オブジェクトコードサイズを求めて、このサイズ情報に基づいて上記実施例1と略同様の手法により配分先を決定するようにしてもよい。   In the process of step S29, as described above (especially when there are a plurality of groups), when the allocation destination is determined by the substantially same method as in the first embodiment, the total execution object code size for each group is set. Then, the distribution destination may be determined based on the size information by a method substantially similar to that in the first embodiment.

すなわち、この例では例えば一例としては、まず、各グループ毎に、そのグループに属する各プログラムの総実行オブジェクトコードサイズを上記(1)式により算出して、算出結果の総和を求めることで、上記各グループ毎の総実行オブジェクトコードサイズを求める。そして、例えば実施例1の上記(1)の方法を利用する場合には「負荷(総実行オブジェクトコードサイズ)が大きいグループから順に各CPUへ順次割り当てていく方法」となる。勿論、実施例1の他の方法(上記(2)の方法や(3)の方法、あるいはこれら各方法の組み合わせ等)を利用するようにしてもよい。   That is, in this example, for example, as an example, first, for each group, the total execution object code size of each program belonging to the group is calculated by the above equation (1), and the sum of the calculation results is obtained. The total execution object code size for each group is obtained. For example, when the method (1) of the first embodiment is used, the “method of sequentially assigning to each CPU in order from the group with the largest load (total execution object code size)” is used. Of course, other methods of the first embodiment (the method (2), the method (3), or a combination of these methods) may be used.

尚、当然ながら、グループを配分する(CPUへ割り当てる)とは、そのグループに属する全てのプログラムを配分する(CPUへ割り当てる)ことを意味する。
上記ステップS28〜S30の処理が終了したら(ステップS30,YES)、未配分のプログラムの配分先を決定する(ステップS31)。上記ステップS29の処理によって、グループ化されるプログラムの配分は既に済んでいるので、残りの(グループ化されない)プログラムのCPUへの配分を行う。ステップS31の配分処理は、実施例1の配分処理と同じであってよく、ここでは特に説明しない。但し、グループ化されるプログラムの上記配分結果(コントローラ番号44の設定値)は、変更不可の扱いとし、従ってステップS31の処理で後から変更されることはない。この様な制約が入る為、既に述べた通り、負荷配分の最適化に関しては実施例1の方が優れているかもしれないが、実施例2ではプログラムの出力の一義性(または同期性)を保ったうえでの負荷配分の最適化を図ることができる。
Naturally, distributing a group (assigning to a CPU) means distributing (assigning to a CPU) all programs belonging to that group.
When the processing of steps S28 to S30 is completed (step S30, YES), the distribution destination of the undistributed program is determined (step S31). Since the program to be grouped has already been allocated by the process of step S29, the remaining (ungrouped) programs are allocated to the CPU. The distribution process in step S31 may be the same as the distribution process in the first embodiment, and is not specifically described here. However, the distribution result of the programs to be grouped (the set value of the controller number 44) is treated as unchangeable, and therefore is not changed later in the process of step S31. As described above, the first embodiment may be superior to the optimization of load distribution as described above, but in the second embodiment, the unambiguousness (or synchronism) of the program output is improved. It is possible to optimize the load distribution while maintaining it.

また、実施例1では説明していなかったが、ステップS31の処理では“残りのプログラム”の配分先を決定したら、それに応じてこれらのプログラムのコントローラ番号44をセットする処理も行う。   Although not described in the first embodiment, when the distribution destination of “remaining program” is determined in the process of step S31, the process of setting the controller number 44 of these programs is also performed accordingly.

具体例としては、例えば上記例のようにPG0とPG1とPG2とが1グループとなり、更に仮にPG3とPG4とが1グループとなり、更にPG5とPG6とが1グループとなり、PG7〜PG15はグループ化されないとした場合、上記の例では例えば、PG0とPG1とPG2とPG5とPG6とが基本コントローラ2に割り当てられ、PG3とPG4とが拡張コントローラ2に割り当てられ、これらの割り当ては確定済みとした状態で、PG7〜PG15について実施例1と同様の処理によって複数のCPU(本例では基本コントローラ2と拡張コントローラ2)への割り当てを行うことになる。   As a specific example, for example, as in the above example, PG0, PG1, and PG2 are one group, PG3 and PG4 are one group, PG5 and PG6 are one group, and PG7 to PG15 are not grouped. In the above example, for example, PG0, PG1, PG2, PG5, and PG6 are assigned to the basic controller 2, PG3 and PG4 are assigned to the expansion controller 2, and these assignments are determined. PG7 to PG15 are assigned to a plurality of CPUs (basic controller 2 and expansion controller 2 in this example) by the same processing as in the first embodiment.

尚、実施例1と同様の処理とは、既に実施例1で述べたが以下にも再度示すように、(1)の方法、(2)の方法、(3)の方法や、これらの方法の組み合わせである。
(1)の方法;負荷(サイズ)が大きいプログラム(PG)から順に各CPUへ順次割り当てていく方法。
(2)の方法;割り当て負荷総量の平均値(平均の負荷配分値)を求めて、各CPU毎に平均値を越えるまで各プログラム(PG)を割り当てていく方法。
(3)の方法;組み合せ最適化問題として定義し、最適化手法(経験的手法・メタヒューリスティック等)を用いて解く方法。
The processing similar to that in the first embodiment has already been described in the first embodiment, but as will be shown again below, the method (1), the method (2), the method (3), and these methods. It is a combination.
Method (1): A method of sequentially assigning to each CPU in order from a program (PG) having a large load (size).
Method (2): A method of obtaining an average value (average load distribution value) of the total assigned load and assigning each program (PG) to each CPU until the average value is exceeded.
Method (3): A method defined as a combinatorial optimization problem and solved using an optimization method (empirical method, metaheuristic, etc.).

また、本例の開発支援装置20は、上記開発支援装置10と同様、ハードウェア的には例えばパソコン等の汎用のコンピュータ装置により実現できる。
図12は、開発支援装置10,20のハードウェア構成の具体例を示す図であり、これはパソコン等の汎用のコンピュータの構成であると考えてよい。
In addition, the development support apparatus 20 of this example can be realized by a general-purpose computer device such as a personal computer in hardware as with the development support apparatus 10 described above.
FIG. 12 is a diagram illustrating a specific example of the hardware configuration of the development support apparatuses 10 and 20, and this may be considered to be the configuration of a general-purpose computer such as a personal computer.

図12において、コンピュータ30は、CPU31、メモリ32、入力部33、出力部34、記憶部35、記録媒体駆動部36、及びネットワーク接続部37を有し、これらがバス38に接続された構成となっている。   In FIG. 12, the computer 30 has 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、20の各種処理機能をCPU31により実現させる為のアプリケーションプログラムが格納されている。すなわち、上記コンパイラ11、リンカ12、POUサイズ算出機能部13、呼出情報生成機能部14、最適負荷配分機能部15の各種処理機能部の処理機能を、CPU31により実現させる為のアプリケーションプログラムが格納されている。あるいは、上記コンパイラ21、リンカ22、POUサイズ算出機能部23、呼出情報生成機能部24、最適負荷配分機能部25、変数リスト情報生成機能部26の各種処理機能部の処理機能を、CPU31により実現させる為のアプリケーションプログラムが格納されている。特に、図11のフローチャートの処理を、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 apparatuses 10 and 20 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. Alternatively, the CPU 31 realizes processing functions of various processing function units of the compiler 21, the linker 22, the POU size calculation function unit 23, the call information generation function unit 24, the optimum load distribution function unit 25, and the variable list information generation function unit 26. An application program is stored. In particular, an application program for realizing the processing of the flowchart of FIG. 11 by the CPU 31 is stored.

CPU31は、上記記憶部35に格納されている各種プログラムを読み出し・実行することにより、上述した各種処理を実現する。
また、上記図3(b)や図4(a),(b)や図10に示す各種情報は、記憶部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 FIGS. 3B, 4A, 4B, and 10 are 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.

また、PLC言語に関係なく上記実施例2の開発支援装置20の機能を概略的に説明するならば、特に図示等しないが本例の開発支援装置20は以下の各種機能部を有するものと言うことができる。   Further, if the functions of the development support apparatus 20 of the second embodiment are schematically described regardless of the PLC language, the development support apparatus 20 of the present example has the following various functional units although not particularly illustrated. be able to.

まず、複数の演算処理部(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 (CPU or the like) 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.

そして、開発支援装置20は、更に、これら複数の「処理単位」毎に、その「処理単位」に係わる実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出機能部(不図示)を備える。更に、上記複数の「処理単位」毎に、その「処理単位」に係わる入力変数等から成る変数リスト情報を生成する変数リスト情報生成機能部(不図示)を有する。尚、変数リスト情報生成機能部は、上記コンパイル機能部の機能の一部であってもよい。   The development support apparatus 20 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”. . Further, each of the plurality of “processing units” includes a variable list information generation function unit (not shown) that generates variable list information including input variables related to the “processing units”. The variable list information generation function unit may be a part of the function of the compile function unit.

そして、開発支援装置20は、更に、上記アプリケーションプログラムの処理を上記各「処理単位」で上記複数の演算処理部に配分する機能部であって、上記総実行オブジェクトコードサイズ算出機能部によって算出される上記各「処理単位」それぞれの実行オブジェクトコードサイズ総数(全ステップ数など)と、上記変数リスト情報とに基づいて、共通の入力変数を有する「処理単位」は同じ演算処理部に配分することを条件として、この条件を満たしつつ上記複数の演算処理部それぞれの負荷が略均等となるように上記アプリケーションプログラムの各「処理単位」を上記各演算処理部に配分する負荷配分機能部を有する。尚、上記各演算処理部は、自己に割り当てられた全ての処理単位に係る入力変数をまとめて入力し、自己に割り当てられた全ての処理単位を順次実行し、該実行結果をまとめて出力するものである。   The development support apparatus 20 is further a function unit that distributes the processing of the application program to the plurality of arithmetic processing units in each “processing unit”, and is calculated by the total execution object code size calculation function unit. Based on the total number of execution object code sizes (the total number of steps, etc.) of each of the “processing units” and the variable list information, “processing units” having a common input variable are allocated to the same arithmetic processing unit. And a load distribution function unit that distributes each “processing unit” of the application program to the arithmetic processing units so that the loads of the arithmetic processing units are substantially equal while satisfying the conditions. The above arithmetic processing units collectively input input variables related to all processing units assigned to themselves, sequentially execute all the processing units assigned to themselves, and output the execution results collectively. Is.

あるいは、開発支援装置20は、プログラム本体と該プログラム本体から呼び出される各種POUより成る複数のプログラムより構成される任意のアプリケーションの実行に係わる負荷を、複数の演算処理部に分散して配分する機能を有し、以下の各種機能部(何れも不図示)を有するものと見做すこともできる。   Alternatively, the development support apparatus 20 has a function of distributing and distributing a load related to execution of an arbitrary application composed of a program main body and a plurality of programs composed of various POUs called from the program main body to a plurality of arithmetic processing units. It can also be regarded as having the following various functional parts (all not shown).

すなわち、まず、複数の演算処理部(CPU等)で演算させるべき上記任意のアプリケーションプログラムをコンパイルすることで、その実行オブジェクトコードを生成するコンパイル機能部を備える。これは、例えば、上記プログラム本体/POUそれぞれの実行オブジェクトコードを生成するものとなる。   That is, first, a compiling function unit that generates an execution object code by compiling the above-described arbitrary application program to be operated by a plurality of arithmetic processing units (CPU or the like) is provided. For example, the execution object code for each of the program body / POU is generated.

そして、例えばこのコンパイル処理に伴って、上記アプリケーションを構成する各プログラム毎に少なくともそのプログラムに係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成機能部と、上記プログラム本体/POUそれぞれの実行オブジェクトコードのサイズを求めるPOUサイズ算出機能部と、POUの呼び出し情報を求める呼出情報生成機能部とを有する。これら各種機能部は、既存の構成であると考えてもよい。   For example, in accordance with the compiling process, each program constituting the application includes a variable list information generating function unit that generates variable list information including at least an input variable related to the program, and each program body / POU. It has a POU size calculation function unit for obtaining the size of the execution object code and a call information generation function unit for obtaining call information of the POU. These various functional units may be considered as existing configurations.

そして、開発支援装置20は、更に、上記プログラム本体/POUそれぞれの実行オブジェクトコードのサイズと、上記POUの呼び出し情報とに基づいて、上記アプリケーションを構成する各プログラム毎に、そのプログラムに係わるプログラム本体/各POUの実行オブジェクトコードのサイズと各POUの実行回数とに応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出機能部を有する。   Further, the development support apparatus 20 further determines the program main body related to the program for each program constituting the application based on the size of the execution object code of the program main body / POU and the call information of the POU. / A total execution object code size calculation function unit that calculates the total number of execution object codes according to the size of the execution object code of each POU and the number of executions of each POU.

更に、開発支援装置20は、上記各プログラムを複数の演算処理部に配分する機能部であって、上記総実行オブジェクトコードサイズ算出機能部によって算出される各プログラムそれぞれの実行オブジェクトコードサイズ総数と、上記変数リスト情報とに基づいて、共通の入力変数を有するプログラムは同じ演算処理部に配分することを条件として、この条件を満たしつつ複数の演算処理部それぞれの負荷が略均等となるように各プログラムを各演算処理部に配分する負荷配分機能部を有する。尚、上記“プログラム本体/(各)POU”は、“プログラム本体または(各)POU”の意味である。   Furthermore, the development support apparatus 20 is a functional unit that distributes each program to a plurality of arithmetic processing units, and the total number of execution object code sizes of each program calculated by the total execution object code size calculation function unit, Based on the above variable list information, each program is configured so that the load of each of the plurality of arithmetic processing units is substantially equal while satisfying this condition, on condition that programs having common input variables are distributed to the same arithmetic processing unit. It has a load distribution function part which distributes a program to each arithmetic processing part. The “program body / (each) POU” means “program body or (each) POU”.

また、上記開発支援装置20において、一例として例えば、上記負荷配分機能部は、まず、上記共通の入力変数を有するプログラムはグループ化して該グループ単位で演算処理部に配分する。その後、グループ化されなかった残りの各プログラムを、該各プログラムの実行オブジェクトコードサイズ総数に基づいて、各演算処理部に割り当てられた全てのプログラムの実行オブジェクトコードサイズ総数の総和が該複数の演算処理部で略均等となるように、演算処理部に配分するようにしてもよい。   In the development support apparatus 20, as an example, for example, the load distribution function unit first groups the programs having the common input variables and distributes them to the arithmetic processing unit in units of groups. Thereafter, the remaining unprogrammed programs are calculated based on the total number of execution object code sizes of the respective programs, and the total sum of the execution object code sizes of all the programs assigned to the respective arithmetic processing units is the plurality of operations. You may make it distribute to a calculation process part so that it may become substantially equal in a process part.

あるいは、上記開発支援装置20において、一例として例えば、上記負荷配分機能部は、まず、上記共通の入力変数を有するプログラムはグループ化すると共に、そのグループに属する全てのプログラムの実行オブジェクトコードサイズ総数の総和を該グループの実行オブジェクトコードサイズ総数として算出する。そして、該算出されたグループ単位の実行オブジェクトコードサイズ総数と、グループ化されなかった各プログラムの実行オブジェクトコードサイズ総数とに基づいて、グループ化されたプログラムはグループ単位で配分し且つ各演算処理部に割り当てられた全てのプログラムの実行オブジェクトコードサイズ総数の総和が該複数の演算処理部で略均等となるように、各プログラムを演算処理部に配分するようにしてもよい。   Alternatively, in the development support apparatus 20, as an example, for example, the load distribution function unit first groups the programs having the common input variables and calculates the total number of execution object code sizes of all the programs belonging to the group. The sum is calculated as the total execution object code size of the group. Then, based on the calculated total execution object code size for each group and the total execution object code size for each program that has not been grouped, the grouped programs are distributed in groups and each arithmetic processing unit Each program may be distributed to the arithmetic processing units so that the total sum of the execution object code sizes of all the programs assigned to is substantially equal among the plurality of arithmetic processing units.

この様に、実施例2の開発支援装置20は、概略的には上記各種不図示の機能部を備えるものであるということもできる。
尚、実施例2における上記複数の演算処理部は、それぞれ、自己に割り当てられた全ての処理単位(またはプログラム)に係る入力変数をまとめて入力し、該自己に割り当てられた全ての処理単位(またはプログラム)を順次実行し、該実行結果をまとめて出力する。各演算処理部がこの様な動作を行う場合には、共通の入力変数を有する「処理単位」(またはプログラム)が、異なる演算処理部に配分されてしまうと、プログラムの出力の一義性(同期性)を保てなくなるが、実施例2の開発支援装置20ではこの様な問題が生じないようにでき、そのうえでほぼ最適な負荷配分を行うことが可能となる。
Thus, it can be said that the development support apparatus 20 according to the second embodiment generally includes the above-described various functional units (not shown).
Each of the plurality of arithmetic processing units in the second embodiment collectively inputs input variables related to all processing units (or programs) assigned to itself, and all the processing units ( (Or program) are sequentially executed, and the execution results are collectively output. When each arithmetic processing unit performs such an operation, if the “processing unit” (or program) having a common input variable is distributed to different arithmetic processing units, the unambiguousness (synchronization) of the program output (synchronization) However, the development support apparatus 20 according to the second embodiment can prevent such a problem from occurring, and can perform almost optimal load distribution.

1 ネットワーク
2 PLCモジュール
2a、2b CPU
3 I/Oモジュール
4 PLCモジュール
4a,4b CPU
5 入出力機器
10 開発支援装置
11 コンパイラ
12 リンカ
13 POUサイズ算出機能部
14 呼出情報生成機能部
15 最適負荷配分機能部
21 コンパイラ
22 リンカ
23 POUサイズ算出機能部
24 呼出情報生成機能部
25 最適負荷配分機能部
26 変数リスト情報生成部
21a,21b 入力メモリ
22a、22b 出力メモリ
23a,23b マイコン
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
5 Input / Output Device 10 Development Support Device 11 Compiler 12 Linker 13 POU Size Calculation Function Unit 14 Call Information Generation Function Unit 15 Optimal Load Distribution Function Unit 21 Compiler 22 Linker 23 POU Size Calculation Function Unit 24 Call Information Generation Function Unit 25 Optimal Load Distribution Function unit 26 Variable list information generation unit 21a, 21b Input memory 22a, 22b Output memory 23a, 23b Microcomputer 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 (8)

開発支援装置と複数の演算処理部を有し、任意のアプリケーションの実行に係わる負荷を該複数の演算処理部に分散させて実行するPLCシステムであって、
前記開発支援装置は、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する複数の処理単位毎に、その処理単位に係わる前記実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出手段と、
前記アプリケーションを構成する複数の処理単位毎に、少なくともその処理単位に係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、
前記アプリケーションの負荷を前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各処理単位それぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有する処理単位は同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記アプリケーションの各処理単位を前記各演算処理部に配分する負荷配分手段を有し、
前記各演算処理部は、自己に割り当てられた全ての処理単位に係る前記入力変数をまとめて入力し、該自己に割り当てられた全ての処理単位を順次実行し、該実行結果をまとめて出力することを特徴とするPLCシステム。
A PLC system that 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 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;
Variable list information generating means for generating variable list information including at least an input variable related to the processing unit for each of a plurality of processing units constituting the application;
A means for allocating the load of the application to the plurality of arithmetic processing units, the execution object code size total number of each processing unit calculated by the total execution object code size calculation means, and the variable list information Based on the condition that the processing units having the common input variable are distributed to the same arithmetic processing unit, each of the applications is configured so that the loads of the plurality of arithmetic processing units are substantially equal while satisfying this condition. Load distribution means for allocating a processing unit to each arithmetic processing unit;
Each arithmetic processing unit collectively inputs the input variables relating to all processing units assigned to itself, sequentially executes all the processing units assigned to the self, and outputs the execution results collectively. A PLC system characterized by that.
開発支援装置と複数の演算処理部を有し、プログラム本体と該プログラム本体から呼び出される各種POUより成る複数のプログラムより構成される任意のアプリケーションの実行に係わる負荷を、前記複数の演算処理部に分散させて実行するPLCシステムであって、
前記開発支援装置は、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する前記各プログラム毎に、少なくともそのプログラムに係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、
前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズを求めるPOUサイズ算出手段と、
前記コンパイル時に前記POUの呼び出し情報を求める呼出情報生成手段と、
前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズと、前記POUの呼び出し情報とに基づいて、前記アプリケーションを構成する前記各プログラム毎に、そのプログラムに係わるプログラム本体または各POUの前記実行オブジェクトコードのサイズと各POUの実行回数とに応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出手段と、
前記各プログラムを前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各プログラムそれぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有するプログラムは同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記各プログラムを前記各演算処理部に配分する負荷配分手段とを有し、
前記各演算処理部は、自己に割り当てられた全てのプログラムに係る前記入力変数をまとめて入力し、該自己に割り当てられた全てのプログラムを順次実行し、該実行結果をまとめて出力することを特徴とするPLCシステム。
A load associated with execution of an arbitrary application including a development support apparatus and a plurality of arithmetic processing units, and consisting of a program main body and a plurality of programs that are called from the program main body, is stored in the plurality of arithmetic processing units. A PLC system that executes in a distributed manner,
The development support apparatus includes:
Compiling means for generating executable object code by compiling the application;
Variable list information generating means for generating variable list information including at least an input variable related to the program for each program constituting the application;
POU size calculation means for determining the size of the execution object code of each of the program body or POU;
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 program body or POU and the call information of the POU, for each program constituting the application, the execution object code of the program body related to the program or each POU A total execution object code size calculating means for calculating a total number of execution object code sizes according to the size of each and the number of executions of each POU;
Means for allocating each program to the plurality of arithmetic processing units, based on the total number of execution object code sizes of each program calculated by the total execution object code size calculation means and the variable list information; The programs having the common input variable are allocated to the same arithmetic processing unit, and the respective programs are executed so that the loads of the plurality of arithmetic processing units are substantially equal while satisfying this condition. Load distribution means for distributing to the processing unit,
Each arithmetic processing unit collectively inputs the input variables related to all programs assigned to itself, sequentially executes all the programs assigned to the self, and outputs the execution results collectively. Characteristic PLC system.
前記負荷配分手段は、前記共通の入力変数を有するプログラムはグループ化して該グループ単位で前記演算処理部に配分し、その後、グループ化されなかった残りの各プログラムを、該各プログラムの前記実行オブジェクトコードサイズ総数に基づいて、前記各演算処理部に割り当てられた全てのプログラムの実行オブジェクトコードサイズ総数の総和が該複数の演算処理部で略均等となるように、前記演算処理部に配分することを特徴とする請求項2記載のPLCシステム。   The load distribution unit groups the programs having the common input variable and distributes the programs to the arithmetic processing unit in units of groups, and thereafter, each remaining program that has not been grouped is transferred to the execution object of the programs. Based on the total number of code sizes, the total number of execution object code sizes of all the programs assigned to each arithmetic processing unit is distributed to the arithmetic processing units so that the plurality of arithmetic processing units are substantially equal. The PLC system according to claim 2. 前記負荷配分手段は、前記共通の入力変数を有するプログラムはグループ化すると共に、そのグループに属する全てのプログラムの実行オブジェクトコードサイズ総数の総和を該グループの実行オブジェクトコードサイズ総数として算出し、該算出されたグループ単位の実行オブジェクトコードサイズ総数と、グループ化されなかった各プログラムの前記実行オブジェクトコードサイズ総数とに基づいて、前記グループ化されたプログラムはグループ単位で配分し且つ前記各演算処理部に割り当てられた全てのプログラムの実行オブジェクトコードサイズ総数の総和が該複数の演算処理部で略均等となるように、前記各プログラムを前記演算処理部に配分することを特徴とする請求項2記載のPLCシステム。   The load distribution means groups the programs having the common input variable, calculates a total sum of the execution object code sizes of all the programs belonging to the group as a total execution object code size of the group, and calculates the calculation Based on the total number of execution object code sizes in units of groups and the total number of execution object code sizes of programs that have not been grouped, the grouped programs are allocated in units of groups and are distributed to the arithmetic processing units. 3. The program according to claim 2, wherein the programs are distributed to the arithmetic processing units so that a total sum of the total execution object code sizes of all assigned programs is substantially equal in the plurality of arithmetic processing units. PLC system. 開発支援装置と複数の演算処理部を有し、任意のアプリケーションの実行に係わる負荷を該複数の演算処理部に分散させて実行するPLCシステムにおける該開発支援装置であって、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する複数の処理単位毎に、その処理単位に係わる前記実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出手段と、
前記アプリケーションを構成する複数の処理単位毎に、少なくともその処理単位に係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、
前記アプリケーションの処理を前記各処理単位で前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各処理単位それぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有する処理単位は同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記アプリケーションの各処理単位を前記各演算処理部に配分する負荷配分手段と、
を有することを特徴とするPLCシステムの開発支援装置。
A development support apparatus in a PLC system that includes a development support apparatus and a plurality of arithmetic processing units, and distributes and executes 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;
Variable list information generating means for generating variable list information including at least an input variable related to the processing unit for each of a plurality of processing units constituting the application;
Means for allocating the processing of the application to the plurality of arithmetic processing units in each processing unit, the total number of execution object code sizes of each processing unit calculated by the total execution object code size calculating means; Based on the variable list information, the processing units having a common input variable are allocated to the same arithmetic processing unit, and the load of each of the arithmetic processing units is substantially equal while satisfying this condition. Load distribution means for allocating each processing unit of the application to each arithmetic processing unit;
A development support apparatus for a PLC system, characterized by comprising:
開発支援装置と複数の演算処理部を有し、プログラム本体と該プログラム本体から呼び出される各種POUより成る複数のプログラムより構成される任意のアプリケーションの実行に係わる負荷を、前記複数の演算処理部に分散させて実行するPLCシステムにおける前記開発支援装置であって、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する前記各プログラム毎に、少なくともそのプログラムに係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、
前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズを求めるPOUサイズ算出手段と、
前記コンパイル時に前記POUの呼び出し情報を求める呼出情報生成手段と、
前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズと、前記POUの呼び出し情報とに基づいて、前記アプリケーションを構成する前記各プログラム毎に、そのプログラムに係わるプログラム本体または各POUの前記実行オブジェクトコードのサイズと各POUの実行回数とに応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出手段と、
前記各プログラムを前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各プログラムそれぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有するプログラムは同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記各プログラムを前記各演算処理部に配分する負荷配分手段と、
を有することを特徴とするPLCシステムの開発支援装置。
A load associated with execution of an arbitrary application including a development support apparatus and a plurality of arithmetic processing units, and consisting of a program main body and a plurality of programs that are called from the program main body, is stored in the plurality of arithmetic processing units. The development support apparatus in a PLC system that executes in a distributed manner,
Compiling means for generating executable object code by compiling the application;
Variable list information generating means for generating variable list information including at least an input variable related to the program for each program constituting the application;
POU size calculation means for determining the size of the execution object code of each of the program body or POU;
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 program body or POU and the call information of the POU, for each program constituting the application, the execution object code of the program body related to the program or each POU A total execution object code size calculating means for calculating a total number of execution object code sizes according to the size of each and the number of executions of each POU;
Means for allocating each program to the plurality of arithmetic processing units, based on the total number of execution object code sizes of each program calculated by the total execution object code size calculation means and the variable list information; The programs having the common input variable are allocated to the same arithmetic processing unit, and the respective programs are executed so that the loads of the plurality of arithmetic processing units are substantially equal while satisfying this condition. Load distribution means for distributing to the processing unit;
A development support apparatus for a PLC system, characterized by comprising:
開発支援装置と複数の演算処理部を有し、任意のアプリケーションの実行に係わる負荷を該複数の演算処理部に分散させて実行するPLCシステムにおける該開発支援装置のコンピュータを、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する複数の処理単位毎に、その処理単位に係わる前記実行オブジェクトコードのサイズの総数を求める総実行オブジェクトコードサイズ算出手段と、
前記アプリケーションを構成する複数の処理単位毎に、少なくともその処理単位に係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、
前記アプリケーションの処理を前記各処理単位で前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各処理単位それぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有する処理単位は同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記アプリケーションの各処理単位を前記各演算処理部に配分する負荷配分手段、
として機能させるためのプログラム。
A computer of the development support apparatus in a PLC system that 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.
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;
Variable list information generating means for generating variable list information including at least an input variable related to the processing unit for each of a plurality of processing units constituting the application;
Means for allocating the processing of the application to the plurality of arithmetic processing units in each processing unit, the total number of execution object code sizes of each processing unit calculated by the total execution object code size calculating means; Based on the variable list information, the processing units having a common input variable are allocated to the same arithmetic processing unit, and the load of each of the arithmetic processing units is substantially equal while satisfying this condition. Load distribution means for allocating each processing unit of the application to each arithmetic processing unit;
Program to function as.
開発支援装置と複数の演算処理部を有し、プログラム本体と該プログラム本体から呼び出される各種POUより成る複数のプログラムより構成される任意のアプリケーションの実行に係わる負荷を、前記複数の演算処理部に分散させて実行するPLCシステムにおける前記開発支援装置のコンピュータを、
前記アプリケーションをコンパイルすることで実行オブジェクトコードを生成するコンパイル手段と、
前記アプリケーションを構成する前記各プログラム毎に、少なくともそのプログラムに係わる入力変数が含まれる変数リスト情報を生成する変数リスト情報生成手段と、
前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズを求めるPOUサイズ算出手段と、
前記コンパイル時に前記POUの呼び出し情報を求める呼出情報生成手段と、
前記プログラム本体またはPOUそれぞれの前記実行オブジェクトコードのサイズと、前記POUの呼び出し情報とに基づいて、前記アプリケーションを構成する前記各プログラム毎に、そのプログラムに係わるプログラム本体または各POUの前記実行オブジェクトコードのサイズと各POUの実行回数とに応じた実行オブジェクトコードサイズ総数を算出する総実行オブジェクトコードサイズ算出手段と、
前記各プログラムを前記複数の演算処理部に配分する手段であって、前記総実行オブジェクトコードサイズ算出手段によって算出される前記各プログラムそれぞれの実行オブジェクトコードサイズ総数と、前記変数リスト情報とに基づいて、共通の前記入力変数を有するプログラムは同じ演算処理部に配分することを条件として、この条件を満たしつつ前記複数の演算処理部それぞれの負荷が略均等となるように前記各プログラムを前記各演算処理部に配分する負荷配分手段、
として機能させるためのプログラム。

A load associated with execution of an arbitrary application including a development support apparatus and a plurality of arithmetic processing units, and consisting of a program main body and a plurality of programs that are called from the program main body, is stored in the plurality of arithmetic processing units. A computer of the development support apparatus in a PLC system that executes in a distributed manner,
Compiling means for generating executable object code by compiling the application;
Variable list information generating means for generating variable list information including at least an input variable related to the program for each program constituting the application;
POU size calculation means for determining the size of the execution object code of each of the program body or POU;
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 program body or POU and the call information of the POU, for each program constituting the application, the execution object code of the program body related to the program or each POU A total execution object code size calculating means for calculating a total number of execution object code sizes according to the size of each and the number of executions of each POU;
Means for allocating each program to the plurality of arithmetic processing units, based on the total number of execution object code sizes of each program calculated by the total execution object code size calculation means and the variable list information; The programs having the common input variable are allocated to the same arithmetic processing unit, and the respective programs are executed so that the loads of the plurality of arithmetic processing units are substantially equal while satisfying this condition. Load distribution means to distribute to the processing unit,
Program to function as.

JP2010267233A 2010-11-30 2010-11-30 Plc system, development support device for the same, and program Pending JP2012118715A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010267233A JP2012118715A (en) 2010-11-30 2010-11-30 Plc system, development support device for the same, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010267233A JP2012118715A (en) 2010-11-30 2010-11-30 Plc system, development support device for the same, and program

Publications (1)

Publication Number Publication Date
JP2012118715A true JP2012118715A (en) 2012-06-21

Family

ID=46501475

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010267233A Pending JP2012118715A (en) 2010-11-30 2010-11-30 Plc system, development support device for the same, and program

Country Status (1)

Country Link
JP (1) JP2012118715A (en)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014167622A1 (en) * 2013-04-08 2014-10-16 三菱電機株式会社 Program editing device, program editing method and program editing program
JP2014238820A (en) * 2013-05-09 2014-12-18 富士電機株式会社 Shared data definition supporting system, its supporting device and program
JP2018010389A (en) * 2016-07-12 2018-01-18 株式会社日立製作所 Control application generation support device and control application generation support method
JP2018156511A (en) * 2017-03-21 2018-10-04 株式会社明電舎 Method of controlling a programmable logic controller memory
JP2018180706A (en) * 2017-04-06 2018-11-15 富士電機株式会社 Support device and program
JP2020064399A (en) * 2018-10-16 2020-04-23 オムロン株式会社 Control system, control device, terminal device, and program
US10977032B2 (en) 2017-12-25 2021-04-13 Mitsubishi Electric Corporation Assistance device, design assistance method and program
US10990073B2 (en) 2016-08-30 2021-04-27 Mitsubishi Electric Corporation Program editing device, program editing method, and computer readable medium
CN113544601A (en) * 2019-03-15 2021-10-22 欧姆龙株式会社 Control system, setting device, and setting program
JP2021536055A (en) * 2018-08-23 2021-12-23 シーメンス アクチエンゲゼルシヤフトSiemens Aktiengesellschaft Artificial intelligence calculators, control methods and controls, engineer stations and industrial automation systems
WO2022185670A1 (en) * 2021-03-04 2022-09-09 オムロン株式会社 Development support device, method for controlling development support device, information processing program, and recording medium
WO2022190417A1 (en) * 2021-03-11 2022-09-15 オムロン株式会社 Development support device, development support method, and development support program
WO2022190418A1 (en) * 2021-03-11 2022-09-15 オムロン株式会社 Development assitance device, development assitance method, and development assitance program
WO2022190428A1 (en) * 2021-03-11 2022-09-15 オムロン株式会社 Development assistance device, development assistance method, and development assistance program
CN113544601B (en) * 2019-03-15 2024-06-04 欧姆龙株式会社 Control system, setting device, and recording medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0728390A (en) * 1993-06-25 1995-01-31 Okuma Mach Works Ltd Programmable controller
JPH0991011A (en) * 1995-09-26 1997-04-04 Omron Corp Load distributing device and its method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0728390A (en) * 1993-06-25 1995-01-31 Okuma Mach Works Ltd Programmable controller
JPH0991011A (en) * 1995-09-26 1997-04-04 Omron Corp Load distributing device and its method

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014167622A1 (en) * 2013-04-08 2014-10-16 三菱電機株式会社 Program editing device, program editing method and program editing program
JP5936769B2 (en) * 2013-04-08 2016-06-22 三菱電機株式会社 Program editing apparatus, program editing method, and program editing program
JPWO2014167622A1 (en) * 2013-04-08 2017-02-16 三菱電機株式会社 Program editing apparatus, program editing method, and program editing program
JP2014238820A (en) * 2013-05-09 2014-12-18 富士電機株式会社 Shared data definition supporting system, its supporting device and program
JP2018041514A (en) * 2013-05-09 2018-03-15 富士電機株式会社 Shared data definition supporting system, supporting device of the same, and program
JP2018010389A (en) * 2016-07-12 2018-01-18 株式会社日立製作所 Control application generation support device and control application generation support method
US10990073B2 (en) 2016-08-30 2021-04-27 Mitsubishi Electric Corporation Program editing device, program editing method, and computer readable medium
JP6992264B2 (en) 2017-03-21 2022-01-13 株式会社明電舎 Programmable logic controller memory management method
JP2018156511A (en) * 2017-03-21 2018-10-04 株式会社明電舎 Method of controlling a programmable logic controller memory
JP2018180706A (en) * 2017-04-06 2018-11-15 富士電機株式会社 Support device and program
US10977032B2 (en) 2017-12-25 2021-04-13 Mitsubishi Electric Corporation Assistance device, design assistance method and program
JP2021536055A (en) * 2018-08-23 2021-12-23 シーメンス アクチエンゲゼルシヤフトSiemens Aktiengesellschaft Artificial intelligence calculators, control methods and controls, engineer stations and industrial automation systems
JP2020064399A (en) * 2018-10-16 2020-04-23 オムロン株式会社 Control system, control device, terminal device, and program
JP7047700B2 (en) 2018-10-16 2022-04-05 オムロン株式会社 Control systems, controls, terminals, and programs
CN113544601A (en) * 2019-03-15 2021-10-22 欧姆龙株式会社 Control system, setting device, and setting program
CN113544601B (en) * 2019-03-15 2024-06-04 欧姆龙株式会社 Control system, setting device, and recording medium
WO2022185670A1 (en) * 2021-03-04 2022-09-09 オムロン株式会社 Development support device, method for controlling development support device, information processing program, and recording medium
WO2022190417A1 (en) * 2021-03-11 2022-09-15 オムロン株式会社 Development support device, development support method, and development support program
WO2022190418A1 (en) * 2021-03-11 2022-09-15 オムロン株式会社 Development assitance device, development assitance method, and development assitance program
WO2022190428A1 (en) * 2021-03-11 2022-09-15 オムロン株式会社 Development assistance device, development assistance method, and development assistance program

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
CN102576314B (en) The mapping with the data parallel thread across multiple processors processes logic
US20190188570A1 (en) Methods and apparatus for model parallelism in artificial neural networks
JP5655448B2 (en) PLC system and its development support equipment
US8677334B2 (en) Parallelization method, system and program
WO2013010159A1 (en) Reducing the scan cycle time of control applications through multi-core execution of user programs
EP1920331A1 (en) Adaptive process dispatch in a computer system having a plurality of processors
TW202305590A (en) Processor operation method, related computer system, and non-transitory computer-accessible storage medium
JP2015509249A5 (en)
JP6023266B2 (en) PLC program management device
KR20140054948A (en) Tool composition for supporting opencl application software development for embedded system and method thereof
JP2019049843A (en) Execution node selection program and execution node selection method and information processor
US10838903B2 (en) Dedicated or integrated adapter card
JP6292096B2 (en) Programmable controller system and its support device
JP6953768B2 (en) Assistance device, program
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
Binotto et al. Sm@ rtConfig: A context-aware runtime and tuning system using an aspect-oriented approach for data intensive engineering applications
JP5360506B2 (en) Multi-core programming system, method and program
Peccerillo et al. Task-dag support in single-source PHAST library: Enabling flexible assignment of tasks to cpus and gpus in heterogeneous architectures
Schneider et al. Software Parallelization in Automotive Multi-Core Systems
JP6295914B2 (en) Programmable controller system, its support device, programmable controller
Drabowski Concurrent, coherent design of hardware and software embedded systems with higher degree of reliability and fault tolerant
JP2009169862A (en) Program conversion device, method, program and recording medium
KR102213046B1 (en) Design support device, design support method, and program stored on a recording medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150623