KR101702912B1 - System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section - Google Patents

System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section Download PDF

Info

Publication number
KR101702912B1
KR101702912B1 KR1020160145504A KR20160145504A KR101702912B1 KR 101702912 B1 KR101702912 B1 KR 101702912B1 KR 1020160145504 A KR1020160145504 A KR 1020160145504A KR 20160145504 A KR20160145504 A KR 20160145504A KR 101702912 B1 KR101702912 B1 KR 101702912B1
Authority
KR
South Korea
Prior art keywords
analysis
programs
code
unit
execution
Prior art date
Application number
KR1020160145504A
Other languages
Korean (ko)
Inventor
홍진혁
Original Assignee
(주) 이디티
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 (주) 이디티 filed Critical (주) 이디티
Priority to KR1020160145504A priority Critical patent/KR101702912B1/en
Application granted granted Critical
Publication of KR101702912B1 publication Critical patent/KR101702912B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • G06F17/30327
    • G06F17/5009

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

The present invention relates to a virtually integrated driving system for engineering analysis codes using a process data section, and more specifically, to a technology in which when an operation of a total system is analyzed by integrating engineering programs for analysis verified in the analyzing performance through a permission or license, each of the programs directly accesses a data (or Heap) section in an individual space to change a value and dynamic-change time synchronization binary codes of each of the programs during an execution, so that a time synchronization is secured. According to the virtually integrated driving system for engineering analysis codes using a process data section, executing the time synchronization is integrally secured without damaging an original algorithm of the verified program, thereby outputting a result having high reliability.

Description

프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템{System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section} [0001] The present invention relates to a method and a system for analyzing a code,

본 발명은 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템에 관한 것으로서, 더욱 상세하게는 인허가 등을 통해 분석성능을 기 검증받은 분석용 공학프로그램들을 통합하여 종합 시스템의 거동을 분석하고자 할 경우에, 각 프로그램들이 각기 독립적 메모리 공간의 데이터(혹은 Heap) 섹션에 직접 접근하여 값을 변경하고, 각 프로그램들의 시간동기화 이진 코드를 실행 중에 동적 변경하여 시간 동기화를 보장하는 기술로서, 검증받은 프로그램의 원형 알고리즘을 훼손하지 않고도, 통합적으로 시간동기화 실행을 보장하여 높은 신뢰도의 결과를 도출할 수 있는 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템에 관한 것이다.The present invention relates to a virtual integrated analysis system for analytical codes using a process data section, and more particularly, to a method for analyzing a behavior of a comprehensive system by integrating analytical engineering programs that have been verified for analysis performance through licensing and the like , A technique of directly accessing the data (or Heap) section of each program in each independent memory space, changing the value, and dynamically changing the time synchronization binary code of each program during execution to ensure time synchronization, And more particularly, to a scientific analysis code virtual integrated drive system using a process data section that can achieve a high reliability result by ensuring time synchronization execution without compromising an algorithm.

종래에 플랜트시스템 설계/안전분석 등에 사용되는 안전해석코드 등 특정 분야의 검증 목적을 위해 개발된 기존 코드들을 병합하여 통합된 전체 시스템의 거동을 분석하는 용도로 사용하기 위하여 통합을 수행할 경우에, 기존 코드들의 프로그램 소스 코드를 합쳐 하나의 대형 코드로 병합하거나, Dynamic Link Library(DLL) 방식 혹은 Static Library(LIB) 방식으로 함수를 호출하는 형태로 여러 코드 간의 연계 변수들의 값들을 교환하여 결합하는 방식을 취하거나, 좀 더 선진화된 방법으로는 각 프로그램의 내부변수들을 모두 추출하여 하나의 거대한 공유메모리(Shared Memory)에 재배치하여 사용하여 왔다. When integrating existing codes developed for verification purposes of a specific field, such as safety analysis codes used in plant system design / safety analysis in the past, for use in analyzing the behavior of the integrated system as a whole, A method of merging program source codes of existing codes into one large code or a method of exchanging values of connection variables among a plurality of codes in the form of calling a function using a dynamic link library (DLL) method or a static library (LIB) method Or a more advanced method, extracts all the internal variables of each program and relocates it to one huge shared memory.

상기한 프로그램 소스 통합 방식이나 DLL/LIB 방식으로 수정하여 통합하는 방식은 프로그램들 간의 연계 변수들의 형태 및 종류를 사전에 미리 정의하여 함수 인자로 값을 전달하므로, 통합하고자 하는 프로그램의 수량이 증가할수록 프로그램 서로 간의 연계변수가 증가하게 된다.In the method of integrating the program source integration method or the DLL / LIB method, the type and kind of the linkage variables between programs are predefined in advance and the value is transferred as a function parameter. As the number of programs to be integrated increases And the linkage between the programs increases.

따라서, 전달되는 함수의 종류 및 호출 횟수가 기하급수적으로 증가하게 되며, 또한 연계변수가 변경됨에 따라 소스 코드의 변경이 필수적이므로, 반드시 소스를 변경하여 컴파일하는 과정을 겪어야 하는 등 통합개발 기간이 상당히 길어지는 단점이 있었다.Therefore, the type of function to be transferred and the number of calls increase exponentially, and since the change of the source code is necessary as the connection variable is changed, the process of compiling by changing the source must be performed, There was a drawback that it lengthened.

그리고, 공유메모리(Shared Memory)를 사용하여 각 프로그램들의 내부변수들을 재편성하는 방법의 경우에는, 변수들의 저장공간이 Compiler에서 정해주는 방식이 아닌, 외부 공유메모리 공간으로 재배치해야 하므로 프로그램 소스의 변수 생성 부분을 모두 재정의해 주어야 하는 부담이 존재하게 된다. In the case of a method of reorganizing the internal variables of each program using a shared memory, the storage space of the variables must be relocated to an external shared memory space rather than a method defined by the compiler. Therefore, There is a burden of having to redefine all the parts.

이렇게 프로그램 소스를 변경하는 방식은 원자력과 같이 안전성 관련 시스템의 안정성 분석을 위한 프로그램들이 인허가(License)를 받아, 지정한 영역의 범위 내에서 안전성 분석을 수행해야 하는 경우에는, 프로그램 소스 변경시 안전분석 프로그램의 무결성(Integrity)에 심각한 영향을 끼치게 되어, 그 결과의 신빙성을 상당히 저하시키는 요인이 된다.In the case where the programs for stability analysis of the safety related system, such as nuclear energy, are subjected to the license and the safety analysis is performed within the designated area, And the reliability of the result is seriously deteriorated.

참고적으로, 원자력 발전소를 설계 및 안전성 검증을 위해 사용되는 코드들은 해당 코드의 특정주제기술보고서(Topical Report)를 제출하여 그 적용범위 및 효능에 대해 원자력안전위원회에서 2~3년에 걸쳐 인허가심사를 하여 인허가를 취득하게 된다. For reference, codes used for design and safety verification of nuclear power plants should be submitted to the Nuclear Safety Commission over a period of 2 ~ 3 years for submission of a specific topic technical report of the code, To obtain a license.

이에 따른 비용이 적게는 수십억에서 많게는 수백억까지 소요된다.The cost of this would be from billions to tens of billions of dollars.

따라서, 본 발명을 개시함으로서, 복수 개의 시스템 분석용 프로그램들을 통합 및 실행하여 전체 시스템에 대한 거동을 분석(혹은 모의)하고자 할 경우에, 각 프로그램들이 사용하는 내부 변수들의 저장 위치를 바꾸기 위해 개별 프로그램 소스를 변경하거나, 프로그램 소스들을 통합하여 거대한 하나의 프로그램으로 재결성하는 방법이 아닌, 각 프로그램들의 내부변수들의 저장 공간인 데이터(혹은 Heap) 섹션(Data Section)에서의 오프셋(Offset) 번지정보를 담고 있는 메모리맵(Memory-Map) 파일정보를 이용하여, 프로그램 소스의 변경없이 외부에서 해당 내부변수들의 값을 읽고 쓰는 등의 조작을 수행함으로서, 복수개의 시스템 분석용 프로그램들을 통합하여 구동하는 장점을 제공하게 된다.Therefore, in order to analyze (or simulate) the behavior of the entire system by integrating and executing a plurality of system analysis programs, it is possible to analyze the behavior of the individual systems by changing the storage locations of the internal variables used by the respective programs (Or Heap) section in the data section, which is the storage space of each program's internal variables, rather than changing the source or reconfiguring the program sources into a huge program. (Memory-map) file information to read and write the values of corresponding internal variables without changing the program source, thereby providing an advantage of integrating and running a plurality of system analysis programs .

그리고, 복수 개의 프로그램들의 시간 흐름 동기화를 위해 각 분석 프로그램들이 메모리(RAM)상에 적재(Loading)된 후에 각 프로그램의 주요 실행 반복(Main Execution Loop: MEL) 구간에 이벤트 동기화 개체 생성 및 대기하는 이진코드를 동적으로 삽입하여 MEL 구간의 이진 코드를 변경한 후, 실행하게 하여 시간동기화를 이루는 장점을 제공하게 된다.After each analysis program is loaded on a memory (RAM) for time-synchronization of a plurality of programs, an event synchronization object is generated and waits in a main execution loop (MEL) interval of each program. Code is inserted dynamically to change the binary code of the MEL section and then executed, thereby providing an advantage of time synchronization.

(등록특허문헌) 대한민국공개특허공보 제10-2007-0003578호(Patent Document) Korean Patent Laid-Open No. 10-2007-0003578

따라서, 본 발명은 상기 종래의 문제점을 해소하기 위해 안출된 것으로,SUMMARY OF THE INVENTION Accordingly, the present invention has been made keeping in mind the above problems occurring in the prior art,

본 발명의 제 1목적은 통합 실행하고자 하는 공학적 분석 프로그램들의 소스를 변경하지 않고, 분석 프로그램들이 사용하는 내부 변수들의 메모리 주소 공간에 대한 메모리맵 파일 정보를 이용하여, 다른 프로세스 공간에서 각 분석 프로그램들의 내부 메모리 공간으로 원격으로 침투(Remote Permeation)하여, 각 분석 프로그램들이 필요로 하는 경계변수(Boundary-Condition Variable)들의 경계조건 값들을 제공함으로써, 분석 프로그램들이 단독으로 실행할 때와 동일하게 실행될 수 있도록 하는데 있다.A first object of the present invention is to provide a method and system for analyzing a plurality of analysis programs in a different process space by using memory map file information on a memory address space of internal variables used by analysis programs, Remote Permeation to the internal memory space to provide the boundary condition values of the boundary-condition variables needed by each analysis program so that the analysis programs can be executed in the same way as they execute alone have.

본 발명의 제 2 목적은 각 분석 프로그램들의 시간적으로 같은 진행 시간 (Problem Time)으로 구동될 수 있도록, 분석 프로그램들의 MEL 구간의 전후에 이벤트동기화 객체 생성 및 대기 코드를 메모리 램 상에 로딩되어 있는 상태에서 동적으로 삽입 변경하여 모든 구동되는 분석 프로그램들이 시간 동기가 보장되는 실행이 이루어질 수 있도록 가상 통합(Virtual Integration for the Engineering Codes)을 수행할 수 있도록 하는데 있다.A second object of the present invention is to provide a method and system for generating an event synchronization object before and after a MEL section of analysis programs so that each analysis program can be driven at the same time in terms of time (Problem Time) To enable execution of all running analytical programs in a time-synchronized manner so as to perform a virtual integration for the Engineering Codes.

본 발명이 해결하고자 하는 과제를 달성하기 위하여, 본 발명의 실시예에 따른 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템은,According to an aspect of the present invention, there is provided an analytical code virtual integrated drive system using a process data section according to an embodiment of the present invention,

분석용 코드들의 내부 변수들에 대한 정보를 B-TREE 기반으로 구축한 PVDB부(3),A PVDB unit 3 that builds information on internal variables of analysis codes based on B-TREE,

분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체를 단순 적재 방식 기반으로 구축한 PIDB부(4)를 포함하는 DB빌더노드부(2)와,A DB builder node unit 2 including a PIDB unit 4 constructed by building a structure including information of a process name, a handle value, and a dynamic memory start address value of an analysis code process on a simple loading scheme,

지정된 변수의 현재값을 읽어들이며, 특정값을 해당 변수의 현재값으로 기록하는 DB매니저부(5)를 포함하는 데이터컨트롤러노드부(1)와;A data manager node unit (1) including a DB manager unit (5) for reading a current value of a designated variable and recording a specific value as a current value of the variable;

분석용 프로그램들의 통합 구동을 위한 초기화 작업을 수행하는 프로세스초기화노드부(8)와,A process initializing node unit 8 for performing an initializing operation for integrated driving of analysis programs,

분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 경계조건매니저노드부(9)와,A boundary condition manager node unit 9 for filling the boundary condition values necessary for the analysis programs to operate,

분석용 프로그램들의 시간 동기화를 수행하여 구동될 수 있도록 하는 실시간동기화노드부(10)를 포함하는 실행컨트롤러노드부(7)와;And a real-time synchronization node unit (10) for performing time synchronization of programs for analysis and being able to be driven;

상기 실행컨트롤러노드부(7)에서 시간 동기화 설정 신호가 발생하면, 분석 프로그램들의 대기 상태를 해제시켜 각 분석 프로그램들의 각 MEL 구간을 동시에 실행하여 시간 동기화를 실행하는 엔지니어링코드실행노드부(11)와;An engineering code execution node unit 11 for releasing the waiting state of analysis programs and simultaneously executing each MEL section of each analysis program to execute time synchronization when a time synchronization setting signal is generated in the execution controller node unit 7; ;

