KR100234982B1 - Automatic execution-order decision method for function blocks in a logic diagram - Google Patents
Automatic execution-order decision method for function blocks in a logic diagram Download PDFInfo
- Publication number
- KR100234982B1 KR100234982B1 KR1019970061538A KR19970061538A KR100234982B1 KR 100234982 B1 KR100234982 B1 KR 100234982B1 KR 1019970061538 A KR1019970061538 A KR 1019970061538A KR 19970061538 A KR19970061538 A KR 19970061538A KR 100234982 B1 KR100234982 B1 KR 100234982B1
- Authority
- KR
- South Korea
- Prior art keywords
- functional block
- functional
- execution order
- functional blocks
- dimensional array
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/041—Function-oriented details
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/22—Pc multi processor system
- G05B2219/2216—Define module independent and module specific element, interconnection, capability
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23084—Synoptic display of available, selectable control modules with their functions
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23233—Input state executes immediately corresponding block program
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23258—GUI graphical user interface, icon, function bloc editor, labview
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 제어 로직의 작성을 위한 국제 표준 언어인 기능 블록도 기법으로 만들어진 각 기능 블록들의 실행 순서를 그들의 그래픽 화면 상에서의 위치 및 크기와 관계 없이 정확하게 결정할 수 있도록 함으로써 작성자의 편의를 증진시킬 수 있도록 한 임의 작성된 기능 블록도의 실행 순서 결정 방법에 관한 것이다. 본 발명의 일 특징에 따른 임의 작성된 기능 블록도의 실행 순서 결정 방법은 (a) 임의의 기능 블록도가 작성된 그래픽 화면을 파싱하여 각 기능 블록의 입출력 연결 관계를 확인하는 단계; (b) 상기 단계 (a)에서 확인된 연결 관계에 의거하여 전체 기능 블록을 즉시 실행이 가능한 무제약 기능 블록군과 다른 기능 블록을 우선적으로 실행해야 비로소 실행이 가능한 제약 기능 블록군으로 구분하는 단계; (c) 상기 무제약 기능 블록군에 속하는 기능 블록의 실행 순서를 미리 주어진 규정에 따라 결정하여 저장하는 단계; (d) 모든 기능 블록의 실행 순서가 결정될 때까지 상기 무제약 기능 블록의 실행을 전제로 하여 상기 제약 기능 블록군에 속하는 기능 블록을 대상으로 상기 단계 (b) 이하를 반복하는 단계를 포함하여 이루어진다.The present invention can enhance the convenience of the author by allowing the execution order of each functional block made by the functional block diagram technique, an international standard language for writing control logic, to be accurately determined irrespective of the position and size on their graphic screen. A method for determining the execution order of an arbitrarily created functional block diagram. According to an aspect of the present invention, there is provided a method of determining an execution order of an arbitrary functional block diagram, the method comprising: (a) parsing a graphic screen on which an arbitrary functional block diagram is created to check input / output connection relations of respective functional blocks; (b) dividing the entire functional block into an unconstrained functional block group that can be executed immediately and another limited functional block group only prior to executing the entire functional block based on the connection relationship identified in step (a); (c) determining and storing an execution order of functional blocks belonging to the unrestricted functional block group according to a predetermined rule; (d) repeating step (b) or below for the functional blocks belonging to the restricted functional block group on the premise of executing the unrestricted functional blocks until the execution order of all functional blocks is determined.
Description
본 발명은 임의 작성된 기능 블록도의 실행 순서 결정 방법에 관한 것으로, 특히 제어 로직의 작성을 위한 국제 표준 언어인 기능 블록도 기법으로 만들어진 각 기능 블록들의 실행 순서를 그들의 그래픽 화면 상에서의 위치와 관계 없이 정확하게 결정할 수 있도록 한 임의 작성된 기능 블록도의 실행 순서 결정 방법에 관한 것이다.The present invention relates to a method of determining an execution order of an arbitrarily written functional block diagram. In particular, the execution order of each functional block created by the functional block diagram technique, which is an international standard language for writing control logic, is independent of their position on a graphic screen. It relates to a method of determining the execution order of an arbitrarily written functional block diagram that can be accurately determined.
기능 블록도(Function Block Diagram; 이하, 간단히 "FBD"라고도 칭한다)는 프로그래머블 로직 제어기(Programmable Logic Controller) 혹은 분산 제어 시스템(Distribution Control System) 등 제어 및 감시 시스템의 제어 로직을 작성하기 위한 국제 표준 규격인 IEC(International Electrotechnical Commission) 1131-3에서 규정한 언어의 일종이다. IEC 1131-3에서는 두가지의 텍스튜얼(textual) 언어와 세가지의 그래픽컬(graphical) 언어의 표준을 제공하는데, FBD는 그 중에서 가장 대표적인 그래픽컬 언어이다. FBD는 나름대로 특정한 기능을 갖는 여러 가지 종류의 기능 블록들을 배치하고 그들의 입출력 신호를 연결함으로써 원하는 동작을 수행하도록 되어 있다.Function Block Diagram (hereinafter simply referred to as FBD) is an international standard for creating control logic for control and monitoring systems, such as a programmable logic controller or a distribution control system. It is a kind of language defined by IEC (International Electrotechnical Commission) 1131-3. IEC 1131-3 provides standards for two textual languages and three graphical languages. FBD is the most representative graphical language. The FBD is arranged to perform various operations by arranging various types of functional blocks having specific functions and connecting their input / output signals.
한편, FBD는 작성자 본인 및 관련자가 쉽게 이해할 수 있는 범위 내에서 FBD 작성툴이 제공하는 화면 상의 임의의 장소에 원하는 기능 블록을 위치시킬 수 있어야 하고, 이들의 입출력을 마음대로 연결할 수 있어야 한다는 표준 규약을 가지고 있다. 따라서, 전술한 FBD의 표준 규약을 준수하자면 임의로 작성된 FBD에 대하여 기능 블록들의 처리 순서를 완전히 자동적으로 처리할 수 있어야 하지만 기존의 대부분의 방식들은 다음에 설명하는 예와 마찬가지로 FBD의 작성 과정 중에 어느 정도의 제약을 미리 요구하고 있다. 예를 들어 임의의 기능 블록("FBa"이라 칭한다)의 하나의 출력이 다른 기능 블록("FBb"라고 칭한다)의 입력 중 어느 하나에 연결되었다고 가정할 때 로직이 제대로 수행되려면 "FBa"의 처리가 "FBb"의 처리에 선행되어야 함은 당연하다. 이러한 경우, 기존의 FBD 작성툴들에서는 통상적으로 그래픽 화면 상에서 "FBa"의 위치가 "FBb"의 위치보다 좌측이고 또한 상단에 위치해야 한다는 제약이 가해지고 있다. 이는 대부분의 FBD 작성툴들이 그래픽 화면 상의 위치에 따라 좌측 상단에 위치한 기능 블록들을 우측 하단에 위치한 기능 블록 보다 먼저 처리하도록 되어 있기 때문이다. 따라서, 제어 로직을 작성하는 기술자나 최종 사용자는 입출력 신호를 연결할 시나리오에 따라 각 기능 블록이 실행될 순서를 사전에 고려하여 전체 제어 로직의 수행상 먼저 실행되어야 문제가 없는 기능 블록들을 화면의 좌측 상단에 위치시켜야 한다.On the other hand, the FBD has a standard convention that the function block can be placed anywhere on the screen provided by the FBD writing tool within the extent easily understood by the author and the related parties, and the input / output of these can be freely connected. Have. Therefore, in order to comply with the above-described standard rules of FBD, the processing order of the functional blocks must be fully automatically processed for the arbitrarily written FBD. However, most of the existing methods have some degree of the FBD creation process as in the following example. It requires a constraint of. For example, suppose that one output of an arbitrary function block (called "FBa") is connected to one of the inputs of another function block (called "FBb"). Of course, should be preceded by the processing of "FBb". In this case, the existing FBD writing tools are generally restricted that the position of "FBa" on the graphic screen should be located on the left side and the top of the position of "FBb". This is because most FBD writing tools process the function blocks located at the top left according to their position on the graphic screen before the function blocks located at the bottom right. Therefore, the technician or end user who writes the control logic should execute it first in the execution of the entire control logic considering the order in which each function block is executed according to the scenario to connect the input / output signals. It must be located.
도 1은 종래의 기능 블록도 작성툴에서 기능 블록의 실행 순서 결정 방법을 설명하기 위한 도로서, 편의상 각 기능 블록의 입, 출력 신호 간의 연결은 표시하지 않고 있다. 도 1에 도시한 작성툴에서는 FBD를 작성할 수 있는 캔버스가 각각 가로 8셀, 세로 8셀로 나뉘어져 있고 각 셀에는 1 - 64 까지의 번호가 붙여져 있다. 또한 각 셀에는 1개씩의 임의의 기능 블록들을 선택하여 위치시킬 수가 있으며, 이 과정에서 각 기능 블록의 입출력을 고려하여 먼저 실행되어야 하는 기능 블록을 좌측 상단에 위치시키도록 되어 있다. 따라서, 도 1의 예에서와 같이 12개의 기능 블록이 그려진 FBD에서 최 상단의 줄부터 좌측 칸에서 우측 칸으로 실행한다고 가정하면 각 기능 블록들의 실행 순서는 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 -> 11 -> 12로 될 것이다. 한편, 최 좌측의 칸부터 상단 줄에서 하단 줄로 실행한다고 가정하면 1 -> 4 -> 12 -> 8 -> 3 -> 5 -> 9 -> 7 -> 6 -> 11 -> 2 -> 10의 순서로 실행이 될 것이다.1 is a view for explaining a method of determining the execution order of functional blocks in a conventional functional block diagram creation tool. For convenience, the connection between input and output signals of each functional block is not displayed. In the creation tool shown in Fig. 1, the canvas for creating an FBD is divided into eight horizontal and eight vertical cells, and each cell is numbered 1 to 64. In addition, one cell can select and locate one arbitrary function block. In this process, the function block to be executed first is placed on the upper left side in consideration of the input / output of each function block. Therefore, in the FBD in which 12 functional blocks are drawn as shown in the example of FIG. 1, the execution order of each functional block is 1-> 2-> 3-> 4- > 5-> 6-> 7-> 8-> 9-> 10-> 11-> 12. On the other hand, assuming that the leftmost column is executed from the top row to the bottom row, 1-> 4-> 12-> 8-> 3-> 5-> 9-> 7-> 6-> 11-> 2-> 10 Will be executed in order.
그러나, 실제 FBD 언어로 제어 로직을 작성하는 과정에서는 작성자의 편의나 기호에 따라 어떤 기능 블록의 출력을 보다 좌측 또는 상단에 위치한 기능 블록의 입력에 연결하는 경우, 즉 우측이거나 하단에 위치한 기능 블록이 먼저 실행되어야 할 필요가 있는 경우가 빈번하게 발생하고 있다.However, in the process of writing control logic in the actual FBD language, when the output of a function block is connected to the input of a function block located at the left or upper side according to the convenience or preference of the author, that is, the function block located at the right or the bottom is There are many cases where it needs to be executed first.
도 2는 종래의 기능 블록도 작성툴에서 기능 블록의 실행 순서 결정 방법의 문제점을 설명하기 위한 기능 블록도의 예시도이다. 도 2에 도시한 예에 있어서 제어 로직의 화면 상으로는 기능 블록의 실행 순서가 FB1 -> FB7 -> FB2 -> FB3 -> FB5 -> FB4 -> FB6 -> FB8로 되어야 함을 쉽게 알 수 있음에도 불구하고 이를 수행시키는 실행자는 제어 로직을 그릇되게 해석함으로써 원하지 않는 방식의 동작을 행하는 문제점이 있었다. 즉, FB1 -> FB2 -> FB3 -> FB4 -> FB5 -> FB6 -> FB7 -> FB8의 순서로 실행하거나 FB1 -> FB7 -> FB2 -> FB5 -> FB3 -> FB4 -> FB6 -> FB8의 순서로 실행하는 문제점이 있었다. 특히 FBD를 이용하여 피이드백 루우프(feedback loop)를 작성한 경우에는 전술한 바와 같은 동작으로 인하여 제어 대상이 되는 플랜트나 프로세서가 불안정해 지는 문제점이 있었다.2 is a diagram illustrating a functional block diagram for explaining a problem of a method for determining an execution order of functional blocks in a conventional functional block diagram preparation tool. In the example shown in Fig. 2, on the screen of the control logic, it is easy to see that the execution order of the function blocks should be FB1-> FB7-> FB2-> FB3-> FB5-> FB4-> FB6-> FB8. And the performer of doing this has a problem of performing an operation in an undesired manner by misinterpreting the control logic. That is, FB1-> FB2-> FB3-> FB4-> FB5-> FB6-> FB7-> FB8 or FB1-> FB7-> FB2-> FB5-> FB3-> FB4-> FB6-> There was a problem running in the order of FB8. In particular, when a feedback loop is created using the FBD, there is a problem that the plant or the processor to be controlled becomes unstable due to the above operation.
또한 미리 정해져 있는 셀에 기능 블록을 하나씩 위치시키는 종래의 FBD 작성툴은 기능 블록을 원하는 장소에 위치시킬 수 있어야 한다는 IEC 1131-3 표준 규약에 위배될 뿐만 아니라 기능 블록의 입출력 개수에 따라 각각의 기능 블록이 모두 다른 크기를 갖는다는 것을 감안하면 실제로 매우 비효율적이라는 문제점이 있었다.In addition, the conventional FBD writing tool for placing functional blocks one by one in a predetermined cell is not only in violation of the IEC 1131-3 standard that the functional blocks should be located at a desired location, but also for each function depending on the number of inputs and outputs of the functional blocks. Given that the blocks all have different sizes, the problem is that they are actually very inefficient.
본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 제어 로직의 작성을 위한 국제 표준 언어인 기능 블록도 기법으로 만들어진 각 기능 블록들의 실행 순서를 그들의 그래픽 화면 상에서의 위치 및 크기와 관계 없이 정확하게 결정할 수 있도록 함으로써 작성자의 편의를 증진시킬 수 있도록 한 임의 작성된 기능 블록도의 실행 순서 결정 방법을 제공함에 그 목적이 있다.SUMMARY OF THE INVENTION The present invention has been made to solve the above-mentioned problems, and it is possible to accurately determine the execution order of each functional block made by the functional block diagram technique, an international standard language for writing control logic, irrespective of the position and size on their graphic screen. The purpose of the present invention is to provide a method of determining an execution order of an arbitrarily written functional block diagram, which facilitates the convenience of the author.
본 발명의 다른 목적은 FBD가 제공하는 그래픽 화면 상의 임의의 위치에 놓인 수많은 기능 블록들의 올바른 실행 순서를 FBD 작성툴 프로그램의 구문해석(parsing) 또는 컴파일(compile) 과정 중에 자동으로 결정해 주는 임의 작성된 기능 블록도의 실행 순서 결정 방법을 제공함에 있다.Another object of the present invention is to provide a randomly written method that automatically determines the correct order of execution of a large number of functional blocks placed on a graphic screen provided by the FBD during the parsing or compilation process of the FBD writing tool program. The present invention provides a method for determining an execution order of a functional block diagram.
전술한 목적을 달성하기 위한 본 발명의 일 특징에 따른 임의 작성된 기능 블록도의 실행 순서 결정 방법은 (a) 임의의 기능 블록도가 작성된 그래픽 화면을 파싱하여 각 기능 블록의 입출력 연결 관계를 확인하는 단계; (b) 상기 단계 (a)에서 확인된 연결 관계에 의거하여 전체 기능 블록을 즉시 실행이 가능한 무제약 기능 블록군과 다른 기능 블록을 우선적으로 실행해야 비로소 실행이 가능한 제약 기능 블록군으로 구분하는 단계; (c) 상기 무제약 기능 블록군에 속하는 기능 블록의 실행 순서를 미리 주어진 규정에 따라 결정하여 저장하는 단계; (d) 모든 기능 블록의 실행 순서가 결정될 때까지 상기 무제약 기능 블록의 실행을 전제로 하여 상기 제약 기능 블록군에 속하는 기능 블록을 대상으로 상기 단계 (b) 이하를 반복하는 단계를 포함하여 이루어진다.According to an aspect of the present invention, a method for determining an execution order of an arbitrarily created functional block diagram includes: (a) parsing a graphic screen on which an arbitrary functional block diagram is created to check input / output connection relations of respective functional blocks; step; (b) dividing the entire functional block into an unconstrained functional block group that can be executed immediately and another limited functional block group only prior to executing the entire functional block based on the connection relationship identified in step (a); (c) determining and storing an execution order of functional blocks belonging to the unrestricted functional block group according to a predetermined rule; (d) repeating step (b) or below for the functional blocks belonging to the restricted functional block group on the premise of executing the unrestricted functional blocks until the execution order of all functional blocks is determined.
한편, 본 발명의 다른 특징에 따른 임의 작성된 기능 블록도의 실행 순서 결정 방법은 각 기능 블록의 실행 순서의 결정 여부를 나타내는 플래그, 각 기능 블록의 식별 번호가 k인 기능 블록에 대해 다른 기능 블록의 출력과 연결되어 있는 입력의 개수를 저장할 일차원 배열 공간(i_count), 상기 일차원 배열 공간(i_count)의 값이 0인 기능 블록들의 식별 번호를 저장할 일차원 배열 공간(ready) 및 식별 번호가 i인 기능 블록의 출력을 입력으로 사용하고 있는 기능 블록의 식별 번호들을 순서대로 저장할 이차원 배열 공간(link)을 할당하는 단계; (b) 임의의 기능 블록도가 작성된 그래픽 화면을 파싱하여 각 기능 블록의 입출력 연결 관계를 확인한 후에 상기 일차원 배열 공간(i_count) 및 상기 이차원 배열 공간(link)을 채우는 단계; (c) 상기 일차원 배열 공간(i_count)의 값이 0인 기능 블록들의 식별 번호를 상기 일차원 배열 공간(ready)에 순서대로 저장하는 단계; (d) 상기 플래그를 확인하여 상기 일차원 배열 공간(ready)에서 이미 실행 순서가 결정된 플래그가 존재하는 지의 여부를 판단하는 단계; (e) 상기 단계 (d)에서의 판단 결과 아직 실행 순서가 결정되지 않은 기능 블록이 존재하는 경우에는 그 실행 블록의 실행 순서의 결정하여 저장함과 동시에 이미 실행 순서가 결정되었음을 해당 플래그를 세트하여 나타내고, 상기 일차원 배열 공간(i_count) 값을 1만큼 감소시키는 단계 및 (f) 모든 플래그가 세트될 때까지 상기 단계 (c) 이하를 반복하는 단계를 포함하여 이루어진다. 전술한 구성에서, 상기 각 기능 블록의 식별 번호는 상기 단계 (b)의 파싱 과정에서 일련 번호 순으로 임의로 할당될 수 있다.On the other hand, the execution order determination method of the arbitrarily created functional block diagram according to another aspect of the present invention is a flag indicating whether or not the execution order of each functional block is determined, the function block of the functional block of which the identification number of each functional block is k One-dimensional array space (i_count) to store the number of inputs connected to the output, one-dimensional array space (ready) to store identification numbers of the functional blocks having a value of the one-dimensional array space (i_count) and a function block of identification number i Allocating a two-dimensional array link in order to store identification numbers of functional blocks using the output of the input as an input; (b) filling the one-dimensional array space (i_count) and the two-dimensional array space (link) after parsing a graphic screen on which a functional block diagram has been prepared and checking the input / output connection relationship of each functional block; (c) storing identification numbers of the functional blocks having a value of the one-dimensional array space (i_count) equal to zero in the one-dimensional array space (ready); (d) checking the flag to determine whether there is a flag whose execution order is already determined in the one-dimensional array space; (e) If there is a function block whose execution order has not yet been determined as a result of the determination in the step (d), the execution order of the execution block is determined and stored, and the corresponding flag is set by indicating that the execution order has already been determined. Reducing the one-dimensional array space (i_count) value by one and (f) repeating step (c) or below until all flags are set. In the above configuration, the identification number of each functional block may be arbitrarily assigned in the order of serial number during the parsing process of step (b).
도 1은 종래의 기능 블록도 작성툴에서 기능 블록의 실행 순서 결정 방법을 설명하기 위한 도,1 is a view for explaining a method of determining the execution order of functional blocks in a conventional functional block diagram creation tool;
도 2는 종래의 기능 블록도 작성툴에서 기능 블록의 실행 순서 결정 방법의 문제점을 설명하기 위한 도,2 is a view for explaining a problem of a method for determining an execution order of functional blocks in a conventional functional block diagram preparation tool;
도 3은 본 발명의 임의 작성된 기능 블록도의 실행 순서 결정 방법을 설명하기 위한 플로우차트,3 is a flowchart for explaining a method of determining execution order of an arbitrarily created functional block diagram of the present invention;
도 4는 본 발명의 방법을 설명하기 위하여 임의 작성된 기능 블록도의 예시도이다.4 is an exemplary diagram of a functional block diagram arbitrarily created to illustrate the method of the present invention.
이하에는 첨부한 도면을 참조하여 본 발명의 양호한 실시예에 따른 임의 작성된 기능 블록도의 실행 순서 결정 방법에 대해서 상세하게 설명하는데, 본 발명이 기본적으로 파져(parser) 및 컴파일러(compiler) 소프트 웨어의 구현을 위한 기본 알고리즘에 관계되기 때문에 하드웨어 도면을 대신하여 알고리즘의 기본 플로우챠트에 의거하여 설명을 진행한다.Hereinafter, a method of determining an execution order of an arbitrarily written functional block diagram according to a preferred embodiment of the present invention will be described in detail with reference to the accompanying drawings, and the present invention basically includes a parser and a compiler software. Since it is related to the basic algorithm for implementation, description will be made based on the basic flowchart of the algorithm instead of the hardware drawing.
먼저, 전술한 바와 같은 각각의 기능 블록들의 실행 순서의 결정을 위해서 각 기능 블록에는 완전 무작위로 1에서 N까지의 식별 번호가 부여되어 있고, 이들은 알고리즘 내부에서 그래픽 화면인 FBD를 파싱하여 일련 번호 순으로 임의로 할당된다는 전제 조건이 만족되어야 한다. 또한 각 기능 블록에 대해서는 표 1에 기재한 바와 같이 관련 정보를 저장할 공간이 확보되어 있어야 한다.First, in order to determine the execution order of the respective functional blocks as described above, each functional block is given a random number from 1 to N completely randomly, and these are parsed into the serial number by parsing the graphic screen FBD in the algorithm. The precondition that random assignment is to be satisfied. In addition, for each functional block, as shown in Table 1, a space for storing related information should be secured.
도 3은 본 발명의 임의 작성된 기능 블록도의 실행 순서 결정 방법을 설명하기 위한 플로우차트인 바, 도 3에서는 실행 순서를 결정하는 알고리즘에만 초점을 맞추고 있기 때문에 "실행"이라는 용어의 의미를 실행되어야 할 기능 블록의 식별 번호를 실행 순서를 표시하는 순서 목차에 프린트 하는 것으로 생각하기로 한다.3 is a flowchart for explaining a method of determining an execution order of an arbitrarily written functional block diagram of the present invention. In FIG. 3, only the algorithm for determining the execution order is used. Therefore, the meaning of the term “execution” should be implemented. It is assumed that the identification number of the function block to be printed is printed in the order table indicating the execution order.
먼저, 다른 기능 블록의 출력과 자신의 입력이 연결되어 있지 않은 기능 블록, 즉 "i_count" 값이 0인 기능 블록은 우선적으로 실행이 가능한 것이므로 단계(S10)에서는 임의의 FBD가 작성된 그래픽 화면을 파싱하여 이들의 식별 번호를 전술한 일차원 배열 공간인 "ready"에 순서대로 저장한다. 다음, 단계(S20)에서는 이렇게 "ready"에 저장된 기능 블록에서 "flag"값이 0, 즉 아직 실행되지 않은 기능 블록이 존재하는 지를 판단한다. 단계(S20)에서 "flag"값이 0인 기능 블록이 하나라도 존재하는 경우에는 단계(S30)로 진행하여 그 기능 블록의 출력이 연결되어 있는 기능 블록의 "i-count" 값을 변수 "link"를 이용하여 1만큼 감소시킨다. 다음, 단계(S40)에서는 그 기능 블록을 실행, 즉 그 식별 번호를 실행 순서 목차에 프린트로 출력하고, 단계(S50)에서는 그 기능 블록이 실행되었음을 알 수 있도록 그 기능 블록의 "flag"를 세트, 즉 1로 변환시킨다. 다음, 단계(S60)에서는 모든 기능 블록의 "flag"가 세트되었는 지를 판단하는데, 단계(S60)에서 "flag"가 세트되지 않은 기능 블록이 존재하는 경우에는 모든 기능 블록의 "flag"가 세트될 때까지 단계(S60) 이하를 반복한 후에 프로그램을 종료한다.First, since the output of another function block and a function block whose input is not connected, that is, a function block having a value of "i_count" of 0, can be executed first, in step S10, a graphic screen in which an arbitrary FBD is created is parsed. These identification numbers are stored in order in "ready", which is the one-dimensional array space described above. Next, in step S20, it is determined whether the function flag stored in the ready table has a value of "flag" of 0, that is, a function block that has not yet been executed. If at least one function block having a value of "flag" is 0 in step S20, the flow advances to step S30 to convert the value of i-count value of the function block to which the output of the function block is connected. Use to decrease by 1. Next, in step S40, the function block is executed, that is, the identification number is printed in the execution order table of contents, and in step S50, "flag" of the function block is set so that the function block is executed. , That is, to 1 Next, in step S60, it is determined whether "flag" of all function blocks is set. If there is a function block in which "flag" is not set in step S60, "flag" of all function blocks is set. The program is terminated after repeating steps S60 and below.
이러한 알고리즘을 "C 언어"의 형식을 빌려서 표현하면 아래와 같다.This algorithm can be expressed by borrowing the form of "C language".
1. INITIONALIZATION1. INITIONALIZATION
k1 <- 0k1 <-0
FOR i=1 TO N FOR j=0 TO (N-I) link[i,j] <- 0FOR i = 1 TO N FOR j = 0 TO (N-I) link [i, j] <-0
2. FOR id=1 TO N2.for id = 1 TO N
IF(i_count[id]=0) THEN {ready[k1] <- id, k1 <- k1+1}IF (i_count [id] = 0) THEN {ready [k1] <-id, k1 <-k1 + 1}
3. FOR k2=0 TO (k1-1) {3. FOR k2 = 0 TO (k1-1) {
id <- ready[k2] ;id <-ready [k2];
IF(flag[id]=0) THEN {IF (flag [id] = 0) THEN {
FOR k3=0 TO (o_count[id]-1)FOR k3 = 0 TO (o_count [id] -1)
IF (link[id,k3]>0) THENIF (link [id, k3] > 0) THEN
i_count[link[id,k3]] <- i_count[link[id,k3]-1 ;i_count [link [id, k3]] <-i_count [link [id, k3] -1;
PRINT ("id") ;PRINT ("id");
flag[id]<-1 ; }flag [id] <-1; }
}}
4. IF 모든 flag[id]=0, id=1,2,...,N THEN 끝.4. IF All flag [id] = 0, id = 1,2, ..., N THEN ends.
ELSE repeat step 2-3.ELSE repeat step 2-3.
이하에서는 본 발명의 임의 작성된 기능 블록도의 실행 순서 결정 방법의 동작을 구체적으로 설명한다.Hereinafter, the operation of the execution order determination method of the arbitrary functional block diagram of the present invention will be described in detail.
도 4는 본 발명의 방법을 설명하기 위하여 임의 작성된 기능 블록도의 예시도로서, BK1 내지 BK6은 사용자에 의해 임의적으로 작성된 기능 블록을 나타낸다. 도 4에 예시한 기능 블록도를 그래픽 파싱하게 되면 전술한 전제 조건에서와 같이 아래의 표 2 및 표 3에 기재한 초기치를 갖는 변수들이 생성된다.4 is an exemplary diagram of a functional block diagram arbitrarily created to explain the method of the present invention, wherein BK1 to BK6 represent functional blocks arbitrarily created by a user. Graphical parsing of the functional block diagram illustrated in FIG. 4 generates variables with initial values set forth in Tables 2 and 3 below, as in the foregoing preconditions.
위의 표 3에서 알 수 있는 바와 같이 "i-count" 값이 0인 기능 블록은 BK2와 BK5인 바, 단계(S10)에서는 일차원 배열 공간 "ready"에 BK2와 BK5의 순서로 실행할 기능 블록들을 저장되게 된다. 다음, 단계(S20)에서는 이들 기능 블록들이 아직 실행되지 않은 상태이기 때문에 단계(S30)로 진행하여 변수 "link"를 이용하여 그 기능 블록의 출력이 연결되어 있는 기능 블록, 즉 BK4와 BK1을 확인한 후에, 이 기능 블록의 "i_count" 값을 1만큼 감소시킨다. 따라서, 이 시점에서의 기능 블록 BK4의 "i_count" 값은 최초 2에서 1로 될 것이며, 기능 블록 BK1의 "i_count" 값은 최초 1에서 0으로 될 것이다. 다음, 단계(S40)에서는 기능 블록 BK2와 BK5를 순차적으로 실행, 즉 프린트하고, 단계(S50)에서는 이 기능 블록 BK2와 BK5를 실행하였음을 알 수 있도록 해당 "flag"를 세트시킨다.As can be seen in Table 3 above, the function blocks having the value of i-count 0 are BK2 and BK5. In step S10, the functional blocks to be executed in the order of BK2 and BK5 in the one-dimensional array space "ready" Will be saved. Next, in step S20, since these functional blocks have not yet been executed, the process proceeds to step S30 to identify the function blocks to which the outputs of the function blocks are connected, that is, BK4 and BK1 using the variable "link". Later, the value of " i_count " of this functional block is decreased by one. Thus, at this point the value of i_count of function block BK4 will be the first two to one, and the value of i_count of the function block BK1 will be first one to zero. Next, in step S40, the function blocks BK2 and BK5 are executed sequentially, that is, printed. In step S50, the corresponding 'flag' is set so that the function blocks BK2 and BK5 are executed.
한편, 단계(S60)에서는 현 시점에서 단지 기능 블록 BK2와 BK5만 실행된 상태이기 때문에 프로그램은 단계(S10)로 복귀한다.On the other hand, in step S60, only the functional blocks BK2 and BK5 have been executed at this point in time, so the program returns to step S10.
단계(S10)로의 복귀 결과, 현 시점에서는 배열 공간 "ready"에 기능 블록 BK1, BK2, BK3 및 BK5의 순서로 실행할 기능 블록들이 저장되게 된다. 다음, 단계(S20)에서는 해당하는 "flag"를 통하여 확인하여 이미 실행된 기능 블록을 판단하는데, 이렇게 하여 식별된 기능 블록인 BK2와 BK5는 이후 단계(S50)에서의 실행이 생략된다. 다음, 아직 실행되지 않은 기능 블록인 BK1과 BK3에 대해서는 단계(S30)에서 변수 "link"를 이용하여 그 기능 블록의 출력이 연결되어 있는 기능 블록, 즉 BK6(본 예에서는 BK3에 연결된 기능 블록은 없으므로 무시한다)을 확인한 후에, 이 기능 블록의 "i_count" 값을 1만큼 감소시킨다. 따라서, 이 시점에서의 기능 블록 BK6의 "i_count" 값은 최초 1에서 0으로 될 것이다. 다음, 단계(S40)에서는 기능 블록 BK1과 BK3을 순차적으로 실행, 즉 프린트하고, 단계(S50)에서는 이 기능 블록 BK1과 BK3을 실행하였음을 알 수 있도록 해당 "flag"를 세트시킨다.As a result of the return to step S10, at this point in time, the functional blocks to be executed in the order of the functional blocks BK1, BK2, BK3 and BK5 are stored in the array space "ready". Next, in step S20, a function block that has already been executed is determined by checking through the corresponding 'flag'. Thus, execution of the identified function blocks BK2 and BK5 is omitted in step S50. Next, for the function blocks BK1 and BK3 that have not yet been executed, the function block to which the output of the function block is connected using the variable link in step S30, that is, the BK6 (in this example, the function block connected to BK3) Ignore this function and ignore it, and then decrease the i_count value of this function block by one. Therefore, the value of i_count " of the function block BK6 at this point will be from 1 to 0 in the first place. Next, in step S40, the function blocks BK1 and BK3 are executed sequentially, that is, printed. In step S50, the corresponding 'flag' is set so that the function blocks BK1 and BK3 are executed.
한편, 단계(S60)에서는 현 시점에서 단지 기능 블록 BK1, BK2, BK3과 BK5만 실행된 상태이기 때문에 프로그램은 다시 단계(S10)로 복귀한다. 단계(S10)로의 복귀 결과 현 시점에서는 배열 공간 "ready"에 기능 블록 BK1, BK2, BK3, BK5 및 BK6의 순서로 실행할 기능 블록들이 저장되게 된다. 다음, 단계(S20)에서는 이미 실행된 기능 블록인 BK1, BK2, BK3 및 BK5를 해당하는 "flag"를 통하여 확인하는데, 이렇게 확인된 기능 블록들은 이후 단계(S50)에서의 실행이 생략된다. 다음, 아직 실행되지 않은 기능 블록인 BK6에 대해서는 단계(S30)에서 변수 "link"를 이용하여 그 기능 블록의 출력이 연결되어 있는 기능 블록, 즉 BK4를 확인한 후에, 이 기능 블록의 "i_count" 값을 1만큼 감소시킨다. 따라서, 이 시점에서의 기능 블록 BK4의 "i_count" 값은 1에서 다시 0로 감소될 것이다. 다음, 단계(S40)에서는 기능 블록 BK6을 실행, 즉 프린트하고, 단계(S50)에서는 이 기능 블록 BK6을 실행하였음을 알 수 있도록 해당 "flag"를 세트시킨다.On the other hand, in step S60, only the functional blocks BK1, BK2, BK3 and BK5 have been executed at this point in time, so the program returns to step S10. As a result of the return to step S10 At this point in time, the functional blocks to be executed in the order of the functional blocks BK1, BK2, BK3, BK5 and BK6 are stored in the array space "ready". Next, in step S20, the function blocks BK1, BK2, BK3, and BK5, which have already been executed, are checked through the corresponding 'flag', and the function blocks thus confirmed are omitted in the subsequent step S50. Next, for BK6, which has not yet been executed, after checking the function block to which the output of the function block is connected, that is, BK4, using the variable "link 변수 in step S30, the value of" i_count "of this function block is determined. Decreases by 1. Thus, the value of " i_count " of the function block BK4 at this point will decrease from 1 back to zero. Next, in step S40, the function block BK6 is executed, i.e., printed, and in step S50, the corresponding " flag " is set so that the function block BK6 is executed.
한편, 단계(S50)에서는 현 시점에서 아직 실행되지 않은 기능 블록 BK4가 존재하기 때문에 프로그램은 단계(S10)로 복귀한다. 단계(S10)로의 복귀 결과 현 시점에서는 일차원 배열 공간 "ready"에 기능 블록 BK1, BK2, BK3, BK4, BK5 및 BK6의 순서로 실행할 기능 블록들을 저장되게 된다. 다음, 단계(S20)에서는 이들 이미 실행된 기능 블록인 BK1, BK2, BK3, BK5 및 BK6을 해당하는 "flag"를 통하여 확인하는데, 이렇게 확인된 기능 블록들은 이후 단계(S50)에서의 실행이 생략된다. 다음, 아직 실행되지 않은 기능 블록인 BK4에 대해서는 단계(S30)에서 변수 "link"를 이용하여 그 기능 블록의 출력이 연결되어 있는 기능 블록을 확인하는데, 현 시점에서는 연결된 기능 블록이 없기 때문에 무시하고 단계(S40)로 진행한다. 다음, 단계(S40)에서는 기능 블록 BK4를 실행, 즉 프린트하고, 단계(S50)에서는 이 기능 블록 BK4를 실행하였음을 알 수 있도록 해당 flag를 세트시킨다.On the other hand, in step S50, since there exists a function block BK4 that has not yet been executed at this point in time, the program returns to step S10. As a result of the return to step S10 At this time, the functional blocks to be executed in the order of the functional blocks BK1, BK2, BK3, BK4, BK5 and BK6 are stored in the one-dimensional array space "ready". Next, in step S20, these already executed functional blocks BK1, BK2, BK3, BK5, and BK6 are identified through corresponding 'flag', and the thus confirmed functional blocks are omitted from the subsequent step S50. do. Next, for BK4, which has not yet been executed, the function block to which the output of the function block is connected is checked using the variable "link" in step S30. Proceed to step S40. Next, in step S40, the function block BK4 is executed, i.e., printed. In step S50, the corresponding flag is set so that the function block BK4 is executed.
한편, 단계(60)에서는 현 시점에서 아직 기능 블록 BK4의 실행 여부를 확인할 수 없는 상태이기 때문에 프로그램은 단계(S10)로 복귀한다. 단계(S10)로의 복귀 결과 현 시점에서는 일차원 배열 공간 "ready"에 기능 블록 BK1, BK2, BK3, BK4, BK5 및 BK6의 순서로 실행할 기능 블록들을 저장되게 된다. 다음, 단계(S20)에서는 실행되지 않은 기능 블록이 존재하지 않기 때문에 비로소 프로그램이 종료된다.On the other hand, in step 60, the program returns to step S10 because it is not yet possible to confirm whether function block BK4 has been executed at this time. As a result of the return to step S10 At this time, the functional blocks to be executed in the order of the functional blocks BK1, BK2, BK3, BK4, BK5 and BK6 are stored in the one-dimensional array space "ready". Next, in step S20, the program is terminated because no functional block exists.
따라서, 일고리즘이 종료된 시점에 주어진 FBD에서 각 기능 블록이 수행되는 순서는 논리적으로 알 수 있는 바와 같이 정확하게 "2 -> 5 -> 1 -> 3 -> 6 -> 4"가 된다.Therefore, the order in which the respective functional blocks are performed in the given FBD at the end of the algorithm is precisely "2-> 5-> 1-> 3-> 6-> 4".
한편, 이상의 설명에서 알 수 있는 바와 같이 단계(S10) 내지 단계(S60)의 반복 횟수는 각 기능 블록에 부여된 식별 번호에 의존하여 결정됨을 알 수 있다. 즉, 초기에 부여된 기능 블록들의 식별 번호가 실제로 수행되어야 하는 순서에 유사할수록 본 발명의 방법에 따른 알고리즘의 반복 회수가 줄어들게 되므로 보다 효율적인 알고리즘이 작성될 수 있다.Meanwhile, as can be seen from the above description, it can be seen that the number of repetitions of steps S10 to S60 is determined depending on the identification number assigned to each functional block. In other words, as the identification numbers of the initially assigned functional blocks are similar to the order in which they are to be actually performed, the number of iterations of the algorithm according to the method of the present invention is reduced, so that a more efficient algorithm can be created.
한편, 일반적으로 FBD 내의 기능 블록에 부여되는 식별 번호는 사용자가 작성하는 도중에 작성 순서에 의해 결정되는 것이 보통이기 때문에 경우에 따라서는 알고리즘의 반복 수행 회수가 증가하여 비효율적라고 생각할 수도 있다. 그러나, 본 발명에 따른 알고리즘은 제어 로직을 작성하여 다운 로드시키기 이전에 컴파일러의 한 단계로서 단 한번만 수행하게 되는 것이기 때문에 전술한 바와 같은 알고리즘의 비효율성은 아주 미미한 것이라고 할 수가 있다.On the other hand, in general, since the identification number assigned to the functional block in the FBD is usually determined by the creation order during the user's writing, it may be considered to be inefficient because the number of iterations of the algorithm is increased in some cases. However, since the algorithm according to the present invention is performed only once as a step of the compiler before the control logic is written and downloaded, the inefficiency of the algorithm as described above is very small.
본 발명의 임의 작성된 기능 블록도의 실행 순서 결정 방법은 전술한 실시예에 국한되지 않고 본 발명의 기술 사상이 허용하는 범위 내에서 다양하게 변형하여 실시할 수가 있다. 예를 들어, 본 발명의 방법은 어떤 구체적인 작성툴 상에서의 기능 블록이나 입출력 관계를 나타내는 구체적인 표식에 구애받음이 없이 적용될 수 있다.The execution order determination method of the arbitrarily created functional block diagram of the present invention is not limited to the above-described embodiments, and can be modified in various ways within the scope of the technical idea of the present invention. For example, the method of the present invention can be applied without being bound by specific markers representing functional blocks or input / output relationships on any specific writing tool.
이상에서 설명한 바와 같은 본 발명의 임의 작성된 기능 블록도의 실행 순서 결정 방법에 따르면, 임의 작성된 기능 블록도 내의 각 기능 블록의 입출력 관계에 의거하여 실행 순서를 결정하기 때문에 기능 블록의 그래픽 화면 상에서의 위치 및 크기를 임의적으로 정할 수 있는 편리함이 있다.According to the execution order determination method of the arbitrarily created functional block diagram of the present invention as described above, since the execution order is determined based on the input / output relationship of each functional block in the arbitrarily created functional block diagram, the position of the functional block on the graphic screen. And the convenience of arbitrarily setting the size.
Claims (3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970061538A KR100234982B1 (en) | 1997-11-20 | 1997-11-20 | Automatic execution-order decision method for function blocks in a logic diagram |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970061538A KR100234982B1 (en) | 1997-11-20 | 1997-11-20 | Automatic execution-order decision method for function blocks in a logic diagram |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990041013A KR19990041013A (en) | 1999-06-15 |
KR100234982B1 true KR100234982B1 (en) | 1999-12-15 |
Family
ID=19525182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970061538A KR100234982B1 (en) | 1997-11-20 | 1997-11-20 | Automatic execution-order decision method for function blocks in a logic diagram |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100234982B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180009344A (en) * | 2015-07-10 | 2018-01-26 | 미쓰비시덴키 가부시키가이샤 | Apparatus and method for generating a program |
-
1997
- 1997-11-20 KR KR1019970061538A patent/KR100234982B1/en not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180009344A (en) * | 2015-07-10 | 2018-01-26 | 미쓰비시덴키 가부시키가이샤 | Apparatus and method for generating a program |
KR101981421B1 (en) | 2015-07-10 | 2019-08-28 | 미쓰비시덴키 가부시키가이샤 | Program generating device and method |
Also Published As
Publication number | Publication date |
---|---|
KR19990041013A (en) | 1999-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7162709B2 (en) | System and method for common code generation | |
US6928393B2 (en) | Method and system for supporting negative testing in combinatorial test case generators | |
US7016807B2 (en) | Device and method for monitoring a program execution | |
US5819097A (en) | Industrial controller compiler with expandable instruction set | |
US20040255272A1 (en) | Component dependency matrices | |
JPH07319677A (en) | Method and apparatus for creation of flowchart by using programmed computer for automatic generation of structured program | |
CN110244936B (en) | Method and device for supporting VISIO flow chart to automatically import DCS algorithm configuration software | |
EP0633526A2 (en) | Language processing system and method therefor | |
JP2003280924A (en) | Method for processing event having hierarchical structure in communication equipment system | |
US5826088A (en) | System for protecting computer software written in interpreted language | |
CN101088071A (en) | Method and device for secure parameterization of electronic devices | |
CN113031967B (en) | Code conversion method and device | |
KR20060120539A (en) | Graphical programing device and programmable indicator | |
KR100234982B1 (en) | Automatic execution-order decision method for function blocks in a logic diagram | |
US6845440B2 (en) | System for preventing memory usage conflicts when generating and merging computer architecture test cases | |
US7181735B1 (en) | Method and apparatus for analyzing program based on rules of programming language before optimization in compiler | |
US6263477B1 (en) | Layout information generating apparatus and method thereof | |
CN109213475B (en) | Artificial intelligence writing method for satellite multi-loop comparison instruction unit remote control source program | |
EP0312235A2 (en) | Graphics image editor | |
CN117688902B (en) | Parameterized chip simulation case management method, system and medium | |
US7770147B1 (en) | Automatic generators for verilog programming | |
EP0676111B1 (en) | Method and arrangement for testing services in a telecommunications system | |
JPH08137684A (en) | Program transfer method, system and device, for program development, and program execution device | |
JP2005327192A (en) | Hardware design system and method thereof | |
US20220253718A1 (en) | Automatically validating decision tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130708 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20140603 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20150629 Year of fee payment: 17 |
|
LAPS | Lapse due to unpaid annual fee |