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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, 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
Description
본 발명은 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템에 관한 것으로서, 더욱 상세하게는 인허가 등을 통해 분석성능을 기 검증받은 분석용 공학프로그램들을 통합하여 종합 시스템의 거동을 분석하고자 할 경우에, 각 프로그램들이 각기 독립적 메모리 공간의 데이터(혹은 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.
따라서, 본 발명은 상기 종래의 문제점을 해소하기 위해 안출된 것으로,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
분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체를 단순 적재 방식 기반으로 구축한 PIDB부(4)를 포함하는 DB빌더노드부(2)와,A DB
지정된 변수의 현재값을 읽어들이며, 특정값을 해당 변수의 현재값으로 기록하는 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
분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 경계조건매니저노드부(9)와,A boundary condition
분석용 프로그램들의 시간 동기화를 수행하여 구동될 수 있도록 하는 실시간동기화노드부(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
상기 실행컨트롤러노드부(7)의 시작, 실행 및 멈춤을 수행하는 실행UI부(23)와,An
상기 실행컨트롤러노드부(7)를 통해 공학적 분석용 프로그램들이 사용하는 내부 전역 변수의 값에 대한 취득 및 설정을 담당하는 데이터UI부(24)를 포함하는 유저인터페이스노드부(13);를 포함한다.And a user
본 발명에 따른 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템은, 통합 실행하고자 하는 공학적 분석 프로그램들의 소스를 변경하지 않고, 분석 프로그램들이 사용하는 내부 변수들의 메모리 주소 공간에 대한 메모리맵 파일 정보를 이용하여, 다른 프로세스 공간에서 각 분석 프로그램들의 내부 메모리 공간으로 원격으로 침투(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
본 발명에서 설명하고 있는 통합 방법으로는 분석 프로그램들(12, 202, 806) 간의 변수값 교환 방법, 분석 프로그램들(12, 202, 806)간의 시간동기화 실행 방법이다.The integration method described in the present invention is a method of exchanging variable values between
상기한 분석 프로그램들(12, 202, 806) 간의 변수값 교환 방법을 설명하도록 하겠다.A method of exchanging variable values between the
통상적으로 실행프로그램이 내부적으로 사용하는 변수들로는 지역변수(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
따라서, 분석 프로그램들(12, 202, 806)이 메모리(RAM)상에 적재(Loading)될 때, 이들 데이터(혹은 Heap) 섹션(101, 102, 103, 203)의 시작 메모리 번지(104, 105)와, 메모리맵 파일에 의해 제공되는 내부 변수들의 오프셋(Offset) 번지(204)를 더한다면, 분석 프로그램들(12, 202, 806)의 가상 메모리 공간(202)에서 해당 변수가 저장되는 실제적인 논리 번지(Logical Address)값을 알 수가 있다.Therefore, when the
상기한 표 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
WriteProcessMemory (hProcess, pRemoteBuf[0], (LPVOID)¶m, dwSize, NULL);
(...)
ReadProcessMemory (hProcess, pRemoteBuf[3], (LPVOID)¶m, 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
그리고, 도 3은 공학적 분석 프로그램들(12, 202)의 가상 주소공간(202)과 메모리맵 파일(201, 301)과의 관계 도식이다. 3 is a diagram showing the relationship between the
도 3에 도시한 관계 도식에서 Address(204)가 해당 전역변수의 데이터(혹은 Heap) 섹션(101, 102, 103, 203)에서의 오프셋 번지값(204)을 나타낸다.The
다음은 도 9를 참조하여 상기한 분석 프로그램들(12, 202, 806)간의 시간동기화 실행 방법을 설명하도록 하겠다.Next, referring to FIG. 9, a description will be made of a method of performing time synchronization between the
발전소 플랜트와 같이 복잡한 계통들로 이루어진 시스템을 종합적으로 분석하기 위해서는, 공학적 분석 프로그램(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
이러한 목적을 위해 본 발명에서는 각 공학적 분석 프로그램(601, 701)들의 주요 실행 루프(MEL, 도면부호는 503, 602, 702)부분에 동기화를 위한 이진 실행 코드(603, 604)를 동적으로 주입(605) 시켜놓고, 동기화 신호(21, 805)를 외부 프로그램(예를 들어, 실행컨트롤러노드부(7, 801))에서 발생시키도록 하여, 분석 프로그램들(12, 202) 간의 시간 동기화를 보장하고 있다.For this purpose, in the present invention,
예를 들어, 도 6의 도면부호 501과 같이, 모든 공학적 분석 프로그램들은 소스 코드 구성(혹은 실행구간)에서 프로세스도입부(502), 프로세스주요실행루프부(503, 602, 702), 프로세스결말부(504)와 같이 3개의 부분으로 구성되어 있다.For example, as shown in
상기 프로세스도입부(502)에서는, 분석하고자 하는 대상 계통 구조물의 기하학적 위치 정보 및 내부 구성 물질에 대한 물성치 등을 인풋덱(InputDeck) 형태로 초기화하며, 또한 경계 계통들에 대한 물성치 값도 초기값으로 입력하는 등 내부 전역 변수들에 대한 초기화 과정을 수행한다.In the
상기 프로세스주요실행루프부(503, 602, 702)는 Process의 Main Execution Loop를 의미하며, 약자로 "MEL"이라 정의하도록 하겠다.The process main
상기 프로세스주요실행루프부에서는, 미리 지정된 분석 종료시간까지 시간 (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
상기 3개의 구간 중 Time-Step(803)에 따라 반복적으로 실행하는 분석 프로그램들 각각의 MEL 구간(도 8의 도면부호 705 ~ 706 구간, 도 9의 도면부호 807 ~ 808 구간)이 가장 중요한 구간이며, 만일 이 MEL 구간 실행시 서로의 프로그램들 간에 시간적으로 동기화가 되지 않는다면, 각자 틀린 시간대에서의 현상을 분석실행하는 것이 되어버려, 분석 프로그램들(12, 202, 806)을 통합 실행한다는 것이 아무런 물리적 의미가 없게 되어버린다.Of the three intervals, the MEL interval (the
즉, 분석 프로그램들이 같은 시간대의 분석을 하고 있다는 것이 보장이 되어야지만, 분석하는 플랜트의 종합 거동 분석이 의미가 있는 것이다.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
예를 들어, 실행컨트롤러노드부(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
도 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
다음은 도 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
분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체를 단순 적재 방식 기반으로 구축한 PIDB부(4)를 포함하는 DB빌더노드부(2)와,A DB
지정된 변수의 현재값을 읽어들이며, 특정값을 해당 변수의 현재값으로 기록하는 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
분석용 프로그램들이 구동하기 위해 필요한 경계 조건값들을 채워주는 경계조건매니저노드부(9)와,A boundary condition
분석용 프로그램들의 시간 동기화를 수행하여 구동될 수 있도록 하는 실시간동기화노드부(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
상기 실행컨트롤러노드부(7)의 시작, 실행 및 멈춤을 수행하는 실행UI부(23)와,An
상기 실행컨트롤러노드부(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
이때, 상기 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
분석 코드 프로세스의 프로세스명, 핸들값 및 데이터 섹션의 동적 메모리 시작 번지값의 정보를 포함하고 있는 구조체(309)를 단순 적재 방식 기반으로 구축한 PIDB부(4, 304)를 포함하여 구성되게 된다.And a
상기 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
상기 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.
(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)
상기 표 3은 tagsvrDATA 구조체(307) 필드설명이다.Table 3 above is a field description of tagsvrDATA structure (307).
상기 표 4는 SRC_VAR_INFO 구조체(308) 필드설명이다.Table 4 above shows the
만일 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
- 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 구조체의 구성으로 되는 엔트리 객체를 의미하며, 분석코드에서 사용되는 각 변수들마다 고유의 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
또한, 상기 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
이때, 이 데이터베이스를 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 (
상기 표 8은 PROCESS_INFO 구조체(309) 필드설명이다.Table 8 is a description of the
도 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
또한, 상기 DB매니저부(5, 1106, 1206)는 지정된 변수의 현재값을 읽어들이며, 특정값을 해당 변수의 현재값으로 기록하는 기능을 수행하게 된다.(도면부호 1105, 1107, 1205, 1207 참조)Also, the
즉, DB매니저부(5, 1106, 1206)는 지정된 변수의 현재값을 읽어들이는 기능(도 12 참조)과, 특정 값을 해당 변수의 현재 값으로 기록하는 기능(도 13 참조)으로 구성된다. That is, the
먼저, 해당 변수의 현재 값을 읽어들이기 위해서는, 변수들에 대한 데이터베이스인 PVDB부(3,303)에서 해당 변수에 대한 tagsvrDATA 객체(307)를 취득하여, 그 변수를 소유하고 있는 분석프로그램의 주소공간(pProcessInfo)(314)내에서 데이터 섹션 메모리 주소(104,105) + 데이터섹션내 옵셋값(204)을 더한 주소값에서 현재값을 가져와야 한다.First, in order to read the current value of the variable, the
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
도 12에는 지정된 변수에 대한 현재값을 취득하기 위해, "GET" 버튼을 눌렀을 경우, 해당 분석 프로그램의 주소 공간(202)에서 변수값을 취득해오고 있는 것을 도식화한 것으로, 구현 코드의 예시(1108, 1110)도 함께 제공되고 있다.FIG. 12 is a diagram illustrating that variable values are acquired in the
다음으로, 해당 변수의 메모리 공간에 지정한 값을 기록하기 위해서는, 상기와 마찬가지로 PVDB부(3,303)에서 취득된 tagsvrDATA 객체(307)를 근간으로, 분석 프로그램의 주소공간(pProcessInfo, 314)속에서 지정된 값으로 설정해야 한다.Next, in order to record the value specified in the memory space of the variable, the
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
다음은 실행컨트롤러노드부(7)에 대하여 구체적으로 설명하도록 하겠다.Next, the execution
상기 실행컨트롤러노드부(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
따라서, PVDB부(3), PIDB부(4) 구축, 분석 프로그램들(12, 202, 806)의 시간동기화 이진코드 삽입(도 7 내지 도 8 참조) 및 경계조건 값들을 채워서 통합 실행(도 9 참조)하게 되는 핵심적인 역할을 수행한다.9 to 9) of the
즉, 실행컨트롤러노드부(7, 801)는 공학적 분석 프로그램들(12, 202, 806)과는 독립적으로 떨어진 프로세스이며, 실행컨트롤러노드부에서 공학적 분석 프로그램들이 소유하고 있는 각 전역변수들의 값을 변경하기 위해서는, 별도의 주소공간(202, 1114, 1214)에 대한 특수 메모리복사함수들(예: Windows의 경우 ReadProcessMemory(1110) / WriteProcessMemory(912, 1210) 등)를 사용해야만 가능하다.That is, the execution
상기 프로세스초기화노드부(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 참조 )한다.
도 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
즉, 각 공학적 분석 프로그램들(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 (
도 9에서는 이 원리를 도식화한 것이다. 그리고, 도 5의 도면부호 406을 참조하면 된다.In Fig. 9, this principle is illustrated.
스텝 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
이때 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을 참조하면 된다.
스텝 4, 상기 process.ini 파일(도 14 참조)에서 제공되고 있는 실행될 공학적 분석 프로그램 목록정보(1302)를 이용(하나의 분석 프로그램과 1:1 대응되는)하여 PROCESS_INFO 객체(309)를 process.ini 파일에 나열된 순서대로 데이터베이스 메모리에 저장하는 단순 적재 방식(312)으로 데이터베이스(PIDB)(4, 304)화 한다.(도면부호 410에서 값이 채워지는 필드 제시)
그리고, 도 5의 도면부호 409를 참조하면 된다.
스텝 5, 상기에서 초기화 작업을 위해 CREATE_SUSPENDED되었던 공학적 분석프로그램들(12, 202, 806)을 다시 재개(Resume) 시켜, 도 9의 ③ 번 단계까지 실행하여, 이벤트 동기화 신호를 기다리는 상태로 만든다.(코드예시 : 도면부호 412 참조)In
그리고, 도 5의 도면부호 411을 참조하면 된다.
예를 들어, 실행컨트롤러노드부(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
즉, 공학적 분석 프로그램들이 스스로 재개(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
만일, 실행컨트롤러노드부(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
즉, 실행컨트롤러노드부(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
여기서, 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
만일, 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
더욱이 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
이러한 목적을 위해, 경계조건매니저노드부(9, 904, 1004)에서는 매 Time-Step 별(803)로, 각 분석 프로그램들(806)이 계산한 내부 전역변수들의 값을, 원하는 Target 변수들(310, 도 14의 도면 부호 1303, 1304)의 값들로 복사해주는 작업을 수행하며, 아래와 같은 순서대로 실행을 한다.For this purpose, the boundary condition
스텝 1, 모든 분석 프로그램(806)이 Wait상태인지를 점검하는 Ready-to-Run 상태 체크를 수행한다.(도 10의 도면 부호 906) Step 1: Performs a Ready-to-Run status check to check whether all the
만일, 분석 프로그램들(806)중 하나라도 MEL 구간( 도 9의 807 ~ 808 구간)실행이 완료되지 않아, Wait 상태가 되지 못한 것이 있다면, Read-to-Run에 대한 주기적 체크 시간까지 기다리게 된다.(도 10의 도면부호 907 및 905)If any one of the
즉, 일부 분석 프로그램이 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 (
다른 분석 프로그램들(12, 202, 806)은 모두 MEL 구간(도 9 의 807 ~ 808 구간)을 이미 수행 완료하였지만, 일부 분석 프로그램들이 MEL구간(도 9의 807 ~ 808 구간) 수행을 끝내지 못했다면, 끝낼 때까지 기다렸다가 같이 실행을 하게 해야 시간동기화를 달성할 수 있기 때문이다. All of the
따라서, 시간동기화를 위해 모든 분석 프로그램들이 한차례의 MEL 구간(도 9의 807 ~ 808 구간) 수행이 모두 끝난 것인가를 체크하는 단계이다.Therefore, in order to synchronize the time, all the analysis programs check whether the execution of the one MEL interval (
스텝 2, 만일, 모든 분석 프로그램들(806)이 MEL 구간을 수행 완료하여, 모두 대기(Wait)상태(도 8 및 도 9의 ③ 및 도면부호 707 참조)라면, 각 분석 프로그램들(806)이 요구하는 경계지역 값들을 갱신해야 한다. Step 2: If all the
그렇게 해야 각 분석 프로그램들(806)이 이전 Time-Step(803)과는 틀린, 새롭게 계산된 경계조건의 값을 가지고 실행을 할 수 있기 때문이다. This is because each
경계조건들의 값을 갱신하는 방법은 다음과 같다.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-
내부 변수들 각자가 전달해줘야 하는 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
또한, 상기 실시간동기화노드부(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
스텝 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
스텝 2, 그리고 다음 동기화 설정시간(802)까지 대기상태에 놓이게 된다. 다음 주기적 동기화 설정시점(802)에서는 상기의 경계조건매니저노드부(9, 904, 1004)의 Ready-to-Run 체크 및 경계조건 값 채우기 및 실시간동기화노드부(10)의 이벤트 동기화 신호설정(21,805) 송신행위가 반복적으로 일어나, 시간 자동화 실행을 반복수행하게 된다.(도 10의 도면부호 917 및 905 단계 참조)
도 10의 경우에는 경계조건매니저노드부(9)와 실시간동기화노드부(10)에 대한 흐름도를 나타낸 것이다.In the case of FIG. 10, a flow chart of the boundary condition
한편, 상기 엔지니어링코드실행노드부(11)는 상기 실행컨트롤러노드부(7)에서 시간 동기화 설정 신호가 발생하면, 분석 프로그램들의 대기 상태를 해제시켜 각 분석 프로그램들의 각 MEL 구간을 동시에 실행하여 시간 동기화를 실행하는 기능을 수행하게 된다.Meanwhile, when the time synchronization setting signal is generated in the execution
즉, 분석 프로그램들(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
한편, 상기 유저인터페이스노드부(13, 401, 901, 1001, 1101, 1201)는,Meanwhile, the user
상기 실행컨트롤러노드부(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
상기 실행UI부(23)는 실행컨트롤러노드부(7, 801)의 시작(Start), 실행 (Run) 및 멈춤을 위한 "START" 버튼(14, 402), "RUN"버튼(15, 902) 및 "FREEZE"버튼(16, 1002)으로 구성된다.The
일단, 사용자가 "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"
도 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"
도 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"
상기와 같이 처리한다면, 모든 분석 프로그램들(806)은 대기하고 있는 이벤트 동기화 객체가 설정신호를 받지 못하기 때문에, 한없이 대기 상태(1005)로 빠지게 되고, 이것은 모든 분석 프로그램들(806)을 FREEZE 상태로 만드는 것과 완벽히 동일한 효과를 가지게 된다. If all the
만일, 사용자가 다시 "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"
또한, 상기 데이터UI부(24)는 실행컨트롤러노드부(7)를 통해 공학적 분석용 프로그램들이 사용하는 내부 전역 변수의 값에 대한 취득 및 설정을 담당하는 기능을 수행하게 된다.In addition, the
즉, 실행컨트롤러노드부(7, 801)을 통해 공학적 분석용 프로그램들이 사용하는 내부 전역변수의 값을 취득하기 위한 "GET" 버튼(19, 1102)과, 지정된 값을 기록하기 위한 "SET" 버튼(20, 1202)으로 구성되어 있다.In other words, a "GET"
첫째, 사용자가 값을 취득하기를 원하는 변수명을 "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"
도 12에서 사용자가 "GET" 버튼(19, 1102)을 눌렀을 경우, 명령 흐름도를 나타내고 있다.When the user presses the "GET"
둘째, 사용자가 원하는 변수명을 "Varname" 에딧창(17, 1203)에 기입하고, 지정한 값(18, 1204)을 기입한 후, "SET" 버튼(20, 1202)을 눌렀을 경우, 표 10에서 제공된 예시코드의 방법으로 변수의 값을 기록(1211, 1209, 1215)하게 된다.Second, when the user inputs a desired variable name into the "Varname"
도 13에서 사용자가 "SET" 버튼(20, 1202)을 눌렀을 경우, 명령 흐름도를 나타내고 있다.In FIG. 13, a command flow chart is shown when the user presses the "SET"
지금까지 설명한 본 발명을 통해, 통합 실행하고자 하는 공학적 분석 프로그램들의 소스를 변경하지 않고, 분석 프로그램들이 사용하는 내부 변수들의 메모리 주소 공간에 대한 메모리맵 파일 정보를 이용하여, 다른 프로세스 공간에서 각 분석 프로그램들의 내부 메모리 공간으로 원격으로 침투(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.
상기 공학용 분석코드 가상통합 구동시스템은,
분석용 프로그램들에 대한 통합 실행시, 상기 분석용 프로그램들이 사용하는 내부 전역 변수들의 저장 공간인 데이터 섹션에서의 오프셋(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.
상기 공학용 분석코드 가상통합 구동시스템은,
분석용 프로그램들에 대한 통합 실행시, 시간 동기화를 위하여, 분석용 프로그램의 주요 실행 루프 구간(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.
상기 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.
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)
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 |
-
2016
- 2016-11-03 KR KR1020160145504A patent/KR101702912B1/en active Search and Examination
Patent Citations (2)
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 |