상기 실행컨트롤러노드부(7)의 시작, 실행 및 멈춤을 수행하는 실행UI부(23)와,An execution UI unit 23 for starting, executing, and stopping the execution controller node unit 7;

상기 실행컨트롤러노드부(7)를 통해 공학적 분석용 프로그램들이 사용하는 내부 전역 변수의 값에 대한 취득 및 설정을 담당하는 데이터UI부(24)를 포함하는 유저인터페이스노드부(13);를 포함한다.And a user interface node unit 13 including a data UI unit 24 for acquiring and setting values of internal global variables used by engineering analysis programs through the execution controller node unit 7 .

본 발명에 따른 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템은, 통합 실행하고자 하는 공학적 분석 프로그램들의 소스를 변경하지 않고, 분석 프로그램들이 사용하는 내부 변수들의 메모리 주소 공간에 대한 메모리맵 파일 정보를 이용하여, 다른 프로세스 공간에서 각 분석 프로그램들의 내부 메모리 공간으로 원격으로 침투(Remote Permeation)하여, 각 분석 프로그램들이 필요로 하는 경계변수(Boundary-Condition Variable)들의 경계조건 값들을 제공함으로써, 분석 프로그램들이 단독으로 실행할 때와 동일하게 실행될 수 있는 효과를 발휘하게 된다.The analytical code virtual integrated drive system using the process data section according to the present invention is a virtual integrated drive system that uses memory map file information for the memory address space of the internal variables used by the analysis programs without changing the source of the engineering analysis programs to be integrated By remotely penetrating the internal memory space of each analysis program in another process space and providing the boundary condition values of the boundary-condition variables required by each analysis program, analysis programs The effect of being executed in the same manner as when it is executed alone can be obtained.

또한, 각 분석 프로그램들의 시간적으로 같은 진행 시간 (Problem Time)으로 구동될 수 있도록, 분석 프로그램들의 MEL 구간의 전후에 이벤트동기화 객체 생성 및 대기 코드를 메모리 램 상에 로딩되어 있는 상태에서 동적으로 삽입 변경하여 모든 구동되는 분석 프로그램들이 시간 동기가 보장되는 실행이 이루어질 수 있도록 가상 통합(Virtual Integration for the Engineering Codes)을 수행할 수 있는 효과를 발휘하게 된다.In addition, an event synchronization object is generated before and after the MEL section of the analysis programs so that the analysis programs can be driven at the same time (Problem Time) of each analysis program, and the insertion code is dynamically inserted and changed And thus all of the running analysis programs can perform the virtual integration for the engineering processes so that the time synchronous execution can be performed.

즉, 복수 개의 시스템 분석용 프로그램들을 통합하여 전체 시스템에 대한 거동을 분석(혹은 모의)하고자 할 경우에, 각 프로그램들이 사용하는 내부 변수들의 저장 위치를 바꾸기 위해 개별 프로그램 소스를 변경하거나, 프로그램 소스들을 통합하여 거대한 하나의 프로그램으로 재결성하는 방법이 아닌, 각 프로그램들의 내부변수들의 저장공간인 데이터 섹션에서의 오프셋 정보를 담고있는 메모리맵 파일정보를 이용하여, 외부 통합제어 프로그램이 분석용 프로그램 내부 가상공간의 변수값을 읽고 쓰게 함으로써, 기존 통합방법에서 사용되던 많은 양의 연계전달 함수의 생성 및 연계 함수 호출 횟수 증가에 따른 비효율성 증대, 그리고 연계변수들을 위한 수많은 소스 코드의 변경 등 수많은 단점들을 극복함으로, 통합기간을 크게 단축시킬 수 있게 된다.In other words, when analyzing (or simulating) the behavior of the entire system by integrating a plurality of programs for system analysis, it is possible to change individual program sources to change the storage locations of the internal variables used by the respective programs, An external integrated control program is stored in the internal virtual space for analysis using the memory map file information containing the offset information in the data section which is the storage space of the internal variables of the respective programs, By reading and writing the variable values of the variables, it is possible to overcome many disadvantages such as the generation of a large amount of linked transfer functions used in the existing integration method, the inefficiency due to the increase of the number of linked function calls, and the change of numerous source codes for the linked variables , So that the integration period can be greatly shortened do.

그리고, 분석 프로그램들의 소스코드를 변경하지 않고도 분석 프로그램들을 시간 동기화를 이루며 통합 실행하는 시스템을 제공하고 있어, 안전분석 코드의 인허가 받은 알고리즘과 적용범위를 그대로 적용할 수 있게 되어 고신뢰도의 통합 분석을 할 수 있게 하여, 예를 들어, 원자력 안전분석에 큰 발전을 도모할 수 있게 된다.In addition, it provides a system that integrates analytical programs with time synchronization without changing the source code of analysis programs. Therefore, it is possible to apply the licensed algorithms and scope of safety analysis codes as they are, For example, to make significant progress in nuclear safety analysis.

그리고, 기존 통합방법과 같이 인허가를 받은 안전분석 코드를 변경했을 경우에는, Re-Licensing에 따르는 장기간의 심사기간과 고비용을 반드시 수반했지만, 본 발명으로 인한 시스템에서는 그러한 소요기간 및 비용이 전혀 발생하지 않는다는 큰 장점이 있다.In the case of changing the safety analysis code that has been licensed as in the existing integration method, the long-term review period and the high cost according to the re-licensing have necessarily been accompanied. However, in the system according to the present invention, There is a big advantage that it does not.

그리고, 각 분석 프로그램들이 개전(Version-Up)될 경우에도, 종래의 통합방법을 사용한다면 수많은 시행착오와 기나긴 통합과정을 겪어야 하지만, 본 발명에 의한 방식으로는 각각의 분석 프로그램들이 독립된 실행을 하면서도, 시간동기화를 보장하게 되므로, 각 분석 프로그램들을 독립되게 유지보수 및 Version-Up된 코드로 통합을 상대적으로 수월하게 하는 장점을 제공한다.Even if each analysis program is version-up, if the conventional integration method is used, it is required to undergo a lot of trial and error and a long integration process. However, according to the method of the present invention, , And time synchronization is ensured. Therefore, it is advantageous to relatively simplify the integration of each analysis program into the maintenance and version-up code.

그리고, 종래의 소스 통합에 의한 방식은, 그래픽 연계 프로그램 개발시, 디스플레이하기를 원하는 연계변수를 프로그램 소스 차원에서 연계변수 하나하나를 지정하여 공개해야만 했지만, 본 발명에 의한 방식으로는 B-Tree를 이용하여 분석 프로그램 내부 전역변수를 표준화된 방법으로 삽입/삭제/조회/검색하는 기능이 존재하므로 그래픽 Display 프로그램과 같은 타목적의 연계 프로그램 개발시에도 많은 편리함을 제공하고 있다.In the conventional method of integrating sources, it is necessary to disclose one linking variable by specifying a linking variable in a program source dimension when a graphical linking program is developed. However, in the method according to the present invention, The present invention provides many convenience in developing a link program for other purposes such as a graphic display program because there is a function of inserting / deleting / inquiring / retrieving the global variables in the analysis program in a standardized manner.

도 1은 본 발명의 일실시예에 따른 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템의 전체 구성도이며, 도 2는 가상 통합(Virtual Memory Space of an Engineering Code)을 도시한 예시도이며, 도 3은 Memory Map 파일 및 분석 프로그램 가상주소 공간과의 관계도를 나타낸 것이며, 도 4는 PVDB부 및 PIDB부의 구성 구조체들간의 관계도이며, 도 5는 실행컨트롤러노드부의 프로세스초기화노드부의 START 명령 흐름도이며, 도 6은 분석 프로그램의 코드 구성도이며, 도 7은 분석 프로그램의 MEL 이진코드 변경도이며, 도 8은 동적 변경된 분석 프로그램 MEL 실행 흐름도이며, 도 9는 실행컨트롤러노드부 및 공학적 분석 프로그램간 시간 동기화를 도식한 예시도이며, 도 10은 실행컨트롤러노드부의 경계조건매니저노드부의 RUN 명령 흐름도이며, 도 11은 실행컨트롤러노드부의 경계조건매니저노드부의 FREEZE 명령 흐름도이며, 도 12는 DB매니저부의 GET 명령 흐름도이며, 도 13은 DB매니저부의 SET 명령 흐름도이며, 도 14는 process.ini 파일 구현도이다.FIG. 1 is an overall configuration diagram of a scientific analysis code virtual integrated drive system using a process data section according to an embodiment of the present invention, FIG. 2 is an example of a virtual memory space of an Engineering Code, FIG. 3 is a diagram showing the relationship between the memory map file and the analysis program virtual address space, FIG. 4 is a diagram showing the relationship between the PVDB unit and the PIDB unit, FIG. FIG. 7 is a flow chart of the MEL binary code change of the analysis program, FIG. 8 is a flowchart of the dynamic change analysis program MEL, and FIG. 10 is an RUN command flow chart of the boundary condition manager node unit of the execution controller node unit, The multiple parts of the flow chart node boundary conditions manager node portion FREEZE command, Figure 12 is a flow chart DB GET command manager portion, 13 is a flow chart DB SET command manager portion, 14 is a file process.ini implemented.

이하, 본 발명에 의한 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템의 실시예를 통해 상세히 설명하도록 한다.Hereinafter, embodiments of the analytical code virtual integrated drive system using the process data section according to the present invention will be described in detail.

도 1은 본 발명의 일실시예에 따른 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템의 전체 구성도이다.1 is an overall configuration diagram of a scientific analysis code virtual integrated drive system using a process data section according to an embodiment of the present invention.

도 1에 도시한 바와 같이, 본 발명의 공학용 분석코드 가상통합 구동시스템은 크게, 데이터컨트롤러노드부(1), 실행컨트롤러노드부(7), 엔지니어링코드실행노드부(11), 유저인터페이스노드부(13)를 포함하여 구성되게 된다.As shown in FIG. 1, the analytical code virtual integrated drive system of the present invention mainly includes a data controller node unit 1, an execution controller node unit 7, an engineering code execution node unit 11, (13).

본 발명에서 설명하고 있는 통합 방법으로는 분석 프로그램들(12, 202, 806) 간의 변수값 교환 방법, 분석 프로그램들(12, 202, 806)간의 시간동기화 실행 방법이다.The integration method described in the present invention is a method of exchanging variable values between analysis programs 12, 202, and 806 and a method of performing time synchronization between analysis programs 12, 202, and 806.

상기한 분석 프로그램들(12, 202, 806) 간의 변수값 교환 방법을 설명하도록 하겠다.A method of exchanging variable values between the analysis programs 12, 202, and 806 will be described.

통상적으로 실행프로그램이 내부적으로 사용하는 변수들로는 지역변수(Local Variables)와 전역변수(Global Variables), 그리고 동적으로 할당되는 Heap 변수 (Heap Variables)들로 구성되어 있다. Typically, the variables used internally by the executable program are local variables, global variables, and dynamically allocated heap variables (Heap Variables).

지역변수들은 주로 함수 내에서만 국소적으로 사용되는 스택변수들로 이루어져 있으며, 분석대상 물성치를 계산하기 위한 중간 매개체로서의 역할만 수행하는 변수로 사용되며, 타 계통과의 연계할 가치가 없는 변수들이다. The local variables consist mainly of stack variables that are used locally only in the function. They are used as variables that perform the role only as an intermediary medium for calculating the property to be analyzed, and are variables that are not worth connecting with other systems.

실행 프로그램에서 프로그램 수명 동안 계속 살아남아 있는 변수들로는 전역변수(혹은 Heap 변수)들이며, 분석 프로그램의 실행을 위해 필요한 구조물의 기하학적 정보, 구성 구조물들의 물성치, 경계 조건들로 제공되어야 하는 경계 물성치 등이 모두 이들 전역변수(혹은 Heap 변수)의 메모리 공간에 저장되는 것이다.The parameters that are continuously survived in the execution program in the execution program are global variables (or Heap variables), and geometric information of the structures required for the execution of the analysis program, property values of constituent structures, It is stored in the global variable (or Heap variable) memory space.

예를 들어, 하나의 공학적 분석 프로그램으로 특정 계통들만을 모의하며 분석하고자 하는 경우, 그 경계에서의 물성치는 주로 인풋데크(Inputdeck)에 의해 분석 프로그램 실행 이전에 미리 입력을 받는 것이 일반적인 방법이다. For example, if an engineering analysis program is intended to simulate and analyze only specific systems, the property at the boundary is typically input by the input deck prior to execution of the analysis program.

따라서, 사고 진행시간이 진행됨에 따라, 경계조건에서의 물성치의 값들은 일정하거나, 미리 정해진 규칙에 의해 단순 계산되어 입력되어 진다. Therefore, as the incident progression time progresses, the values of the property values at the boundary conditions are constant or simply calculated and input by predetermined rules.

하지만, 원자력발전소와 같이 수많은 계통들로 구성된 종합 플랜트 전체를 통합적으로 분석하고자 할 경우에는, 수많은 계통들을 복수개의 공학적 분석 프로그램들로 분할하여, 각 프로그램들이 시간적으로 동기화되면서, 각자의 경계치에서의 물성치들이 다른 프로그램들에 의해 동적으로 채워져야 한다. However, when an integrated analysis of a comprehensive plant consisting of a number of systems such as a nuclear power plant is to be integrated, a number of systems are divided into a plurality of engineering analysis programs, and each program is synchronized in time, The properties must be dynamically filled by other programs.

이때에는 분석 프로그램들이 계산한 내부 변수들의 값들을, 다른 분석 프로그램이 사용할 수 있도록 값을 전달할 방법이 존재해야 한다. At this time, there must be a way to transfer the values of the internal variables calculated by the analysis programs so that they can be used by other analysis programs.

본 발명에서는 이 전달하는 방식을 다른 프로그램의 독립된 메모리 공간을 직접 읽거나 쓰는 방식을 이용한 것이다.In the present invention, the method of directly reading or writing the independent memory space of another program is used.

그리고, 전역 변수(혹은 Heap 변수)는 공학적 분석 프로그램들(12, 202, 806)의 프로그램 소스를 컴파일(Compiling)시에 컴파일러에 의해 생성되는 메모리맵(Memory-Map) 파일(201,301)에서, 실행 프로그램 가상공간(202)에서의 데이터(혹은 Heap) 섹션(101, 102, 103, 203)하에서의 오프셋(Offset) 번지(204) 형태로 정보가 제공된다.The global variable (or the Heap variable) is stored in the memory-map file 201,301 generated by the compiler when compiling the program source of the engineering analysis programs 12, 202, and 806, Information is provided in the form of an Offset address 204 under the data (or Heap) section 101, 102, 103, 203 in the program virtual space 202.

따라서, 분석 프로그램들(12, 202, 806)이 메모리(RAM)상에 적재(Loading)될 때, 이들 데이터(혹은 Heap) 섹션(101, 102, 103, 203)의 시작 메모리 번지(104, 105)와, 메모리맵 파일에 의해 제공되는 내부 변수들의 오프셋(Offset) 번지(204)를 더한다면, 분석 프로그램들(12, 202, 806)의 가상 메모리 공간(202)에서 해당 변수가 저장되는 실제적인 논리 번지(Logical Address)값을 알 수가 있다.Therefore, when the analysis programs 12, 202, and 806 are loaded on the RAM, the start memory addresses 104 and 105 of these data (or Heap) sections 101, 102, And an offset address 204 of the internal variables provided by the memory map file are added to the virtual memory space 202 of the analysis programs 12, The value of the address (Logical Address) can be known.

pSrc = tagsvrDATA::pProcessInfo->pDataSectionAddr + tagsvrDATA::src_var_info->pOffset;pSrc = tagsvrDATA :: pProcessInfo-> pDataSectionAddr + tagsvrDATA :: src_var_info-> pOffset;

상기한 표 1의 경우에는 논리번지 계산 예제 코드를 나타낸 것이다.In the case of Table 1, the logical address calculation example code is shown.

또한, 도 12 내지 도 13에 도시한 바와 같이, 예제 코드(1108, 1110, 1208, 1210)를 이용하면, 실행컨트롤러노드부(7, 801)와 같은 외부 프로그램에서 분석 프로그램들(12, 202, 806)의 가상메모리 공간(202)에 원격 접근(Remote access on the memory space of the other processes, 22)이 가능하여, 독립된 가상 메모리 공간상의 특정 번지에 원하는 값을 기록하거나, 읽기(6)가 가능하다.As shown in FIGS. 12 to 13, by using the sample codes 1108, 1110, 1208, and 1210, the analysis programs 12, 202, The virtual memory space 202 of the virtual memory space 806 can be remotely accessed on the memory space of the other processes 22 so that a desired value can be written to or read from a specific address on an independent virtual memory space Do.

hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
WriteProcessMemory (hProcess, pRemoteBuf[0], (LPVOID)&param, dwSize, NULL);
(...)
ReadProcessMemory (hProcess, pRemoteBuf[3], (LPVOID)&param, dwSize, NULL);
hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, dwPID);
WriteProcessMemory (hProcess, pRemoteBuf [0], (LPVOID) & param, dwSize, NULL);
(...)
ReadProcessMemory (hProcess, pRemoteBuf [3], (LPVOID) & param, dwSize, NULL);

상기한 표 2의 경우에는 독립된 가상 메모리 공간으로 읽거나 쓰기 함수의 예제 코드를 나타낸 것이다.Table 2 above shows an example code of a read / write function as an independent virtual memory space.

상기와 같은 점을 이용하여, 본 발명에서는 각 분석용 프로그램들(12, 202, 806)이 사용하는 전역(혹은 Heap) 변수들의 오프셋 번지값(204)을 정의하고 있는 메모리맵 파일들(201, 301)을 기반으로, 각 변수들의 여러 정보(변수명, 소속 프로세스 정보, 데이터 섹션에서의 Offset 번지 값 등)들을 포함하고 있는 구조체(tagsvrDATA 구조체, 307)를 B-Tree 방식(311, 1113, 1213)으로 데이터베이스화 (PVDB, 303) 하고, 또한 분석용 프로그램들 자체도 구조체(PROCESS_INFO 구조체, 309) 형태로 단순 적재방식의 데이터베이스화(PIDB, 304)를 구축하여, 각 분석용 프로그램들(12, 202, 806)을 실행하기 위한 경계변수들의 값들을 서로 간에 제공해 줄 수 있도록 하고 있다.In the present invention, the memory map files 201, 202 defining the offset address value 204 of the global (or Heap) variables used by the analysis programs 12, 202, (TagsvrDATA structure 307) including various information of each variable (variable name, belonging process information, offset address value in the data section, etc.) based on the B-Tree method 311, 1113, 1213 (PIDB, 304) in the form of a structure (PROCESS_INFO structure, 309), and the analysis programs (12, 202, and 806, respectively, to be provided to each other.

그리고, 도 3은 공학적 분석 프로그램들(12, 202)의 가상 주소공간(202)과 메모리맵 파일(201, 301)과의 관계 도식이다. 3 is a diagram showing the relationship between the virtual address space 202 of the engineering analysis programs 12 and 202 and the memory map files 201 and 301. [

도 3에 도시한 관계 도식에서 Address(204)가 해당 전역변수의 데이터(혹은 Heap) 섹션(101, 102, 103, 203)에서의 오프셋 번지값(204)을 나타낸다.The address 204 indicates the offset address value 204 in the data (or Heap) section 101, 102, 103, 203 of the corresponding global variable in the relationship diagram shown in Fig.

다음은 도 9를 참조하여 상기한 분석 프로그램들(12, 202, 806)간의 시간동기화 실행 방법을 설명하도록 하겠다.Next, referring to FIG. 9, a description will be made of a method of performing time synchronization between the analysis programs 12, 202, and 806 described above.

발전소 플랜트와 같이 복잡한 계통들로 이루어진 시스템을 종합적으로 분석하기 위해서는, 공학적 분석 프로그램(12, 202, 806)별로 분석할 계통들로 쪼개놓고, 상기 공학적 분석 프로그램들을 시간 동기화를 이뤄가며, 통합적으로 실행해야 한다. In order to comprehensively analyze a system composed of complex systems such as a power plant, it is necessary to divide the system into systems to be analyzed by the engineering analysis programs 12, 202, and 806, to perform time synchronization of the engineering analysis programs, Should be.

이러한 목적을 위해 본 발명에서는 각 공학적 분석 프로그램(601, 701)들의 주요 실행 루프(MEL, 도면부호는 503, 602, 702)부분에 동기화를 위한 이진 실행 코드(603, 604)를 동적으로 주입(605) 시켜놓고, 동기화 신호(21, 805)를 외부 프로그램(예를 들어, 실행컨트롤러노드부(7, 801))에서 발생시키도록 하여, 분석 프로그램들(12, 202) 간의 시간 동기화를 보장하고 있다.For this purpose, in the present invention, binary execution codes 603 and 604 for synchronization are dynamically injected into the main execution loops (MEL, reference numerals 503, 602 and 702) of the respective engineering analysis programs 601 and 701 605) and causes synchronization signals 21, 805 to be generated in an external program (e.g., the execution controller node unit 7, 801) to ensure time synchronization between analysis programs 12, 202 have.

예를 들어, 도 6의 도면부호 501과 같이, 모든 공학적 분석 프로그램들은 소스 코드 구성(혹은 실행구간)에서 프로세스도입부(502), 프로세스주요실행루프부(503, 602, 702), 프로세스결말부(504)와 같이 3개의 부분으로 구성되어 있다.For example, as shown in reference numeral 501 in FIG. 6, all the engineering analysis programs include a process introduction unit 502, a process main execution loop unit 503, 602, 702, a process ending unit 504). ≪ / RTI >

상기 프로세스도입부(502)에서는, 분석하고자 하는 대상 계통 구조물의 기하학적 위치 정보 및 내부 구성 물질에 대한 물성치 등을 인풋덱(InputDeck) 형태로 초기화하며, 또한 경계 계통들에 대한 물성치 값도 초기값으로 입력하는 등 내부 전역 변수들에 대한 초기화 과정을 수행한다.In the process introduction unit 502, the geometric position information of the target system structure to be analyzed and the physical property values of the internal constituent materials are initialized in the form of an input deck, and the physical property values of the boundary systems are also input as initial values And initialization of internal global variables such as

상기 프로세스주요실행루프부(503, 602, 702)는 Process의 Main Execution Loop를 의미하며, 약자로 "MEL"이라 정의하도록 하겠다.The process main execution loop units 503, 602 and 702 denote the main execution loop of the process and abbreviated as "MEL ".

상기 프로세스주요실행루프부에서는, 미리 지정된 분석 종료시간까지 시간 (Problem Time, 804)을 전진(Advancement, 810)시키며, 모든 물리적 공간에 대한 물성치들을 수치 해석적으로 풀어서, 반복적인 계산을 수행하는 주요 실행 루프에 해당한다.In the process main execution loop unit, the time (Advancement) 804 is advanced until a predetermined analysis end time, and the physical property values for all the physical spaces are numerically solved to perform repetitive calculation Corresponds to an execution loop.

상기 프로세스결말부(504)에서는, 분석 프로그램의 실행 결과분석을 위해, 주요 변수들에 대한 결과를 파일에 기록하는 등 실행 결과물 프린팅 작업 등을 주로 수행하는 구간이다.The process ending unit 504 mainly performs printing of an execution result, such as recording the results of major variables in a file, for analyzing the execution result of the analysis program.

상기 3개의 구간 중 Time-Step(803)에 따라 반복적으로 실행하는 분석 프로그램들 각각의 MEL 구간(도 8의 도면부호 705 ~ 706 구간, 도 9의 도면부호 807 ~ 808 구간)이 가장 중요한 구간이며, 만일 이 MEL 구간 실행시 서로의 프로그램들 간에 시간적으로 동기화가 되지 않는다면, 각자 틀린 시간대에서의 현상을 분석실행하는 것이 되어버려, 분석 프로그램들(12, 202, 806)을 통합 실행한다는 것이 아무런 물리적 의미가 없게 되어버린다.Of the three intervals, the MEL interval (the interval 705 to 706 in FIG. 8, the interval 807 to 808 in FIG. 9) of each of the analysis programs repeatedly executed according to the time-step 803 is the most important interval , It is impossible to synchronize the analysis programs 12, 202, and 806 with each other, if the MEL sections are not synchronized with each other in time, It becomes meaningless.

즉, 분석 프로그램들이 같은 시간대의 분석을 하고 있다는 것이 보장이 되어야지만, 분석하는 플랜트의 종합 거동 분석이 의미가 있는 것이다.In other words, it should be ensured that analysis programs are analyzing at the same time, but it is meaningful to analyze the overall behavior of the analyzing plant.

분석 프로그램들(12, 202, 806)간에 시간동기화를 보장하기 위해, 본 발명에서는 각 공학적 분석 프로그램들의 MEL 구간(도 8의 705 ~ 706 구간, 도 9의 807 ~ 808 구간)에 시간동기화 이벤트 객체를 생성(603)하고, 그 이벤트 객체의 설정(Set, 21,805)을 대기(Wait, 604)하는 논리를 삽입(605)한 후, 각 분석 프로그램들(12, 202, 806)의 MEL 구간이 동시에 실행되게 함으로써, 시간 동기화를 보장(도9 참조)하고 있다. In order to ensure time synchronization between the analysis programs 12, 202 and 806, in the present invention, a time synchronization event object (hereinafter referred to as a " time synchronization event object " (603), and inserting (605) a logic to wait (Set, 21,805) the event object (Wait, 604). Then, the MEL sections of the analysis programs (12, 202, 806) Thereby ensuring time synchronization (see FIG. 9).

예를 들어, 실행컨트롤러노드부(7, 801)와 같이 분석 프로그램들과는 독립된 외부의 프로그램에서 이벤트 동기화 신호(21, 805)를 주게 해서, 각 분석 프로그램들(12, 202, 806)이 동시에 MEL 구간 실행한 후, 다시 대기상태(도 8 및 도 9의 ③ 과 도면부호 707 참조)로 있게 만들어, 다음 번의 MEL 구간도 동시에 실행할 수 있게 하여 시간 동기화를 이루었다. For example, an external program independent of the analysis programs, such as the execution controller node unit 7, 801, may provide event synchronization signals 21, 805 so that the analysis programs 12, 202, (See FIGS. 8 and 9 and 3) and 707, so that the next MEL section can be executed at the same time, thereby achieving time synchronization.

도 9에서는 이벤트 객체에 대한 외부 제어 프로그램(예를 들어, 실행컨트롤러노드부(7, 801))이 △t 주기(803)마다 이벤트동기화 객체 설정(Set) 신호(21, 805)를 "PulseEvent()" 함수를 사용하여 제공함으로, 신호 대기(도 8 및 도 9의 ③ 과 도면부호 707 참조) 중인 분석 프로그램들(12, 202, 806)이 각자의 MEL 구간(도면부호 705 ~ 706 구간, 도면부호 807 ~ 808 구간)을 동시에 실행하고 ③ 의 위치로 되돌아가(809) 다시 대기상태에 있게 함으로, 각 분석 프로그램들을 시간동기화하는 방법을 도식화한 것이다.9, an external control program for the event object (for example, the execution controller node unit 7, 801) sets an event synchronization object set signal 21, 805 for every? T period 803 to "PulseEvent ) Function, the analysis programs 12, 202, and 806 in the signal waiting state (refer to FIGS. 8 and 9 and the reference numeral 707) are provided for each MEL section (reference numerals 705 to 706, (809 to 808 intervals) are simultaneously executed and returned to the position of (3) (809) and are again in a standby state, thereby schematically illustrating a method of time synchronization of the analysis programs.

다음은 도 1을 참조하여 본 발명인 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템에 대하여 설명하도록 하겠다.The following description will be made with reference to FIG. 1, which shows a virtual integrated analysis system for analysis codes using a process data section according to the present invention.

상기 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템은,The analytical code virtual integrated drive system using the process data section comprises:

분석용 코드들의 내부 변수들에 대한 정보를 B-TREE 기반으로 구축한 PVDB부(3),A PVDB unit 3 that builds information on internal variables of analysis codes based on B-TREE,

분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체를 단순 적재 방식 기반으로 구축한 PIDB부(4)를 포함하는 DB빌더노드부(2)와,A DB builder node unit 2 including a PIDB unit 4 constructed by building a structure including information of a process name, a handle value, and a dynamic memory start address value of an analysis code process on a simple loading scheme,

지정된 변수의 현재값을 읽어들이며, 특정값을 해당 변수의 현재값으로 기록하는 DB매니저부(5)를 포함하는 데이터컨트롤러노드부(1)와;A data manager node unit (1) including a DB manager unit (5) for reading a current value of a designated variable and recording a specific value as a current value of the variable;

분석용 프로그램들의 통합 구동을 위한 초기화 작업을 수행하는 프로세스초기화노드부(8)와,A process initializing node unit 8 for performing an initializing operation for integrated driving of analysis programs,

분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 경계조건매니저노드부(9)와,A boundary condition manager node unit 9 for filling the boundary condition values necessary for the analysis programs to operate,

분석용 프로그램들의 시간 동기화를 수행하여 구동될 수 있도록 하는 실시간동기화노드부(10)를 포함하는 실행컨트롤러노드부(7)와;And a real-time synchronization node unit (10) for performing time synchronization of programs for analysis and being able to be driven;

상기 실행컨트롤러노드부(7)에서 시간 동기화 설정 신호가 발생하면, 분석 프로그램들의 대기 상태를 해제시켜 각 분석 프로그램들의 각 MEL 구간을 동시에 실행하여 시간 동기화를 실행하는 엔지니어링코드실행노드부(11)와;An engineering code execution node unit 11 for releasing the waiting state of analysis programs and simultaneously executing each MEL section of each analysis program to execute time synchronization when a time synchronization setting signal is generated in the execution controller node unit 7; ;

상기 실행컨트롤러노드부(7)의 시작, 실행 및 멈춤을 수행하는 실행UI부(23)와,An execution UI unit 23 for starting, executing, and stopping the execution controller node unit 7;

상기 실행컨트롤러노드부(7)를 통해 공학적 분석용 프로그램들이 사용하는 내부 전역 변수의 값에 대한 취득 및 설정을 담당하는 데이터UI부(24)를 포함하는 유저인터페이스노드부(13);를 포함하여 구성되게 된다.And a user interface node unit (13) including a data UI unit (24) for obtaining and setting values of internal global variables used by engineering analysis programs through the execution controller node unit (7) .

상기 데이터컨트롤러노드부(1)는 DB빌더노드부(2, 302, 1112, 1212)와 DB매니저부(5)를 포함하여 구성되게 된다.The data controller node unit 1 includes a DB builder node unit 2, 302, 1112, and 1212 and a DB manager unit 5.

이때, 상기 DB빌더노드부(2, 302, 1112, 1212)는, At this time, the DB builder node unit (2, 302, 1112, 1212)

분석용 코드들의 내부 변수들에 대한 정보(307)를 B-TREE 기반(311,1113,1213)으로 구축한 PVDB부(3, 303)와,A PVDB unit 3, 303 that builds information 307 on internal variables of analysis codes based on B-TREE bases 311, 1113, 1213,

분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체(309)를 단순 적재 방식 기반으로 구축한 PIDB부(4, 304)를 포함하여 구성되게 된다.And a PIDB unit 4, 304 in which a structure 309 including the process name of the analysis code process, the handle value, and the dynamic memory start address value of the data section is constructed on the basis of a simple stacking method.

상기 PVDB는 Process Variable Data Base의 약자이며, 상기 PIDB는 Process Information Data Base 의 약자이다.The PVDB is an abbreviation of Process Variable Data Base, and the PIDB is an abbreviation of Process Information Data Base.

상기 PVDB부(3, 303)는 분석 프로그램들(12, 202, 806)이 내부 전역(혹은 Heap) 변수들이 해당 분석프로그램의 데이터 섹션(101, 102, 103, 203)에서의 메모리 옵셋(Offset)값 정보(204)를 나타내는 통합실행 대상 각 분석 프로그램들의 메모리맵 파일(201,301)들을 바탕으로, 개별 전역변수에 대한 (변수명, Offset 값, 소속 분석프로그램 핸들값 등) 정보들로 구성된 tagsvrDATA (307)객체들을 B-Tree(311, 1113, 1213)를 기반으로 데이터베이스화한 것을 의미한다.The PVDB unit 3 or 303 stores the memory offset values of the analysis programs 12, 202 and 806 in the data sections 101, 102, 103 and 203 of the analysis program, (Variable name, offset value, belonging analysis program handle value, etc.) of individual global variables based on the memory map files 201 and 301 of the respective analysis execution target analysis programs representing the value information 204. The tagsvrDATA 307 ) Objects into a database based on the B-Tree (311, 1113, 1213).

상기 B-Tree를 구성하는 각 구조체에 대한 설명은 표 3 내지 표 7에서 나타내고 있으며, 서로의 연관관계는 도 4에서 도식화하였다.The description of each structure constituting the B-Tree is shown in Tables 3 to 7, and the relationship among the structures is illustrated in FIG.

필드명Field name 의미meaning src_var_infosrc_var_info 분석 프로그램의 내부 전역변수에 대한 개별 정보를 저장
(src_var_info 객체의 각 필드 설명은 표 4 참조)
Saving individual information about the internal global variables of the analysis program
(see Table 4 for a description of each field in the src_var_info object)
pProcessInfopProcessInfo 상기 src_var_info 객체가 나타내는 전역변수가 사용되는 원본 분석프로그램에 대한 정보를 저장(PROCESS_INFO구조체의 각 필드 설명은 표 8 참조)The global variable represented by the src_var_info object stores information about the original analysis program used (see Table 8 for a description of each field in the PROCESS_INFO structure) nTargetVarInfonTargetVarInfo 해당 전역변수가 다른 분석 프로그램의 입력값으로 사용될 경우, 입력값으로 제공되어야 할 목적지 변수 객수If the global variable is used as an input value of another analysis program, the destination variable number to be provided as an input value target_var_infotarget_var_info 해당 전역변수의 값을 입력값으로 받아야 하는 변수들의 객체 리스트(예 : 도 14에서 src_var2라는 변수가 Engineering_Code_1 분석코드에서 원래 사용되는 변수라고 하고, 이 src_var2 변수의 값이 통합 코드 실행시 Engineering_Code_2 분석코드의 tgt_var3 및 tgt_var4 변수 및 Engineering_Code_3 분석코드의 tgt_var5, tgt_var6에 경계조건 값으로 제공되어야 한다고 할 경우, nTargetVarInfo의 값은 4가 되고, target_var_info필드는 tgt_var3, tgt_var4, tgt_var5, tgt_var6 변수들에 대한 TARGET_VAR_INFO 구조체 객체를 지시하는 값으로 지정된다.)In the example of FIG. 14, a variable called src_var2 is a variable originally used in the analysis code of Engineering_Code_1, and a value of the variable src_var2 is a value of the variable of the analysis code of Engineering_Code_2 the value of nTargetVarInfo is set to 4, and the target_var_info field indicates the TARGET_VAR_INFO structure object for the variables tgt_var3, tgt_var4, tgt_var5, and tgt_var6, assuming that the tgt_var3 and tgt_var4 variables and Engineering_Code_3 analysis code should be provided as boundary condition values in tgt_var5 and tgt_var6. The value is specified as a value.

상기 표 3은 tagsvrDATA 구조체(307) 필드설명이다.Table 3 above is a field description of tagsvrDATA structure (307).

필드명Field name 의미meaning namename 전역변수명Global variable name DescriptionDescription 전역변수에 대한 설명 문자열Description string for global variable UnitsUnits 번역변수가 가지는 공학적 단위 문자열 (예: MPa, kg/s 등)Engineering unit strings (eg, MPa, kg / s, etc.) TypeType 전역변수의 변수선언 타입 (예: char, bool, short, int, float, double 등)Variable declaration type of global variable (eg char, bool, short, int, float, double, etc.) nDimsnDims 전역변수에 선언된 차수 (Dimension)Dimension declared in global variable DimsDims 선언된 차수의 각 차의 선언된 한계 (예 : aa[2][3]이면 1차는 2, 2차는 3임.)If the declared limit of each difference in the declared order (eg aa [2] [3], the first is 2, the second is 3). pOffsetpOffset 메모리맵 파일에 선언된 각 전역변수의 오프셋 번지 값The offset address value of each global variable declared in the memory map file

상기 표 4는 SRC_VAR_INFO 구조체(308) 필드설명이다.Table 4 above shows the SRC_VAR_INFO structure 308 field description.

필드명Field name 의미meaning TargetVarNameTargetVarName src_var_info 객체(313)로부터 값을 입력받아야 하는 변수명a variable name to receive a value from the src_var_info object 313 pDatapData TargetVarName 변수를 정보로 하고있는 tagsvrDATA 객체 번지값The tagvrDATA object address value with the TargetVarName variable. pAddrpAddr TargetVarName 변수가 할당된 분석프로그램내 가상 주소공간내 메모리 번지
만일 TargetVarName이 tgt_var[2][3]처럼 차수가 있는 변수명일 경우, pData는 tgt_var 변수를 나타내는 tagsvrDATA 객체번지이지만, 실제로 값이 복사되어야 하는 공간은 tgt_var 번지가 아닌 tgt_var[2][3]이 할당된 번지를 저장해야 하므로, pAddr에 (tgtvar 번지값이 아닌) tgt_var[2][3]의 번지값을 나타내도록 하였음.
TargetVarName The memory address in the virtual address space in the analysis program to which the variable is assigned.
If TargetVarName is a variable name with order like tgt_var [2] [3], pData is the tagvrDATA object address that represents tgt_var variable, but tgt_var [2] [3] is not allocated to tgt_var address The address of tgt_var [2] [3] (not the address of tgtvar) should be indicated in pAddr.

상기 표 5는 TARGET_VAR_INFO 구조체(310) 필드설명이다.Table 5 above is a description of the TARGET_VAR_INFO structure 310 field.

[NODE 구조체 설명]
- B-Tree 기반으로 내부 전역변수 객체를 데이터베이스화할 경우, B-Tree 구현 알고리즘에서 내부적으로 사용되는
구조체로써, 2개의 쌍으로 구성된 ENTRY 구조체의 묶음을 나타내는 구조체임.
[NODE structure description]
- If the internal global variable object is database based on B-tree, it is used internally by B-tree implementation algorithm.
A structure that represents a bundle of ENTRY structures consisting of two pairs.

상기 표 6은 NODE 구조체(305) 설명이다.Table 6 above describes the NODE structure 305.

[ENTRY 구조체 설명]
- 상기 NODE 구조체의 구성으로 되는 엔트리 객체를 의미하며, 분석코드에서 사용되는 각 변수들마다 고유의 ENTRY 구조체가 1개씩 할당된다. 특히, 필드로 구성되는 data 필드값이 내부 변수와 1:1로 대응되는 객체를 나타냄.
[ENTRY structure description]
- means an entry object constituting the NODE structure, and one unique ENTRY structure is allocated to each variable used in the analysis code. In particular, a data field value composed of fields represents an object corresponding to an internal variable 1: 1.

상기 표 7은 ENTRY 구조체(306) 설명이다.Table 7 above describes the ENTRY structure 306.

또한, 상기 PIDB부(4, 304)는 분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체(309)를 단순 적재 방식 기반으로 구축하게 된다.In addition, the PIDB unit (4, 304) constructs a structure (309) based on a simple loading method, including a process name, a handle value of the analysis code process, and information on a dynamic memory start address value of a data section.

즉, 실행될 공학적 분석프로그램 목록(1302)을 취득하여, 분석 프로그램과 1:1 대응되는 PROCESS_INFO 객체(309)를 순서대로 데이터베이스 메모리에 저장하는 단순 적재 방식(312)의 데이터베이스를 구축한다. That is, a database of a simple loading method 312 for acquiring an engineering analysis program list 1302 to be executed and storing the PROCESS_INFO object 309 corresponding to the analysis program in order in the database memory is constructed.

이때, 이 데이터베이스를 Process Information Data Base(PIDB)(4, 304)라고 칭하고, 각 공학적 분석 프로그램에 대한 아래 정보(PROCESS_INFO 객체(309) 정보)들을 저장하고 있다.At this time, this database is called Process Information Data Base (PIDB) (4, 304) and stores the following information (PROCESS_INFO object 309 information) for each engineering analysis program.

필드명Field name 의미meaning ProcessNameProcessName 실행되어야 할 분석코드 문자열Analysis code string to be executed nHandlenHandle ProcessName 코드가 실제 실행되었을 경우, 이 프로세스 핸들값If the ProcessName code is actually executed, this process handle value pDataSectionAddrpDataSectionAddr ProcessName 코드의 가상 메모리 공간에서의 데이터 섹션 시작 번지값ProcessName The start address of the data section in the code's virtual memory space.

상기 표 8은 PROCESS_INFO 구조체(309) 필드설명이다.Table 8 is a description of the PROCESS_INFO structure 309 field.

도 14에서, 실행되어야 할 분석코드명이 Engineering_Code_1, Engineering_Code_2 및 Engineering_Code_N 임을 알 수 있다. In FIG. 14, it can be seen that the analysis code names to be executed are Engineering_Code_1, Engineering_Code_2 and Engineering_Code_N.

즉, 이들 분석코드명이 ProcessName(309)에 기록되는 것이고, 이들 3개의 실행파일들이 실행되었을 경우, 그들의 프로세스 핸들값이 nHandle(309)에 기록되며, 이들 3개의 데이터 섹션 시작 번지값을 pDataSectionAddr(309)에 저장된다.That is, these analysis code names are written in ProcessName 309, and when these three executable files are executed, their process handle values are written to nHandle 309, and these three data section start address values are written to pDataSectionAddr 309 ).

또한, 상기 DB매니저부(5, 1106, 1206)는 지정된 변수의 현재값을 읽어들이며, 특정값을 해당 변수의 현재값으로 기록하는 기능을 수행하게 된다.(도면부호 1105, 1107, 1205, 1207 참조)Also, the DB manager 5, 1106, and 1206 reads the current value of the designated variable and records the specified value as the current value of the corresponding variable (refer to 1105, 1107, 1205, 1207 Reference)

즉, DB매니저부(5, 1106, 1206)는 지정된 변수의 현재값을 읽어들이는 기능(도 12 참조)과, 특정 값을 해당 변수의 현재 값으로 기록하는 기능(도 13 참조)으로 구성된다. That is, the DB manager unit 5, 1106, and 1206 includes a function of reading the current value of the specified variable (see FIG. 12) and a function of recording the specified value as the current value of the variable (see FIG. 13) .

먼저, 해당 변수의 현재 값을 읽어들이기 위해서는, 변수들에 대한 데이터베이스인 PVDB부(3,303)에서 해당 변수에 대한 tagsvrDATA 객체(307)를 취득하여, 그 변수를 소유하고 있는 분석프로그램의 주소공간(pProcessInfo)(314)내에서 데이터 섹션 메모리 주소(104,105) + 데이터섹션내 옵셋값(204)을 더한 주소값에서 현재값을 가져와야 한다.First, in order to read the current value of the variable, the tagsvrDATA object 307 for the variable is obtained from the PVDB unit 3,303 of the database for the variables, and the address space of the analysis program owning the variable (pProcessInfo ) 314 plus the data section memory address (104, 105) plus the offset value (204) in the data section.

tagsvrDATA *pData = PVDB::search(변수명)
pDest = pData->src_var_info.pProcessInfo + pData->src_var_info.pOffset;
ReadProcessMemory(hi.hProcess, pDest, &Value, nSize, ...);
tagsvrDATA * pData = PVDB :: search (variable name)
pDest = pData-> src_var_info.pProcessInfo + pData->src_var_info.pOffset;
ReadProcessMemory (hi.hProcess, pDest, & Value, nSize, ...);

상기 표 9는 다른 주소공간에 존재하는 변수값 읽어오기 예시코드이다.Table 9 is an example code for reading variable values existing in different address spaces.

특히, 취득 명령을 수행하는 실행컨트롤러노드부(7,801)와는 별개의 주소공간을 가지는 분석 프로그램 주소공간(202)에서 값을 취득해야 하므로, 일반적인 메모리 복사함수인 "memcpy()" 함수를 사용할 수는 없고, 도 12의 코드에서 제공하고 있는 "ReadProcessMemory()" 함수(1110)를 사용해야만 한다. In particular, since a value must be obtained in the analysis program address space 202 having an address space that is separate from the execution controller node unit 7,801 that executes the acquisition instruction, it is possible to use a general memory copy function "memcpy () There is no need to use the "ReadProcessMemory ()" function 1110 provided by the code of FIG.

도 12에는 지정된 변수에 대한 현재값을 취득하기 위해, "GET" 버튼을 눌렀을 경우, 해당 분석 프로그램의 주소 공간(202)에서 변수값을 취득해오고 있는 것을 도식화한 것으로, 구현 코드의 예시(1108, 1110)도 함께 제공되고 있다.FIG. 12 is a diagram illustrating that variable values are acquired in the address space 202 of the analysis program when the "GET" button is pressed in order to obtain the current value of the designated variable. An example of the implementation code 1108 , 1110) are also provided.

다음으로, 해당 변수의 메모리 공간에 지정한 값을 기록하기 위해서는, 상기와 마찬가지로 PVDB부(3,303)에서 취득된 tagsvrDATA 객체(307)를 근간으로, 분석 프로그램의 주소공간(pProcessInfo, 314)속에서 지정된 값으로 설정해야 한다.Next, in order to record the value specified in the memory space of the variable, the tagvrDATA object 307 acquired in the PVDB unit 3 303 is used to write the value specified in the address space (pProcessInfo 314) .

tagsvrDATA *pData = PVDB::search(변수명)
pDest = pData->src_var_info.pProcessInfo + pData->src_var_info.pOffset;
WriteProcessMemory(hi.hProcess, pDest, &Value, nSize, ...);
tagsvrDATA * pData = PVDB :: search (variable name)
pDest = pData-> src_var_info.pProcessInfo + pData->src_var_info.pOffset;
WriteProcessMemory (hi.hProcess, pDest, & Value, nSize, ...);

상기 표 10은 다른 주소공간에 존재하는 변수값 기록하기 예시코드이다.Table 10 is an example code for recording variable values existing in different address spaces.

이 경우에도 일반적인 메모리 복사함수인 "memcpy()" 함수를 사용할 수는 없고, 그 변수를 소유하고 있는 분석 프로그램의 프로세스 핸들값을 사용한 "WriteProcessMemory()" 함수를 사용해야만 한다.In this case, you can not use the "memcpy ()" function, which is a normal memory copy function, and you must use the "WriteProcessMemory ()" function that uses the process handle value of the analyzer that owns the variable.

도 13에는 지정된 변수에 특정 값을 기록하기 위해, "SET" 버튼을 눌렀을 경우, 해당 변수가 속한 분석 프로세스의 주소 공간(202)의 데이터 섹션 내 주소공간에, 미리 설정된 값을 기록하는 흐름을 도식화한 것으로, 구현 코드의 예시(1208, 1210)도 함께 제공되고 있다.13 illustrates a flow of recording a preset value in the address space in the data section of the address space 202 of the analysis process to which the variable belongs when the "SET" button is pressed in order to record a specific value in the designated variable Examples of implementations 1208 and 1210 are also provided.

다음은 실행컨트롤러노드부(7)에 대하여 구체적으로 설명하도록 하겠다.Next, the execution controller node unit 7 will be described in detail.

상기 실행컨트롤러노드부(7, 801)는,The execution controller node unit (7, 801)

분석용 프로그램들의 통합 구동을 위한 초기화 작업을 수행하는 프로세스초기화노드부(8, 403)와,A process initialization node unit (8, 403) for performing an initialization operation for integrated operation of analysis programs,

분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 경계조건매니저노드부(9,904,1004)와,A boundary condition manager node unit (9, 904, 1004) for filling boundary condition values necessary for the analysis programs to operate,

분석용 프로그램들의 시간 동기화를 수행하여 구동될 수 있도록 하는 실시간동기화노드부(10, 914)를 포함하게 된다.And a real-time synchronization node unit (10, 914) for performing time synchronization of analysis programs.

즉, 분석용 프로그램들(12, 202, 806)의 통합 구동을 위한 각종 초기화 작업을 수행하는 프로세스초기화노드부(Process Initializer node)와, 각 분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 경계조건매니저노드부(Boundary Condition Manager node)와, 각 분석용 프로그램들을 시간동기화가 이루어지며 구동될 수 있도록 해주는 실시간동기화노드부(Real-Time Synchronizer node)로 구성되게 된다.That is, a process initializer node for performing various initializations for the integrated operation of the analysis programs 12, 202, and 806 and a process initializer node for filling the boundary condition values necessary for the respective analysis programs to run A Boundary Condition Manager node, and a Real-Time Synchronizer node that enables each analysis program to be time-synchronized and driven.

따라서, PVDB부(3), PIDB부(4) 구축, 분석 프로그램들(12, 202, 806)의 시간동기화 이진코드 삽입(도 7 내지 도 8 참조) 및 경계조건 값들을 채워서 통합 실행(도 9 참조)하게 되는 핵심적인 역할을 수행한다.9 to 9) of the PVDB unit 3, the PIDB unit 4 construction, the analysis programs 12, 202 and 806, and the boundary condition values (see FIG. 9 (See below).

즉, 실행컨트롤러노드부(7, 801)는 공학적 분석 프로그램들(12, 202, 806)과는 독립적으로 떨어진 프로세스이며, 실행컨트롤러노드부에서 공학적 분석 프로그램들이 소유하고 있는 각 전역변수들의 값을 변경하기 위해서는, 별도의 주소공간(202, 1114, 1214)에 대한 특수 메모리복사함수들(예: Windows의 경우 ReadProcessMemory(1110) / WriteProcessMemory(912, 1210) 등)를 사용해야만 가능하다.That is, the execution controller node unit 7, 801 is a process that is independent of the engineering analysis programs 12, 202, 806. In the execution controller node unit, the value of each global variable owned by the engineering analysis programs is changed It is only necessary to use special memory copy functions (e.g., ReadProcessMemory 1110 / WriteProcessMemory (912, 1210) for Windows) for the separate address spaces 202, 1114 and 1214.

상기 프로세스초기화노드부(8, 403)는 분석용 프로그램들의 통합 구동을 위한 초기화 작업을 수행하는데, 아래와 같은 순서대로 기능을 수행한다.(도 5 참조)The process initialization node unit (8, 403) performs an initialization operation for integrated operation of analysis programs, and performs functions in the following order (refer to FIG. 5).

스텝 1, process.ini 파일(도 14)에서 나열된 각 분석 프로그램(1302)을 CREATE_SUSPENDED 모드로 실행(코드예시 : 도면부호 405 참조, 도 5의 도면부호 404 참조 )한다. Step 1, execute each analysis program 1302 listed in the process.ini file (FIG. 14) in the CREATE_SUSPENDED mode (see code example 405, see 404 in FIG. 5).

도 14에서 나열된 분석 프로그램들로는 Engineering_Code_1, Engineering_Code_2 및 Engineering_Code_N 이다.The analysis programs listed in Fig. 14 are Engineering_Code_1, Engineering_Code_2, and Engineering_Code_N.

스텝 2, CREATE_SUSPENDED 상태로 정지해 있는 분석 프로그램들(12, 202, 806)의 MEL 구간(705 ~ 706 구간, 807 ~ 808 구간)에 시간 동기화를 위한 코드(603, 604)를 동적으로 삽입(도 8 참조)시켜, 각 공학적 분석 프로그램들을 시간동기화 기능이 탑재된 실행(도 9 참조)이 가능하도록 한다. Step 2: Dynamically insert codes 603 and 604 for time synchronization into the MEL section (sections 705 to 706, sections 807 to 808) of the analysis programs 12, 202 and 806 suspended in the CREATE_SUSPENDED state 8) so that each engineering analysis program can be executed with the time synchronization function (see FIG. 9).

즉, 각 공학적 분석 프로그램들(12, 202, 806)의 원본 MEL 구간( 705 ~ 706 구간, 807 ~ 808 구간)에는 시간동기화 기능이 없지만, 프로세스초기화노드부(8, 403)에서 강제적으로 각 분석 프로그램들의 MEL 구간에 시간동기화 부분을 삽입(605)하여, 시간동기화 실행(도 9 참조)을 가능하도록 하였고, 실행컨트롤러노드부(7, 801)의 실시간동기화노드부(10, 914)에서 시간동기화 실행 명령(21, 805)을 각 공학적 분석 프로그램들에게 주게 된다면(예시코드 : 도면부호 916 참조), 모든 분석 프로그램들(12, 202, 806)이 동시에 각자의 MEL 구간을 실행하게 되는 원리를 이용한 것이다. In other words, although there is no time synchronization function in the original MEL section (sections 705 to 706 and sections 807 to 808) of the respective engineering analysis programs 12, 202 and 806, the process initialization node section 8, 403 forcibly analyzes each analysis The time synchronization section is inserted in the MEL section of the programs so as to enable the time synchronization execution (see FIG. 9), and the time synchronization is performed in the real time synchronization node sections 10 and 914 of the execution controller node section 7 and 801 If the analysis instructions (21, 805) are given to the respective engineering analysis programs (see example code: 916), then all analytical programs 12, 202, 806 will execute their MEL sections simultaneously will be.

도 9에서는 이 원리를 도식화한 것이다. 그리고, 도 5의 도면부호 406을 참조하면 된다.In Fig. 9, this principle is illustrated. Reference numeral 406 in FIG. 5 may be referred to.

스텝 3, 각 공학적 분석 프로그램들(12, 202, 806)의 내부 전역변수들의 메모리맵 파일(201, 301)에서 제공되는 오프셋(Offset) 정보(204)를 바탕으로, 전역변수들과 1:1 대응되는 tagsvrDATA 객체(307)들을, B-Tree 기반(311, 1113, 1213)으로 데이터베이스화(PVDB)(3,303)한다. Step 3: Based on the offset information 204 provided in the memory map files 201 and 301 of the internal global variables of the respective engineering analysis programs 12, 202 and 806, (PVB) (3, 303) the corresponding tagsvrDATA objects 307 on the B-Tree basis 311, 1113, and 1213.

이때 tagsvrDATA 객체에 아래 필드값들이 기록된다.(도면부호 408 참조)At this time, the following field values are recorded in the tagsvrDATA object (see reference numeral 408).

- data::src_var_info (이들 각 필드 설명은 상기 표.4 참조)        - data :: src_var_info (see Table 4 for a description of each of these fields)

- data::pProcessInfo 번지값        - data :: pProcessInfo address value

- data::nTargetVarInfo        - data :: nTargetVarInfo

- data::target_var_info (이들 각 필드 설명은 상기 표.5 참조) - data :: target_var_info (see Table 5 for a description of each of these fields)

그리고, 도 5의 도면부호 407을 참조하면 된다.Reference numeral 407 in FIG. 5 may be referred to.

스텝 4, 상기 process.ini 파일(도 14 참조)에서 제공되고 있는 실행될 공학적 분석 프로그램 목록정보(1302)를 이용(하나의 분석 프로그램과 1:1 대응되는)하여 PROCESS_INFO 객체(309)를 process.ini 파일에 나열된 순서대로 데이터베이스 메모리에 저장하는 단순 적재 방식(312)으로 데이터베이스(PIDB)(4, 304)화 한다.(도면부호 410에서 값이 채워지는 필드 제시)Step 4, using the PROCESS_INFO object 309 to process.ini (1: 1 correspondence with one analysis program) by using the engineering analysis program list information 1302 to be executed provided in the process.ini file (see FIG. 14) (PIDB) (4, 304) with a simple loading method (312) in which they are stored in the database memory in the order listed in the file.

그리고, 도 5의 도면부호 409를 참조하면 된다.Reference numeral 409 in FIG. 5 may be referred to.

스텝 5, 상기에서 초기화 작업을 위해 CREATE_SUSPENDED되었던 공학적 분석프로그램들(12, 202, 806)을 다시 재개(Resume) 시켜, 도 9의 ③ 번 단계까지 실행하여, 이벤트 동기화 신호를 기다리는 상태로 만든다.(코드예시 : 도면부호 412 참조)In step 5, the engine analysis programs 12, 202, and 806 that were CREATE_SUSPENDED for the initialization operation are resumed to execute step 3 in FIG. 9 to wait for the event synchronization signal. Code example: see reference numeral 412)

그리고, 도 5의 도면부호 411을 참조하면 된다.Reference numeral 411 in FIG. 5 may be referred to.

예를 들어, 실행컨트롤러노드부(7, 801)에서 각 공학적 분석프로그램들(12, 202, 806)의 메인 쓰레드(Main Thread)들에 대해 개별적으로 ResumeThread(pi.hThread) 명령어를 실행하여, 각 공학적 분석 프로그램들(12, 202, 806)이 재개(Resume) 실행할 수 있도록 한다. For example, the ResumeThread (pi.hThread) command is executed separately for the main threads of each engineering analysis program 12, 202, 806 in the execution controller node unit 7, 801, Allowing the engineering analysis programs 12, 202, 806 to resume execution.

즉, 공학적 분석 프로그램들이 스스로 재개(Resume) 실행하는 것이 아니라, 실행컨트롤러노드부(7, 801)에서 외부에서, 재개(Resume)하도록 명령을 내리는 것이다.That is, the engineering analysis programs do not resume themselves, but issue an instruction to resume from the outside at the execution controller node unit 7, 801.

만일, 실행컨트롤러노드부(7, 801)에서 이벤트 동기화 신호를 설정(Set)(21, 805)하게 되면, 각 분석프로그램들은 각자의 MEL 구간(705 ~ 706 구간, 807 ~ 808 구간)에서, 도 9의 ③ 상태(807)에서 대기하던 상태에서 ④ 상태(808)까지 실행하고 다시 ③ 상태(807)로 이동하여, 다음 대기상태로 놓이게 된다. If the event synchronization signal is set (21, 805) in the execution controller node unit 7, 801, the analysis programs are stored in the MEL section (705 to 706 section, 807 to 808 section) (3) In the state (807) of FIG. 9, the state is the state from the waiting state to the state (808), the state is moved to the state (803) again and is placed in the next standby state.

즉, 실행컨트롤러노드부(7, 801)에서 한 번의 이벤트 동기화 객체 신호를 설정(Set)함으로, 같은 이벤트 동기화 객체를 가지고 대기하고 있는 모든 분석 프로그램들(12, 202, 806)이 전체적으로 동시에 실행을 하게 하고, 같은 시간 Interval만큼만 Problem Time(804)을 전진(Advancement, 810)하게 하여, 각 분석 프로그램들(12, 202, 806)간의 시간동기화를 이루게 하고 있다.That is, by setting a single event synchronization object signal in the execution controller node unit 7, 801, all the analysis programs 12, 202, 806 waiting on the same event synchronization object can be executed simultaneously And advances the Problem Time 804 only by the same time interval to advance the time synchronization between the analysis programs 12, 202, and 806.

여기서, CREATE_SUSPENDED로 하여 프로세스를 대기상태로 만든 이유는, 각 분석 프로그램들이 각 MEL구간들을 실행하기 이전에, MEL 부분(503, 602, 702)에 시간 동기화를 위한 코드를 동적으로 삽입(605)하여 각 분석 프로그램들(12, 202, 806)이 시간동기화를 이룰 수 있도록 하고, 메모리맵 파일(201, 301)들을 바탕으로 B-Tree(311, 1113, 1213) 기반의 PVDB(3, 303)을 구축하고, PVDB(3, 303)내 각 변수정보를 저장하고 있는 tagsvrDATA 구조체(307)의 각 필드 값을 미리 채우기 위해서다. Here, the reason why the process is put into the standby state with CREATE_SUSPENDED is that the analytical programs dynamically insert (605) a code for time synchronization in the MEL parts 503, 602, and 702 before executing the respective MEL sections The PVDBs 3 and 303 based on the B-Tree 311, 1113, and 1213 are managed based on the memory map files 201 and 301 so that the analysis programs 12, 202 and 806 can achieve time synchronization, And prepares each field value of the tagsvrDATA structure 307 which stores each variable information in the PVDB 3 and 303.

만일, CREATE_SUSPENDED로 하지 않고, 일반적인 옵션으로 프로세스를 기동시킨다면, MEL 부분에 대한 동적 시간동기화 코드 삽입을 할 수가 없어, 시간 동기화가 되지 않는 상태로 각 분석 프로그램들이 실행되어 버리기 때문에, 그것을 방지하고자 CREATE_SUSPENDED 상태로 프로그램을 실행하는 것이다.If you do not set CREATE_SUSPENDED and start the process with a normal option, you can not insert dynamic time synchronization code for the MEL part, and because each analysis program is executed without time synchronization, the CREATE_SUSPENDED state To run the program.

또한, 상기 경계조건매니저노드부(9,904,1004)는 분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 기능을 수행하게 된다.In addition, the boundary condition manager node unit (9, 904, 1004) performs a function of filling boundary condition values necessary for the analysis programs to operate.

각 공학적 분석 프로그램들(806)이 그 고유의 실행을 위해서는 각자가 원하는 경계조건 영역들의 물성치 값들을 알고있어야만, 올바르게 실행을 할 수 있다.Each engineering analysis program 806 must know the property values of the desired boundary condition regions in order to perform its own execution.

더욱이 Off-line으로 단독으로 실행될 때에는 실행 초기에 Inputdeck 등의 입력으로 한번 만 경계 조건값들을 입력받으면 되지만, 본 발명과 같이 복수 개의 분석 프로그램들이 서로에게 각자 경계조건 값들을 제공하는 경우에는, 매 Time-Step(803)별로, 각 분석 프로그램들(806)이 계산했던 결과들을 다른 분석 프로그램의 경계조건 값으로 제공이 되어야만, 올바른 방식의 통합적인 분석이 가능할 것이다. Furthermore, when executed independently in the off-line, the boundary condition values are input only once with the input of Inputdeck at the beginning of execution. However, when a plurality of analysis programs provide boundary condition values to each other as in the present invention, The integrated analysis of the correct method will be possible only if the results calculated by the respective analysis programs 806 are provided as the boundary condition values of the other analysis programs for each step 803.

이러한 목적을 위해, 경계조건매니저노드부(9, 904, 1004)에서는 매 Time-Step 별(803)로, 각 분석 프로그램들(806)이 계산한 내부 전역변수들의 값을, 원하는 Target 변수들(310, 도 14의 도면 부호 1303, 1304)의 값들로 복사해주는 작업을 수행하며, 아래와 같은 순서대로 실행을 한다.For this purpose, the boundary condition manager node unit 9, 904, and 1004 divides the values of the internal global variables calculated by the analysis programs 806 by each time-step basis 803 into desired target variables ( 310, 1303 and 1304 in FIG. 14), and executes the operation in the following order.

스텝 1, 모든 분석 프로그램(806)이 Wait상태인지를 점검하는 Ready-to-Run 상태 체크를 수행한다.(도 10의 도면 부호 906) Step 1: Performs a Ready-to-Run status check to check whether all the analysis programs 806 are in the Wait state (reference numeral 906 in FIG. 10)

만일, 분석 프로그램들(806)중 하나라도 MEL 구간( 도 9의 807 ~ 808 구간)실행이 완료되지 않아, Wait 상태가 되지 못한 것이 있다면, Read-to-Run에 대한 주기적 체크 시간까지 기다리게 된다.(도 10의 도면부호 907 및 905)If any one of the analysis programs 806 fails to be in the Wait state because the execution of the MEL section (intervals 807 to 808 in FIG. 9) is not completed, the system waits until the periodic check time for the read-to-run. (Reference numerals 907 and 905 in Fig. 10)

즉, 일부 분석 프로그램이 MEL 구간(도 9의 807 ~ 808 구간)을 수행 중 수행시간이 오래 걸려, 실행컨트롤러노드부(7, 801)에서 보내는 다음 Ready-to-Run 체크시간(802)까지 수행 완료되지 못한 경우에는, 실행컨트롤러노드부(7, 801)에서는 동기화 개체 설정(Set) 신호(21, 805)를 보내어, 이미 대기상태에 있는 다른 분석 프로그램들(806)을 실행하게 해서는 절대 안 된다. That is, some analysis programs take a long execution time during execution of the MEL section (intervals 807 to 808 of FIG. 9) and are executed until the next ready-to-run check time 802 sent from the execution controller node unit 7, 801 If it is not completed, the execution controller node unit 7, 801 must not send a synchronization object setting (Set) signal 21, 805 to cause other analysis programs 806 already in the standby state to execute .

다른 분석 프로그램들(12, 202, 806)은 모두 MEL 구간(도 9 의 807 ~ 808 구간)을 이미 수행 완료하였지만, 일부 분석 프로그램들이 MEL구간(도 9의 807 ~ 808 구간) 수행을 끝내지 못했다면, 끝낼 때까지 기다렸다가 같이 실행을 하게 해야 시간동기화를 달성할 수 있기 때문이다. All of the other analysis programs 12, 202, and 806 have already completed the MEL section (sections 807 to 808 of FIG. 9), but if some of the analysis programs have not completed the MEL section (sections 807 to 808 of FIG. 9) , It is necessary to wait until it finishes and to execute it together so that time synchronization can be achieved.

따라서, 시간동기화를 위해 모든 분석 프로그램들이 한차례의 MEL 구간(도 9의 807 ~ 808 구간) 수행이 모두 끝난 것인가를 체크하는 단계이다.Therefore, in order to synchronize the time, all the analysis programs check whether the execution of the one MEL interval (interval 807 to 808 of FIG. 9) is completed.

스텝 2, 만일, 모든 분석 프로그램들(806)이 MEL 구간을 수행 완료하여, 모두 대기(Wait)상태(도 8 및 도 9의 ③ 및 도면부호 707 참조)라면, 각 분석 프로그램들(806)이 요구하는 경계지역 값들을 갱신해야 한다. Step 2: If all the analysis programs 806 have completed the MEL section and are all in a wait state (see ③ and 707 in Figs. 8 and 9), then each analysis program 806 The required bounding area values should be updated.

그렇게 해야 각 분석 프로그램들(806)이 이전 Time-Step(803)과는 틀린, 새롭게 계산된 경계조건의 값을 가지고 실행을 할 수 있기 때문이다. This is because each analysis program 806 can execute with a newly calculated boundary condition value that is different from the previous time-step 803.

경계조건들의 값을 갱신하는 방법은 다음과 같다.The method of updating the values of the boundary conditions is as follows.

일단 PVDB(3,303)의 B-Tree(311, 1113, 1213)에 등록된 모든 내부 변수들(즉, tagsvrDATA 객체(307))을 순항(Navigate)하여 아래 단계들을 그대로 적용한다.All the internal variables (i.e., tagsvrDATA object 307) registered in the B-Tree 311, 1113, and 1213 of the PVDB 3,303 are navigated and the following steps are directly applied.

내부 변수들 각자가 전달해줘야 하는 target 번지(315)로 모두 src_var_info 변수값(313)을 복사한다.Copy all the src_var_info variable value (313) to the target address (315) that each of the internal variables should deliver.

즉, src_var 변수가 값을 복사해줘야 하는 대상 변수들 모두에게 값을 복사해줘야, 비로소 경계조건들이 모두 채워지는 원리이다.(도 10의 도면 부호 908, 909, 910, 911, 912 참조)That is, the src_var variable must be copied to all of the target variables whose values need to be copied, so that the boundary conditions are all filled (see 908, 909, 910, 911, and 912 in FIG. 10)

참고적으로 PVDB에 등록된 모든 tagsvrDATA 객체를 순항하며, target 번지에 값을 기록하는 예제코드는 하기와 같다.For reference, the following code is used to cruise all tagsvrDATA objects registered in the PVDB and write the values to the target address.

number = tagsvrDATA::nTargetVarInfo;number = tagsvrDATA :: nTargetVarInfo;

loop number > 0       loop number> 0

pSrc = tagsvrDATA::pProcessInfo->pDataSectionAddr + tagsvrDATA::src_var_info->pOffset;  pSrc = tagsvrDATA :: pProcessInfo-> pDataSectionAddr + tagsvrDATA :: src_var_info-> pOffset;

pDest = tagsvrDATA::target_var_info[number-1]->pAddr;       pDest = tagsvrDATA :: target_var_info [number-1] -> pAddr;

WriteProcessMemory(pi.hProcess, pDest, pSrtc, nSize, ...);       WriteProcessMemory (pi.hProcess, pDest, pSrtc, nSize, ...);

number = number - 1;       number = number - 1;

end loop   end loop

스텝 3, 상기와 같은 방식으로 PVDB(3,303)의 B-Tree(311, 1113, 1213)내 등록된 모든 변수들에 대해 순항(Navigate)하여, 경계조건 값들이 되는 Target 변수들(310, 도 14의 도면부호 1304)의 값들이 모두 갱신되었다면, 실시간동기화노드부(10, 914)로 이동하게 된다.(도 10의 도면 부호 913, 915 참조)In step 3, all the parameters registered in the B-Tree 311, 1113, and 1213 of the PVDB 3,303 are navigated to obtain target parameters 310 Time synchronization node unit 10, 914 (see reference numerals 913, 915 in FIG. 10).

또한, 상기 실시간동기화노드부(10, 914)는 분석용 프로그램들의 시간 동기화를 수행하여 구동될 수 있도록 하는 기능을 수행하게 된다.In addition, the real-time synchronization node unit (10, 914) performs time synchronization of analysis programs to be able to be driven.

상기에서 모든 공학적 프로그램들이 대기(Wait)상태(707)이고, 각자의 경계조건값들이 모두 갱신 완료된 단계에서는, 모든 공학적 분석 프로그램들이 동시에 각자의 MEL 구간(705 ~ 706 구간, 807 ~ 808 구간)을 시작할 수 있도록, 대기 상태에 대한 이벤트 동기화 객체의 신호를 설정(Set)(21, 805)해주는 기능을 실시간동기화노드부(10, 914)에서 수행하며, 아래와 같은 순서대로 실행을 한다.When all engineering programs are in a wait state 707 and all of their boundary condition values have been updated, all the engineering analysis programs simultaneously execute their respective MEL sections (sections 705-706, sections 807-808) The real-time synchronization node units 10 and 914 perform the functions of setting (Set) 21 and 805 the signal of the event synchronization object with respect to the standby state so that they can be started.

스텝 1, 경계조건매니저노드부(9, 904, 1004)에 의해 모든 분석 프로그램들(806)이 경계조건 변수값들이 새로운 값들로 갱신되었으므로, 각 분석 프로그램들(806)이 각자의 MEL 구간( 705 ~ 706 구간, 807 ~ 808 구간)을 동시에 수행할 수 있도록, 이벤트동기화 객체의 신호를 설정 (Set)(21, 805, 915)한다.(예시코드 : 도면부호 916 참조) 이렇게 설정하게 되면, 도 9에 나타난 대로 그 설정신호(21, 805)가 분석 프로그램들(806)에게 수신되어, 대기(Wait) 상태(707)가 해제되어, 분석 프로그램들의 각자의 MEL 구간을 동시에 실행하게 되고, 실행완료후에는 다시 대기(Wait) 상태(707)인 도 9 의 ③의 위치에 되돌아가게 한다.(도 10의 도면부호 913 및 915 단계 참조)Since each of the analysis programs 806 has been updated with the new values of the boundary condition variable values by the step 1 and the boundary condition manager node unit 9, 904 and 1004, each of the analysis programs 806 has its own MEL interval 705 A set signal 21, 805, 915 of the event synchronization object is set so that the event synchronization object can be simultaneously executed in the period from 0 to 706 and from 807 to 808. (Reference Code: Reference 916) 9, the setting signals 21 and 805 are received by the analysis programs 806 and the wait state 707 is canceled so that the respective MEL sections of the analysis programs are simultaneously executed, 9 (913 and 915 in FIG. 10), which is the wait state 707, again.

스텝 2, 그리고 다음 동기화 설정시간(802)까지 대기상태에 놓이게 된다. 다음 주기적 동기화 설정시점(802)에서는 상기의 경계조건매니저노드부(9, 904, 1004)의 Ready-to-Run 체크 및 경계조건 값 채우기 및 실시간동기화노드부(10)의 이벤트 동기화 신호설정(21,805) 송신행위가 반복적으로 일어나, 시간 자동화 실행을 반복수행하게 된다.(도 10의 도면부호 917 및 905 단계 참조)Step 2, and the next synchronization set time 802. [0053] In the next periodic synchronization setting time 802, Ready-to-Run check and boundary condition value filling of the boundary condition manager node unit 9, 904 and 1004 and event synchronization signal setting 21, 805 of the real time synchronization node unit 10 ) Transmission operation is repeatedly performed, and the time automation execution is repeated (refer to steps 917 and 905 of FIG. 10)

도 10의 경우에는 경계조건매니저노드부(9)와 실시간동기화노드부(10)에 대한 흐름도를 나타낸 것이다.In the case of FIG. 10, a flow chart of the boundary condition manager node unit 9 and the real-time synchronization node unit 10 is shown.

한편, 상기 엔지니어링코드실행노드부(11)는 상기 실행컨트롤러노드부(7)에서 시간 동기화 설정 신호가 발생하면, 분석 프로그램들의 대기 상태를 해제시켜 각 분석 프로그램들의 각 MEL 구간을 동시에 실행하여 시간 동기화를 실행하는 기능을 수행하게 된다.Meanwhile, when the time synchronization setting signal is generated in the execution controller node unit 7, the engineering code execution node unit 11 releases the wait states of the analysis programs and simultaneously executes each MEL section of each analysis program, As shown in FIG.

즉, 분석 프로그램들(12, 806)이 그루핑(Grouping)되어 있는 노드로, 실행컨트롤러노드부(7)에서 시간 동기화 설정(Set) 신호가 발생(21, 805)하게 된다면, 엔지니어링코드실행노드부(11)에 존재하는 각 분석 프로그램들(12, 806)이 대기 (Wait) 상태가 해제되어, 각 분석 프로그램들(12, 806)의 각 MEL 구간(705 ~ 706 구간, 807 ~ 808 구간)을 동시에 1회 실행하게 되어, 시간 동기화되게 만든다.That is, if the time synchronization setting signal is generated (21, 805) by the execution controller node unit 7 with the nodes where the analysis programs 12, 806 are grouped, the engineering code execution node unit The wait states of the analysis programs 12 and 806 existing in the analysis program 11 are released and the respective MEL sections 705 to 706 and 807 to 808 of the analysis programs 12 and 806 It will run once at a time, making it time synchronized.

한편, 상기 유저인터페이스노드부(13, 401, 901, 1001, 1101, 1201)는,Meanwhile, the user interface node units 13, 401, 901, 1001, 1101,

상기 실행컨트롤러노드부(7, 801)의 시작, 실행 및 멈춤을 수행하는 실행UI부(23)와,An execution UI unit (23) for starting, executing, and stopping the execution controller node unit (7, 801)

상기 실행컨트롤러노드부(7)를 통해 공학적 분석용 프로그램들이 사용하는 내부 전역 변수의 값에 대한 취득 및 설정을 담당하는 데이터UI부(24)를 포함하여 구성되게 된다.And a data UI unit 24 for acquiring and setting values of internal global variables used by the engineering analysis programs through the execution controller node unit 7.

상기 실행UI부(23)는 실행컨트롤러노드부(7, 801)의 시작(Start), 실행 (Run) 및 멈춤을 위한 "START" 버튼(14, 402), "RUN"버튼(15, 902) 및 "FREEZE"버튼(16, 1002)으로 구성된다.The execution UI unit 23 includes a START button 14 and a RUN button 15 and 902 for starting, And "FREEZE" buttons 16 and 1002, respectively.

일단, 사용자가 "START" 버튼(14, 402)을 누르게 되면, 실행컨트롤러노드부(7)의 프로세스초기화노드부(8, 403)가 시작하게 되어 엔지니어링코드실행노드부(11,806)에서 관리하는 공학적 분석코드들(12, 202, 806)을 CREATE_SUSPENDED 모드로 기동시키고, (RAM 메모리에 로딩되어 있는) 각 공학적 분석코드들의 MEL 이진 코드(503, 602, 702)에 시간동기화 코딩을 삽입(605)하고, 공학적 분석코드들의 전역변수들에 대한 B-Tree 기반 데이터베이스(PVDB, 3)화 및 공학적 분석코드 프로세스 자체에 대한 데이터베이스(PIDB, 4)화를 수행하게 된다. Once the user presses the "START" button 14, 402, the process initializing node unit 8, 403 of the execution controller node unit 7 starts and the engineering code execution node unit 11, Activates the analysis codes 12, 202, 806 in CREATE_SUSPENDED mode and inserts (605) time synchronization coding into the MEL binary codes 503, 602, 702 of the respective engineering analysis codes (loaded in the RAM memory) , A B-Tree based database (PVDB) for the global variables of the engineering analysis codes, and a database (PIDB, 4) for the engineering analysis code process itself.

도 5에서는 "START" 버튼을 눌렀을 경우의, 제어 흐름도를 코드예시와 함께 제공하고 있다.In Fig. 5, a control flow chart when the "START" button is pressed is provided together with a code example.

둘째, "RUN"버튼(15, 902)을 누르게 되면, 실행컨트롤러노드부(7)의 경계조건매니저노드부(9, 904, 1004)가 시작하게 되어 모든 분석 프로그램들(806)이 Wait상태인지를 점검하는 Ready-to-Run 상태 체크 수행하게 되며, 대기(Wait)상태 가정시, 분석 프로그램들(806)의 경계지역 값들 갱신 작업 수행하게 되며, 이벤트 동기화 객체 설정(Set) 신호 발생(21, 805)을 하여, 각 분석 프로그램들(806)이 각자의 MEL 구간(705 ~ 706 구간, 807 ~ 808 구간)을 동시에 한차례 실행하도록 하는 실시간동기화노드부(10)를 동작하게 한 후, 다음 주기적 실행시점까지 실행컨트롤러노드부(7, 801)을 대기상태로 돌입하게 만든다. Secondly, when the "RUN" button 15, 902 is pressed, the boundary condition manager node unit 9, 904, 1004 of the execution controller node unit 7 starts and all the analysis programs 806 are in the Wait state To-run state check for checking the state of the analysis programs 806. When assuming a wait state, the update processing of the boundary region values of the analysis programs 806 is performed, and an event synchronization object set signal generation 21, 805) so that each of the analysis programs 806 operates the real-time synchronization node unit 10 to execute each MEL section (sections 705 to 706 and sections 807 to 808) one time at a time, The controller node unit (7, 801) enters the waiting state.

도 10에서는 "RUN"버튼을 눌렀을 경우(903)의, 제어 흐름도를 코드예시와 함께 제공하고 있다.In Fig. 10, a control flow chart of the case where the "RUN" button is pressed (903) is provided together with a code example.

세째, "FREEZE"버튼(16, 1002)을 누르게 되면(1003), 모든 분석 프로그램들(806)의 실행을 멈추게 하기 위해, (경계조건매니저노드부(9, 904, 1004)의 주기적 Ready-to-Run 체크 시점(802, 905)에 상관없이) 동기화 설정신호(21, 805)를 보내지 않게 된다. Thirdly, when the "FREEZE" button 16 1002 is pressed (1003), the periodic Ready-to of the boundary condition manager node unit (9, 904, 1004) And does not send the synchronization setting signal 21, 805 (regardless of the run check point 802, 905).

상기와 같이 처리한다면, 모든 분석 프로그램들(806)은 대기하고 있는 이벤트 동기화 객체가 설정신호를 받지 못하기 때문에, 한없이 대기 상태(1005)로 빠지게 되고, 이것은 모든 분석 프로그램들(806)을 FREEZE 상태로 만드는 것과 완벽히 동일한 효과를 가지게 된다. If all the analysis programs 806 are processed as described above, the analyzing program 806 is put into the waiting state 1005 as long as the waiting event synchronizing object does not receive the setting signal, It has exactly the same effect as making it.

만일, 사용자가 다시 "RUN"버튼(15,902)을 누르게 되면, 주기적으로 동기화 설정신호를 송신하는 상태로 되돌아간다. If the user again presses the "RUN" button 15,902, it returns to the state of periodically transmitting the synchronization setting signal.

도 11에서는 "FREEZE"버튼(16, 1002)을 눌렀을 경우의, 제어 흐름도를 코드예시와 함께 제공하고 있다.(도면부호 1006 참조)11, a control flow chart when the "FREEZE" button 16, 1002 is pressed is provided together with a code example (see reference numeral 1006).

또한, 상기 데이터UI부(24)는 실행컨트롤러노드부(7)를 통해 공학적 분석용 프로그램들이 사용하는 내부 전역 변수의 값에 대한 취득 및 설정을 담당하는 기능을 수행하게 된다.In addition, the data UI unit 24 performs a function of acquiring and setting values of internal global variables used by the engineering analysis programs through the execution controller node unit 7.

즉, 실행컨트롤러노드부(7, 801)을 통해 공학적 분석용 프로그램들이 사용하는 내부 전역변수의 값을 취득하기 위한 "GET" 버튼(19, 1102)과, 지정된 값을 기록하기 위한 "SET" 버튼(20, 1202)으로 구성되어 있다.In other words, a "GET" button 19, 1102 for acquiring the value of the internal global variable used by the engineering analysis programs through the execution controller node unit 7, 801 and a "SET" button (20, 1202).

첫째, 사용자가 값을 취득하기를 원하는 변수명을 "Varname" 에딧창(17, 1103)에 기입하고, "GET" 버튼(19, 1102)을 누르게 되면, 표 9에서 제공된 예시코드의 방법대로 변수의 현재값을 읽어(1115, 1109, 1111)와서, Value 에딧창(1104)에 값을 기록한다. First, when the user inputs a variable name for which the value is desired to be acquired in the "Varname" edit window 17, 1103 and presses the "GET" button 19, 1102, (1115, 1109, 1111), and records the value in the Value edit window (1104).

도 12에서 사용자가 "GET" 버튼(19, 1102)을 눌렀을 경우, 명령 흐름도를 나타내고 있다.When the user presses the "GET" button 19 or 1102 in Fig. 12, a command flow chart is shown.

둘째, 사용자가 원하는 변수명을 "Varname" 에딧창(17, 1203)에 기입하고, 지정한 값(18, 1204)을 기입한 후, "SET" 버튼(20, 1202)을 눌렀을 경우, 표 10에서 제공된 예시코드의 방법으로 변수의 값을 기록(1211, 1209, 1215)하게 된다.Second, when the user inputs a desired variable name into the "Varname" edit window 17, 1203 and then presses the "SET" button 20, 1202 after writing the specified value 18, 1204, The value of the variable is recorded (1211, 1209, 1215) by the method of the provided example code.

도 13에서 사용자가 "SET" 버튼(20, 1202)을 눌렀을 경우, 명령 흐름도를 나타내고 있다.In FIG. 13, a command flow chart is shown when the user presses the "SET" button 20, 1202.

지금까지 설명한 본 발명을 통해, 통합 실행하고자 하는 공학적 분석 프로그램들의 소스를 변경하지 않고, 분석 프로그램들이 사용하는 내부 변수들의 메모리 주소 공간에 대한 메모리맵 파일 정보를 이용하여, 다른 프로세스 공간에서 각 분석 프로그램들의 내부 메모리 공간으로 원격으로 침투(Remote Permeation)하여, 각 분석 프로그램들이 필요로 하는 경계변수(Boundary-Condition Variable)들의 경계조건 값들을 제공함으로써, 분석 프로그램들이 단독으로 실행할 때와 동일하게 실행될 수 있는 효과를 발휘하게 된다.Through the present invention as described above, the memory map file information on the memory address space of the internal variables used by the analysis programs can be used without changing the source of the engineering analysis programs to be integrated, The analysis programs are remotely infiltrated into the internal memory space of the analysis programs and can provide the boundary condition values of the boundary-condition variables needed by the analysis programs, Effect.

또한, 각 분석 프로그램들의 시간적으로 같은 진행 시간 (Problem Time)으로 구동될 수 있도록, 분석 프로그램들의 MEL 구간의 전후에 이벤트동기화 객체 생성 및 대기 코드를 메모리 램 상에 로딩되어 있는 상태에서 동적으로 삽입 변경하여 모든 구동되는 분석 프로그램들이 시간 동기가 보장되는 실행이 이루어질 수 있도록 가상 통합(Virtual Integration for the Engineering Codes)을 수행할 수 있는 효과를 발휘하게 된다.In addition, an event synchronization object is generated before and after the MEL section of the analysis programs so that the analysis programs can be driven at the same time (Problem Time) of each analysis program, and the insertion code is dynamically inserted and changed And thus all of the running analysis programs can perform the virtual integration for the engineering processes so that the time synchronous execution can be performed.

상기와 같은 내용의 본 발명이 속하는 기술분야의 당업자는 본 발명의 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시된 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. It will be understood by those skilled in the art that the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. It is to be understood, therefore, that the embodiments described above are to be considered in all respects as illustrative and not restrictive.

1 : 데이터컨트롤러노드부
7 : 실행컨트롤러노드부
11 : 엔지니어링코드실행노드부
13 : 유저인터페이스노드부
1: Data controller node part
7: Execution controller node part
11: Engineering code execution node section
13: User interface node section

Claims (4)

프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템에 있어서,
분석용 코드들의 내부 변수들에 대한 정보를 B-TREE 기반으로 구축한 PVDB부(3),
분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체를 단순 적재 방식 기반으로 구축한 PIDB부(4)를 포함하는 DB빌더노드부(2)와,
지정된 변수의 현재값을 읽어들이며, 특정값을 해당 변수의 현재값으로 기록하는 DB매니저부(5)를 포함하는 데이터컨트롤러노드부(1)와;
분석용 프로그램들의 통합 구동을 위한 초기화 작업을 수행하는 프로세스초기화노드부(8)와,
분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 경계조건매니저노드부(9)와,
분석용 프로그램들의 시간 동기화를 수행하여 구동될 수 있도록 하는 실시간동기화노드부(10)를 포함하는 실행컨트롤러노드부(7)와;
상기 실행컨트롤러노드부(7)에서 시간 동기화 설정 신호가 발생하면, 분석 프로그램들의 대기 상태를 해제시켜 각 분석 프로그램들의 각 주요 실행 루프(MEL) 구간을 동시에 실행하여 시간 동기화를 실행하는 엔지니어링코드실행노드부(11)와;
상기 실행컨트롤러노드부(7)의 시작, 실행 및 멈춤을 수행하는 실행UI부(23)와,
상기 실행컨트롤러노드부(7)를 통해 공학적 분석용 프로그램들이 사용하는 내부 전역 변수의 값에 대한 취득 및 설정을 담당하는 데이터UI부(24)를 포함하는 유저인터페이스노드부(13);을 포함하여 구성되는 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템.
1. A system for analyzing a virtual analytical code using a process data section,
A PVDB unit 3 that builds information on internal variables of analysis codes based on B-TREE,
A DB builder node unit 2 including a PIDB unit 4 constructed by building a structure including information of a process name, a handle value, and a dynamic memory start address value of an analysis code process on a simple loading scheme,
A data manager node unit (1) including a DB manager unit (5) for reading a current value of a designated variable and recording a specific value as a current value of the variable;
A process initializing node unit 8 for performing an initializing operation for integrated driving of analysis programs,
A boundary condition manager node unit 9 for filling the boundary condition values necessary for the analysis programs to operate,
And a real-time synchronization node unit (10) for performing time synchronization of programs for analysis and being able to be driven;
When the time synchronization setting signal is generated in the execution controller node unit 7, the engineering code execution node (BS) 7 releases the waiting states of the analysis programs and simultaneously executes each main execution loop (MEL) (11);
An execution UI unit 23 for starting, executing, and stopping the execution controller node unit 7;
And a user interface node unit (13) including a data UI unit (24) for acquiring and setting values of internal global variables used by engineering analysis programs through the execution controller node unit (7) An analytical code virtual integrated drive system for scientific analysis using process data section.
제 1항에 있어서,
상기 공학용 분석코드 가상통합 구동시스템은,
분석용 프로그램들에 대한 통합 실행시, 상기 분석용 프로그램들이 사용하는 내부 전역 변수들의 저장 공간인 데이터 섹션에서의 오프셋(Offset) 번지 정보를 담고 있는 메모리 맵 파일 정보를 이용하여, 외부 프로그램이 분석 프로그램의 독립된 가상 메모리 공간의 내부 변수값들을 직접 읽고 쓰도록 하여 분석 프로그램의 소스 변경 작업 없이 분석 프로그램들의 통합을 수행할 수 있는 것을 특징으로 하는 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템.
The method according to claim 1,
The analytical code virtual integrated drive system,
When the analysis program is integrated, the memory map file information including the offset address information in the data section, which is the storage space of the internal global variables used by the analysis programs, And the internal variable values of the independent virtual memory space of the analytic code can be directly read and written so that analysis programs can be integrated without changing the source of the analysis program.
제 1항에 있어서,
상기 공학용 분석코드 가상통합 구동시스템은,
분석용 프로그램들에 대한 통합 실행시, 시간 동기화를 위하여, 분석용 프로그램의 주요 실행 루프 구간(Main Execution Loop)에 이벤트 동기화 개체에 대한 생성 및 대기(Wait)를 수행하는 이진 코드를 삽입하여, 시간 동기화를 보장하도록 함으로써, 복수 개의 분석 프로그램들을 시간 동기화하며 통합 실행할 수 있는 것을 특징으로 하는 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템.
The method according to claim 1,
The analytical code virtual integrated drive system,
A binary code for generating and waiting for an event synchronization entity is inserted into a main execution loop section of the analysis program for time synchronization when the analysis programs are integrated, Wherein the plurality of analytical programs are time synchronized and can be executed integrally.
제 1항에 있어서,
상기 PVDB부(3)는,
분석 프로그램들(12, 202, 806)이 내부 전역(혹은 Heap) 변수들이 해당 분석프로그램의 데이터 섹션(101, 102, 103, 203)에서의 메모리 옵셋(Offset)값 정보(204)를 나타내는 통합실행 대상 각 분석 프로그램들의 메모리맵 파일(201,301)들을 바탕으로, 개별 전역변수에 대한 (변수명, Offset 값, 소속 분석프로그램 핸들값 등) 정보들로 구성된 tagsvrDATA (307)객체들을 B-Tree(311, 1113, 1213)를 기반으로 데이터베이스화한 것을 특징으로 하는 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동 시스템.


The method according to claim 1,
The PVDB unit (3)
The analysis programs 12,202 and 806 may determine that the internal global (or Heap) variables are in an integrated execution state, which indicates the memory offset value information 204 in the data sections 101, 102, 103, Based on the memory map files 201 and 301 of the target analysis programs, the tagsvrDATA 307 objects composed of the information (variable name, offset value, belonging analysis program handle value, etc.) of the individual global variables are stored in the B-Tree 311, 1113, and 1213. The virtual analytic code virtual integrated drive system using the process data section.


KR1020160145504A 2016-11-03 2016-11-03 System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section KR101702912B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160145504A KR101702912B1 (en) 2016-11-03 2016-11-03 System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160145504A KR101702912B1 (en) 2016-11-03 2016-11-03 System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section

Publications (1)

Publication Number Publication Date
KR101702912B1 true KR101702912B1 (en) 2017-02-07

Family

ID=58108185

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160145504A KR101702912B1 (en) 2016-11-03 2016-11-03 System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section

Country Status (1)

Country Link
KR (1) KR101702912B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070003578A (en) 2005-07-01 2007-01-05 큐엔엑스 소프트웨어 시스템즈 게엠베하 운트 코. 카게 File system having deferred verification of data integrity
KR101139610B1 (en) * 2010-07-29 2012-04-27 한국수력원자력 주식회사 System and method for synchronized interfaces between engineering analysis programs using databased shared memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070003578A (en) 2005-07-01 2007-01-05 큐엔엑스 소프트웨어 시스템즈 게엠베하 운트 코. 카게 File system having deferred verification of data integrity
KR101139610B1 (en) * 2010-07-29 2012-04-27 한국수력원자력 주식회사 System and method for synchronized interfaces between engineering analysis programs using databased shared memory

Similar Documents

Publication Publication Date Title
US7526750B2 (en) Object-based systematic state space exploration of software
US9152389B2 (en) Trace generating unit, system, and program of the same
CN101866315B (en) Test method and system of software development tool
CN102234046B (en) Lift control software field debugging system
US6510551B1 (en) System for expressing complex data relationships using simple language constructs
US8001552B1 (en) Model merger using an export map
US9535687B2 (en) Audited builds based upon separate class dependency records
CN111930850A (en) Data verification method and device, computer equipment and storage medium
WO2016161130A1 (en) Field specialization systems and methods for improving program performance
KR101139610B1 (en) System and method for synchronized interfaces between engineering analysis programs using databased shared memory
Portmann et al. An accelerator control middle layer using MATLAB
Mansky et al. Verifying dynamic race detection
JPH0816429A (en) Parallel program generation supporting device, parallel program generating method, and parallel program executing device
CN110750457A (en) Automatic unit testing method and device based on memory database
KR101702912B1 (en) System for the Virtually Integrated Execution of the Engineering Analysis Codes using the Process Data Section
CN106484618B (en) A kind of parallel playback method and device based on memory access dependence pair
AU2012201466B2 (en) Code Transformation
Watkinson et al. Updating Gin's profiler for current Java
US5745749A (en) Method and system of file version clustering of object blocks using a compiler and database and having a predetermined value
US20230058452A1 (en) Efficient error reproduction scenarios through data transformation
CN114443028A (en) Method, computer readable medium for implementing coverage collection code reuse
CN112685049B (en) JAVA byte code compiling method
US20080127075A1 (en) Method and system for enforcing version control
Rinard et al. Inference and Regeneration of Programs that Store and Retrieve Data
Wasserman et al. Toward a unified view of data base management, programming languages, and operating systems—A tutorial

Legal Events

Date Code Title Description
A201 Request for examination
FPAY Annual fee payment

Payment date: 20191231

Year of fee payment: 4