KR20180099044A - Scada 시스템 및 스크립트 언어 컴파일 방법 - Google Patents

Scada 시스템 및 스크립트 언어 컴파일 방법 Download PDF

Info

Publication number
KR20180099044A
KR20180099044A KR1020170025982A KR20170025982A KR20180099044A KR 20180099044 A KR20180099044 A KR 20180099044A KR 1020170025982 A KR1020170025982 A KR 1020170025982A KR 20170025982 A KR20170025982 A KR 20170025982A KR 20180099044 A KR20180099044 A KR 20180099044A
Authority
KR
South Korea
Prior art keywords
specific
script language
source code
program source
identifier
Prior art date
Application number
KR1020170025982A
Other languages
English (en)
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 KR1020170025982A priority Critical patent/KR20180099044A/ko
Publication of KR20180099044A publication Critical patent/KR20180099044A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • G05B19/4183Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by data acquisition, e.g. workpiece identification
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • G05B19/41835Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by programme execution
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24215Scada supervisory control and data acquisition
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Abstract

본 발명은 일 실시예에 따른 스크립트 언어 컴파일 방법은 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 수신하는 단계, 상기 프로그램 소스 코드를 구성하는 복수의 연산식 각각에서 복수의 식별자를 추출하는 단계 및 상기 복수의 연산식 각각에서 추출한 상기 복수의 식별자 각각에 해당하는 정보를 이용하여 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성하는 단계를 포함한다.

Description

SCADA 시스템 및 스크립트 언어 컴파일 방법{SUPERVISORY CONTROL AND DATA ACQUISITION SYSTEM AND SCRIPT LANGUAGE COMPILE METHOD}
본 발명의 일 실시예는 SCADA 시스템 및 스크립트 언어 컴파일 방법에 관한 것이다.
전력계통의 효율적인 제어와 운용을 위해서는 전력계통을 구성하는 각종설비의 모델링뿐만 아니라 실시간 시스템 운용 상태에 대한 정확하고 신뢰할 수 있는 정보가 필요하다. 이러한 목적을 위해 현대의 전력계통은 광범위한 데이터를 취득하는 SCADA(Supervisory Control And Data Acquisition) 시스템을 기본적으로 갖추고 있다.
SCADA 시스템은 필요한데이터들을 수집하고 제공하며, 또한 필요한 원격제어를 가능하게 한다.제어센터의 EMS(Energy Management System)는 이렇게 제공된 데이터들을 기반으로 계통의 운용 상태를 산출하고 네트워크 토폴로지와 계통의 상태를 결정하게 된다.
SCADA 시스템은 아날로그와 상태 정보를 수집하여 데이터를 제어센터로 보내고 원격으로 발전기 출력및 차단기나 변압기 탭을 조절한다. 이러한 SCADA의 주요기능은 크게 데이터 취득, 데이터 처리, 데이터 제공,원격제어등으로 나눌 수 있다.
이러한 SCADA 시스템은 원격지의 기기 상황을 실시간으로 중앙 운영자가 감시하고 제어할 수 있으므로 철도관리 및 제어, 수자원 관리, 송배전 업무, 홍수경보 시스템 등에 실제 적용되고 있다.
종래의 EMS/SCADA 시스템의 연산식 서버에는 어플리케이션이 존재하여 운용자가 정의한 연산을 수행하여 값이 정해지도록 한다. EMS/SCADA 시스템의 연산식 서버는 자체 개발한 스크립트엔진이 탑재되어 있기 때문에, 기본 연산 및 전력 함수 등의 제한된 기능들만 수행이 가능하였다는 문제점이 있었다.
또한, 연산식 서버의 자체 개발한 스크립트엔진은 바이너리 형태 스크립트를 수신하여 연산식을 수행하지만, 바이너리 형태 스크립트는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 구성하는 구성 요소 각각을 이진수 코드로 변환한 파일이기 때문에, 새로운 기능을 구현해야 하는 경우 바이너리 형태 스크립트를 이용하여 새로운 기능을 구현하기 어려우며, 새로운 기능을 구현하더라도 바이너리 형태로 새로운 기능을 구현한 것이기 때문에 디버깅 시 오류가 발생할 수 있어 디버깅에 어려움이 있다.
본 발명은 제1 스크립트 언어의 문법을 이용하여 프로그램 소스 코드를 작성하더라도 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드로 변환할 수 있기 때문에 제1 스크립트 언어의 문법을 이용하여 제2 스크립트 언어의 다양한 기능을 활용할 수 있도록 하는 스크립트 언어 컴파일 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 연산식 서버의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드로 재작성하는 노력과 제2 스크립트 언어를 사용하기 위해 필요로 하는 교육 비용을 절감할 수 있도록 하는 스크립트 언어 컴파일 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 연산식 서버의 스크립트 엔진을 그대로 이용하여 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 디버깅하기 때문에 추가적인 스크립트 엔진의 개발 없이 다양한 요구 사항에 대해 대응이 가능하도록 하는 스크립트 언어 컴파일 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 이용하는 경우 새로운 기능 구현이 가능하고 디버깅이 가능하도록 하는 스크립트 언어 컴파일 방법을 제공하는 것을 목적으로 한다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
이러한 목적을 달성하기 위한 연산식 서버와 연결된 단말 장치에서 실행되는 스크립트 언어 컴파일 방법은 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 수신하는 단계, 상기 프로그램 소스 코드를 구성하는 복수의 연산식 각각에서 복수의 식별자를 추출하는 단계 및 상기 복수의 연산식 각각에서 추출한 상기 복수의 식별자 각각에 해당하는 정보를 이용하여 상기 연산식 서버의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성하는 단계를 포함한다.
또한, 단말 장치 및 연산식 서버를 포함하는 SCADA 시스템은 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 구성하는 복수의 연산식 각각에서 복수의 식별자를 추출하고, 상기 복수의 연산식 각각에서 추출한 상기 복수의 식별자 각각에 해당하는 정보를 이용하여 상기 연산식 서버의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성한 후, 상기 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드 및 연산식 수행 명령을 상기 연산식 서버에 제공하는 단말 장치 및 상기 단말 장치로부터 수신된 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 이용하여 연산식을 수행하는 연산식 서버를 포함한다.
전술한 바와 같은 본 발명에 의하면, 제1 스크립트 언어의 문법을 이용하여 프로그램 소스 코드를 작성하더라도 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드로 변환할 수 있기 때문에 제1 스크립트 언어의 문법을 이용하여 제2 스크립트 언어의 다양한 기능을 활용할 수 있다는 장점이 있다.
또한 본 발명에 의하면, 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 연산식 서버의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드로 재작성하는 노력과 제2 스크립트 언어를 사용하기 위해 필요로 하는 교육 비용을 절감할 수 있다는 장점이 있다.
또한 본 발명에 의하면, 연산식 서버의 스크립트 엔진을 그대로 이용하여 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 디버깅하기 때문에 추가적인 스크립트 엔진의 개발 없이 다양한 요구 사항에 대해 대응이 가능하다는 장점이 있다.
또한 본 발명에 의하면, 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 이용하는 경우 새로운 기능 구현이 가능하고 디버깅이 가능하다는 장점이 있다.
도 1은 일반적인 SCADA 시스템을 설명하기 위한 네트워크 구성도이다.
도 2는 일반적인 연산식 스크립트 컴파일 과정을 설명하기 위한 예시도이다.
도 3은 본 발명의 일 실시예에 따른 SCADA 시스템을 설명하기 위한 네트워크 구성도이다.
도 4는 본 발명의 일 실시예에 따른 연산식 스크립트 컴파일 과정을 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시예에 따른 스크립트 언어 컴파일 방법을 설명하기 위한 흐름도이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로사용된다.
도 1은 일반적인 SCADA 시스템을 설명하기 위한 네트워크 구성도이다.
도 1을 참조하면, SCADA 시스템은 연산식 서버(10) 및 단말 장치(20)를 포함한다.
연산식 서버(10)는 단말 장치(20)로부터 바이너리 형태 스크립트 및 연산식 수행 명령을 수신하면, 연산식 수행 명령에 따라 바이너리 형태 스크립트를 이용하여 연산식을 수행한다. 이러한 연산식 서버(10)는 통신 모듈(11) 및 스크립트 엔진(12)을 포함한다.
통신 모듈(11)은 단말 장치(20)의 통신 모듈(23)을 통해 바이너리 형태 스크립트 및 연산식 수행 명령을 수신하여 스크립트 엔진(12)에 제공한다.
스크립트 엔진(12)은 통신 모듈(11)로부터 바이너리 형태 스크립트 및 연산식 수행 명령을 수신하면, 연산식 수행 명령에 따라 바이너리 형태 스크립트를 이용하여 연산식을 수행한다.
여기에서, 바이너리 형태 스크립트는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 파싱하여 각각의 프로그램 소스 코드를 구성하는 구성 요소(예를 들어, 변수, 키워드 등)를 이진수 코드로 표현한 파일이다. 예를 들어, 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드에서 변수 a를 이진수 코드 1로 변환하여 바이너리 형태 스크립트를 생성할 수 있다.
상기와 같이, 바이너리 형태 스크립트는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 구성하는 구성 요소 각각을 이진수 코드로 변환한 파일이기 때문에, 새로운 기능을 구현해야 하는 경우 바이너리 형태 스크립트를 이용하여 새로운 기능을 구현하기 어려우며, 새로운 기능을 구현하더라도 바이너리 형태로 새로운 기능을 구현한 것이기 때문에 디버깅 시 오류가 발생할 수 있어 디버깅에 어려움이 있다.
단말 장치(20)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 수신하면, 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 컴파일하여 바이너리 형태 스크립트를 생성할 수 있다.
이러한 단말 장치(20)는 데스크 탑, 노트북 등으로 구현될 수 있으며, 스크립트 에디터 관리부(21), 컴파일러(22) 및 통신 모듈(23)을 포함한다.
스크립트 에디터 관리부(21)는 제1 스크립트 언어를 기반으로 프로그램 소스 코드(20a)를 작성할 수 있는 스크립트 에디터를 제공하며, 사용자에 의해 프로그램 소스 코드의 작성이 완료되어 컴파일이 요청되면 프로그램 소스 코드를 컴파일러(22)에 제공한다.
예를 들어, 제1 스크립트 언어가 연산식 스크립트 언어인 경우, 종래에는 연산식 스크립트 언어를 이용하여 프로그래밍하는 경우 연산식 서버(10)에서 연산을 위해 호출되는 함수(예를 들어, setValue, getValue 등)를 직접 사용하여 복잡한 프로그램 코드를 작성해야 한다는 문제점이 있다.
컴파일러(22)는스크립트 에디터 관리부(21)로부터 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 수신하면, 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 파싱하여 바이너리 형태 스크립트를 생성한다.
통신 모듈(23)은 컴파일러(22)에 의해 생성된 바이너리 형태 스크립트(20b) 및 연산식 수행 명령을 연산식 서버(10)에 제공한다.
도 2는 일반적인 연산식 스크립트 컴파일 과정을 설명하기 위한 예시도이다.
도 2를 참조하면, 컴파일러(22)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(20a)를 수신한다. 컴파일러(22)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(20a)를 컴파일하여 바이너리 형태 스크립트(20b)을 생성한다.
컴파일러(220)는 제1 스크립트 언어를 기반으로 작성된 소스 코드(200a)를 분석하여 연산식이“[energy.volt] = [energy.ampere] ×[energy.ohm]“ 이면, 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 파싱하여 각각의 프로그램 소스 코드를 구성하는 구성 요소(예를 들어, 변수, 키워드 등)를 이진수 코드 “21ade180ff0123795:!@#....”로 표현한다.
상기와 같이, 바이너리 형태 스크립트는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 파싱하여 각각의 프로그램 소스 코드를 구성하는 구성 요소(예를 들어, 변수, 키워드 등)를 이진수 코드로 표현한 파일이다. 예를 들어, 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드에서 변수 a를 이진수 코드 1로 변환하여 바이너리 형태 스크립트를 생성할 수 있다.
하지만, 바이너리 형태 스크립트는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 구성하는 구성 요소 각각을 이진수 코드로 변환한 파일이기 때문에, 연산식 서버(100)가 바이너리 형태 스크립트를 이용하여 연산식을 수행할 때 새로운 기능을 구현해야 하는 경우 바이너리 형태 스크립트를 이용하여 새로운 기능을 구현하기 어려우며, 새로운 기능을 구현하더라도 바이너리 형태로 새로운 기능을 구현한 것이기 때문에 디버깅 시 오류가 발생할 수 있어 디버깅에 어려움이 있다.
도 3은 본 발명의 일 실시예에 따른 SCADA 시스템을 설명하기 위한 네트워크 구성도이다.
도 3을 참조하면, SCADA 시스템은 연산식 서버(100) 및 단말 장치(200)를 포함한다.
연산식 서버(100)는 단말 장치(200)로부터 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드(200b) 및 연산식 수행 명령을 수신하면, 연산식 수행 명령에 따라 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드(200b)를 이용하여 연산식을 수행한다. 이러한 연산식 서버(100)는 통신 모듈(110) 및 스크립트 엔진(210)을 포함한다.
통신 모듈(110)은 단말 장치(200)의 통신 모듈(230)을 통해 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드 및 연산식 수행 명령을 수신하여 스크립트 엔진(120)에 제공한다.
스크립트 엔진(120)은 통신 모듈(110)로부터 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드(200b) 및 연산식 수행 명령을 수신하면, 연산식 수행 명령에 따라 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드(200b)를 이용하여 연산식을 수행한다.
이때, 스크립트 엔진(120)은 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드(200b)를 이용하기 때문에, 새로운 기능을 구현해야 하는 경우 동일한 제2 스크립트 언어를 이용하여 새로운 기능을 구현할 수 있으며, 새로운 기능을 구현한 후에 쉽게 디버깅을 할 수 있다.
종래 기술과 본 발명을 비교하여 설명하면, 종래에는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 구성하는 구성 요소 각각을 이진수 코드로 변환한 바이너리 형태 스크립트를 이용하기 때문에, 새로운 기능을 구현해야 하는 경우 바이너리 형태 스크립트를 이용하여 새로운 기능을 구현하기 어려우며, 새로운 기능을 구현하더라도 바이너리 형태로 새로운 기능을 구현한 것이기 때문에 디버깅 시 오류가 발생할 수 있어 디버깅에 어려움이 있었다.
하지만, 본 발명과 같이 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 컴파일하여 연산식 서버(100)의 스크립트 엔진(120)에 해당하는 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)를 생성한 후에, 연산식 서버(100)의 스크립트 엔진(120)에 제공하기 때문에, 스크립트 엔진(120)은 새로운 기능을 구현해야 하는 경우 동일한 제2 스크립트 언어를 이용하여 새로운 기능을 구현할 수 있으며, 새로운 기능을 구현한 후에 쉽게 디버깅을 할 수 있는 것이다.
단말 장치(200)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 수신하면, 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 컴파일하여 연산식 서버(100)의 스크립트 엔진(120)에 해당하는 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)를 생성할 수 있다.
이때, 제1 스크립트 언어 및 제2 스크립트 언어는 서로 다른 종류의 프로그래밍 언어일 수 있다. 예를 들어, 제1 스크립트 언어는 연산식 스크립트 언어일 수 있고, 제2 스크립트 언어는 루아 스크립트 언어일 수 있다.
예를 들어, 제1 스크립트 언어가 연산식 스크립트 언어인 경우, 종래에는 연산식 스크립트 언어를 이용하여 프로그래밍하는 경우 연산식 서버(10)에서 연산을 위해 호출되는 함수(예를 들어, setValue, getValue 등)를 사용하여 프로그램 코드를 작성하여야 하였다.
하지만, 본 발명은 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 컴파일하여 연산식 서버(100)의 스크립트 엔진 해당하는 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)를 생성하기 때문에, 제1 스크립트 언어를 이용하여 프로그래밍하더라도 종래와 같이 연산식 서버(100)에서 연산을 위해 호출되는 함수(예를 들어, setValue, getValue 등)를 사용하여 프로그램 코드를 작성하지 않아도 되기 때문에 제1 스크립트 언어를 제2 스크립트 언어로 재작성하는 노력을 하지 않아도 된다는 장점이 있다.
이러한 단말 장치(200)는 데스크 탑, 노트북 등으로 구현될 수 있으며, 스크립트 에디터 관리부(210), 컴파일러(220) 및 통신 모듈(230)을 포함한다.
스크립트 에디터 관리부(210)는 제1 스크립트 언어를 기반으로 프로그램 소스 코드(200b)를 작성할 수 있는 스크립트 에디터를 제공하며, 사용자에 의해 프로그램 소스 코드의 작성이 완료되어 컴파일이 요청되면 프로그램 소스 코드를 컴파일러(220)에 제공한다.
컴파일러(220)는 스크립트 에디터 관리부(210)로부터 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 수신하면, 식별자 별 정보 데이터베이스를 참조하여 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 컴파일하여 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)를 생성한다.
상기의 식별자 별 정보 데이터베이스에는 연산식에서 사용된 식별자 각각에 대해서 해당 식별자가 지시하는 정보(예를 들어, 특정 발전소에 위치하는 특정 장비의 상태 정보 또는 특정 발전소에 위치하는 특정 장비의 수치 정보 등)가 저장되어 있다.
따라서, 컴파일러(220)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 수신하면, 식별자 별 정보 데이터베이스를 이용하여 프로그램 소스 코드를 구성하는 연산식 각각의 복수의 식별자 중 특정 식별자에 대한 정보를 결정하거나 특정 정보 또는 해당 연산식의 연산 결과를 이용하여 특정 식별자에 해당하는 정보를 결정하여 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)를 생성할 수 있다.
일 실시예에서, 컴파일러(220)는 식별자 별 정보 데이터베이스에서 특정 식별자에 해당하는 정보를 추출한 후, 식별자 별 정보 데이터베이스에서 추출한 특정 식별자에 해당하는 정보의 종류에 따라 수치 정보 또는 상태 정보를 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정한다.
상기의 실시예에서, 컴파일러(220)는 식별자 별 정보 데이터베이스에서 추출한 특정 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 저항 값, 전류 값 또는 전압 값이면, 특정 발전소에 위치하는 특정 장비의 저항 값, 전류 값 또는 전압 값을 특정 식별자에 해당하는 정보로 결정한다.
예를 들어, 연산식 “a = b + c”에서 추출한 식별자 중 특정 식별자 “c”에 해당하는 정보가 발전소 A에 위치하는 장비 B의 전류 값이 “20A” 이면, 발전소A에 위치하는 장비 B의 전류 값 “20A”을 특정 식별자 “c”에 해당하는 정보로 결정한다.
또한, 컴파일러(220)는 식별자 별 정보 데이터베이스에서 추출한 특정 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 상태 값이면, 특정 발전소에 위치하는 특정 장비의 상태 값을 특정 식별자에 해당하는 정보로 결정한다.
예를 들어, 연산식“a = b + c”에서 추출한 식별자 중 특정 식별자 “c”에 해당하는 정보가 발전소 A에 위치하는 장비 B의 상태 값이 “False”이면, 발전소 A에 위치하는 장비 B의 상태 값 “False”을 특정 식별자 “c”에 해당하는 정보로 결정할 수 있다.
다른 일 실시예에서, 컴파일러(220)는 특정 정보 또는 연산식에서 다른 식별자에 해당하는 정보에 따라 결정된 연산식 결과를 특정 식별자에 해당하는 정보로 결정한다.
상기의 실시예에서, 컴파일러(220)는 연산식에서 다른 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 저항 값, 전류 값 또는 전압 값이면, 저항 값, 전류 값 또는 전압 값에 따라 결정된 연산식 결과를 특정 식별자에 해당하는 정보로 결정하거나 특정 수치 값을 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정한다.
예를 들어, 연산식 “a = b + c”에서 추출한 식별자 중 특정 식별이자 “b” 에 해당하는 정보가 발전소 A에 위치하는 장비 B의 전류 값이 “20A” 이고, 특정 식별이자 “c” 에 해당하는 정보가 발전소 A에 위치하는 장비 C의 전류 값이 “30A” 이면, 특정 식별이자 “a” 에 해당하는 발전소 A에 위치하는 장비 D의 전류는 “50A”로 결정한다.
또한, 컴파일러(220)는 연산식에서 다른 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 상태 값이면, 상태 값에 따라 결정된 연산식 결과 또는 특정 상태 값을 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정한다.
예를 들어, 연산식 “a = b AND c”에서 추출한 식별자 중 특정 식별자 “b” 에 해당하는 정보가 발전소 A에 위치하는 장비 B의 상태 값이 “False” 이고, 특정 식별이자 “c” 에 해당하는 정보가 발전소 A에 위치하는 장비 C의 상태 값이 “False” 이면, 특정 식별이자 “a” 에 해당하는 발전소 A에 위치하는 장비 D의 상태 값을 “False”로 결정한다.
상기와 같이, 컴파일러(220)가 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 컴파일하여 연산식 서버(100)의 스크립트 엔진(120)에 해당하는 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)를 생성하여 통신 모듈(230)을 통해 연산식 서버(100)에 제공함으로써 연산식 서버(100)의 스크립트 엔진(120)을 그대로 사용할 수 있어 추가 개발 없이 다양한 요구 사항(예를 들어, 새로운 기능 추가 등)에 대해 대응이 가능하다.
도 4는 본 발명의 일 실시예에 따른 연산식 스크립트 컴파일 과정을 설명하기 위한 예시도이다.
도 4를 참조하면, 컴파일러(220)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 수신한다. 컴파일러(220)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 컴파일하는 과정에서 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200a)를 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)로 변환한다.
컴파일러(220)는 제1 스크립트 언어를 기반으로 작성된 소스 코드(200a)를 분석하여 연산식이 “[energy.volt] = [energy.ampere] ×[energy.ohm]“이면, 식별자 별 정보 데이터베이스에서 [energy.ampere]에 대한정보를 추출하기 위한 getValue(energy.ampere)로 변환하고, 식별자 별 정보 데이터베이스에서 [energy.ohm]에 대한 정보를 추출하기 위한 getValue(energy.ohm)로 변환한다.
그런 다음, 컴파일러(220)는 식별자 별 정보 데이터베이스에서 [energy.volt],[energy.ampere],[energy.ohm] 가 어느 발전소의 어느 장비에 해당하는 수치 정보를 추출한 후, [energy.volt]를 산출하기 위한 코드 energy.volt.value = energy.ampere.value ×energy.ohm.value, energy.volt.quality = energy.ampere.quality ×energy.ohm.quality, energy.volt.limit = energy.ampere.limit ×energy.ohm.limit, energy.volt.tag = energy.ampere.tag ×energy.ohm.tag로 변환한 후, 연산식 결과를 [energy.volt]의 값으로 할당하기 위해 setValue(energy.volt)로 변환한다.
상기와 같이, 컴파일러(220)는 제1 스크립트 언어를 기반으로 작성된 소스 코드(200a)를 이용하여 연산식 서버(100)의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드(200b)를 생성하여 연산식 서버(100)에 제공하기 때문에, 연산식 서버(100)의 스크립트 엔진(120)을 그대로 사용할 수 있어 추가 개발 없이 다양한 요구 사항(예를 들어, 새로운 기능 추가 등)에 대해 대응이 가능하다.
즉, 종래에는 연산식 스크립트 언어를 이용하여 프로그래밍하는 경우 연산식 서버(100)에서 연산을 위해 호출되는 함수(예를 들어, setValue, getValue 등)를 직접 사용하여 복잡한 프로그램 코드를 작성해야 한다는 문제점이 있었다.
하지만, 본 발명과 같이 연산식 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 컴파일하여 연산식 서버(100)의 스크립트 엔진 해당하는 루아 스크립트 언어를 기반으로 작성된 프로그램 소스 코드(200b)를 생성하기 때문에, 연산식 스크립트 언어를 이용하여 프로그래밍하더라도 종래와 같이 연산식 서버(100)에서 연산을 위해 호출되는 함수(예를 들어, setValue, getValue 등)를 사용하여 프로그램 코드를 작성하지 않아도 되기 때문에 연산식 스크립트 언어를 루아 스크립트 언어로 재작성하는 노력을 하지 않아도 된다는 장점이 있다.
도 5는 본 발명의 일 실시예에 따른 스크립트 언어 컴파일 방법을 설명하기 위한 흐름도이다.
도 5를 참조하면, 단말 장치(200)는 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 수신한다(단계 S510). 단말 장치(200)는 프로그램 소스 코드를 구성하는 복수의 연산식 각각에서 복수의 식별자를 추출한다(단계 S520).
단말 장치(200)는 복수의 연산식 각각에서 추출한 상기 복수의 식별자 각각에 해당하는 정보를 이용하여 상기 연산식 서버의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성한다(단계 S530).
단계 S530에 대한 일 실시예에서, 단말 장치(200)는 식별자 별 정보 데이터베이스를 이용하여 특정 식별자에 해당하는 정보를 결정하거나 특정 정보 또는 해당 연산식의 연산 결과를 이용하여 특정 식별자에 해당하는 정보를 결정한다.
보다 구체적으로, 단말 장치(200)는 식별자 별 정보 데이터베이스에서 상기 특정 식별자에 해당하는 정보를 추출하고, 식별자 별 정보 데이터베이스에서 추출한 특정 식별자에 해당하는 정보의 종류에 따라 수치 정보(예를 들어, 저항 값, 전류 값 또는 전압 값 등) 또는 상태 정보(예를 들어, True, False 등)를 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (9)

  1. 연산식 서버와 연결된 단말 장치에서 실행되는 스크립트 언어 컴파일 방법에 있어서,
    제1 스크립트 언어를기반으로 작성된 프로그램 소스 코드를 수신하는 단계;
    상기 프로그램 소스 코드를 구성하는 복수의 연산식 각각에서 복수의 식별자를 추출하는 단계; 및
    상기 복수의 연산식 각각에서 추출한 상기 복수의 식별자 각각에 해당하는 정보를 이용하여 상기 연산식 서버의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성하는 단계를 포함하는 것을 특징으로 하는
    스크립트 언어 컴파일 방법.
  2. 제1항에 있어서,
    상기 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성하는 단계는
    식별자 별 정보 데이터베이스를 이용하여 특정 식별자에 해당하는 정보를 결정하거나 특정 정보 또는 해당 연산식의 연산 결과를 이용하여 특정 식별자에 해당하는 정보를 결정하는 단계를 포함하는 것을 특징으로 하는
    스크립트 언어 컴파일 방법.
  3. 제2항에 있어서,
    상기 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성하는 단계는
    상기 식별자 별 정보 데이터베이스에서 상기 특정 식별자에 해당하는 정보를 추출하는 단계; 및
    상기 식별자 별 정보 데이터베이스에서 추출한 상기 특정 식별자에 해당하는 정보의 종류에 따라 수치 정보 또는 상태 정보를 상기 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정하는 단계를 포함하는 것을 특징으로 하는
    스크립트 언어 컴파일 방법.
  4. 제3항에 있어서,
    상기 특정 식별자에 해당하는 정보의 종류에 따라 수치 정보 또는 상태 정보를 상기 특정 식별자에 해당하는 정보로 결정하는 단계는
    상기 식별자 별 정보 데이터베이스에서 추출한 상기 특정 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 저항 값, 전류 값 또는 전압 값이면, 상기 특정 발전소에 위치하는 특정 장비의 저항 값, 전류 값 또는 전압 값을 상기 특정 식별자에 해당하는 정보로 결정하는 단계; 및
    상기 식별자 별 정보 데이터베이스에서 추출한 상기 특정 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 상태 값이면, 상기 특정 발전소에 위치하는 특정 장비의 상태 값을 상기 특정 식별자에 해당하는 정보로 결정하는 단계를 포함하는 것을 특징으로 하는
    스크립트 언어 컴파일 방법.
  5. 제2항에 있어서,
    상기 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성하는 단계는
    특정 정보 또는 상기 연산식에서 다른 식별자에 해당하는 정보에 따라 결정된 연산식 결과를 상기 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정하는 단계를 포함하는 것을 특징으로 하는 포함하는 것을 특징으로 하는
    스크립트 언어 컴파일 방법.
  6. 제5항에 있어서,
    상기 특정 정보 또는 연산식 결과를 상기 특정 식별자에 해당하는 정보로 결정하는 단계는
    상기 연산식에서 다른 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 저항 값, 전류 값 또는 전압 값이면 상기 저항 값, 전류 값 또는 전압 값에 따라 결정된 연산식 결과 또는 특정 수치 값을 상기 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정하는 단계; 및
    상기 연산식에서 다른 식별자에 해당하는 정보가 특정 발전소에 위치하는 특정 장비의 상태 값이면, 상기 상태 값에 따라 결정된 연산식 결과 또는 특정 상태 값을 상기 특정 식별자에 해당하는 특정 발전소에 위치하는 특정 장비의 정보로 결정하는 단계를 포함하는 것을 특징으로 하는 포함하는 것을 특징으로 하는
    스크립트 언어 컴파일 방법.
  7. 단말 장치 및 연산식 서버를 포함하는 SCADA 시스템에 있어서,
    제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 구성하는 복수의 연산식 각각에서 복수의 식별자를 추출하고, 상기 복수의 연산식 각각에서 추출한 상기 복수의 식별자 각각에 해당하는 정보를 이용하여 상기 연산식 서버의 스크립트 엔진에 해당하는 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 생성한 후, 상기 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드 및 연산식 수행 명령을 상기 연산식 서버에 제공하는 단말 장치;
    상기 단말 장치로부터 수신된 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 이용하여 연산식을 수행하는 연산식 서버를 포함하는 것을 특징으로 하는
    SCADA 시스템.
  8. 제7항에 있어서,
    상기 단말 장치는
    상기 제1 스크립트 언어를 기반으로 프로그램 소스 코드를 작성할 수 있는 스크립트 에디터를 제공하고, 사용자에 의해 프로그램 소스 코드의 작성이 완료되어 컴파일이 요청되면 프로그램 소스 코드를 제공하는 스크립트 에디터 관리부;
    상기 스크립트 에디터 관리부로부터 상기 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 수신하면, 식별자 별 정보 데이터베이스를 참조하여 제1 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 컴파일하여 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 생성하는 컴파일러;
    상기 컴파일러에 의해 생성된 제2 스크립트 언어를 기반으로 작성된 프로그램 소스 코드를 상기 연산식 서버에 제공하는 것을 특징으로 하는
    SCADA 시스템.
  9. 제7항에 있어서,
    상기 연산식 서버는
    상기 단말 장치로부터 상기 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드 및 연산식 수행 명령을 수신하는 통신 모듈 및
    상기 통신 모듈로부터 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드 및 연산식 수행 명령을 수신하면, 연산식 수행 명령에 따라 제2 스크립트 언어를 기반으로 하는 프로그램 소스 코드를 이용하여 연산식을 수행하는 스크립트 엔진을 포함하는 것을 특징으로 하는것을 특징으로 하는
    SCADA 시스템.
KR1020170025982A 2017-02-28 2017-02-28 Scada 시스템 및 스크립트 언어 컴파일 방법 KR20180099044A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170025982A KR20180099044A (ko) 2017-02-28 2017-02-28 Scada 시스템 및 스크립트 언어 컴파일 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170025982A KR20180099044A (ko) 2017-02-28 2017-02-28 Scada 시스템 및 스크립트 언어 컴파일 방법

Publications (1)

Publication Number Publication Date
KR20180099044A true KR20180099044A (ko) 2018-09-05

Family

ID=63594661

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170025982A KR20180099044A (ko) 2017-02-28 2017-02-28 Scada 시스템 및 스크립트 언어 컴파일 방법

Country Status (1)

Country Link
KR (1) KR20180099044A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107665112A (zh) * 2017-09-29 2018-02-06 北京紫优能源科技有限公司 一种电力控制流程的组态方法及装置
CN112346726A (zh) * 2020-03-16 2021-02-09 成都华微电子科技有限公司 一种基于表单信息自动化生成设计代码的方法
CN113672985A (zh) * 2021-08-25 2021-11-19 支付宝(杭州)信息技术有限公司 用于隐私保护的机器学习算法脚本编译方法和编译器

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107665112A (zh) * 2017-09-29 2018-02-06 北京紫优能源科技有限公司 一种电力控制流程的组态方法及装置
CN107665112B (zh) * 2017-09-29 2021-03-02 紫光测控有限公司 一种电力控制流程的组态方法及装置
CN112346726A (zh) * 2020-03-16 2021-02-09 成都华微电子科技有限公司 一种基于表单信息自动化生成设计代码的方法
CN112346726B (zh) * 2020-03-16 2023-12-12 成都华微电子科技股份有限公司 一种基于表单信息自动化生成设计代码的方法
CN113672985A (zh) * 2021-08-25 2021-11-19 支付宝(杭州)信息技术有限公司 用于隐私保护的机器学习算法脚本编译方法和编译器
WO2023024735A1 (zh) * 2021-08-25 2023-03-02 支付宝(杭州)信息技术有限公司 用于隐私保护的机器学习算法脚本编译方法和编译器
CN113672985B (zh) * 2021-08-25 2023-11-14 支付宝(杭州)信息技术有限公司 用于隐私保护的机器学习算法脚本编译方法和编译器

Similar Documents

Publication Publication Date Title
US10204034B2 (en) System and method for testing software applications in a software defined network
CA2956364C (en) System and method for coverage-based automated test case augmentation for design models
Perrotin et al. TASTE: a real-time software engineering tool-chain overview, status, and future
Santos et al. Static-time extraction and analysis of the ROS computation graph
CN103823666A (zh) 一种智能变电站设备可视化编程方法
US20160274870A1 (en) Design framework for an iot system
Aggarwal et al. Test case generation from uml state machine diagram: A survey
CN104461528A (zh) 一种可视化生成面向信号应用程序代码的方法及装置
KR20180099044A (ko) Scada 시스템 및 스크립트 언어 컴파일 방법
US20150317127A1 (en) System for metamodeling unification
Zhabelova et al. Towards software metrics for evaluating quality of IEC 61499 automation software
Hametner et al. A unit-test framework for event-driven control components modeled in IEC 61499
Seiger et al. Test modeling for context-aware ubiquitous applications with feature petri nets
CN109086044B (zh) 一种基于组件的仿真模型开发方法
KR20180125156A (ko) 제어 모델들에 의하여 기술 시스템을 제어하기 위한 방법 및 디바이스
CN114090365A (zh) 使用动态链接库进行功能测试的方法、装置和设备
CN110442520B (zh) 一种基于plc编程语言的交叉调试系统及方法
CN113885844A (zh) 一种业务服务编排方法及相关装置
Strasser et al. Engineering and validating cyber-physical energy systems: Needs, status quo, and research trends
Zanabria et al. Towards an integrated development of control applications for multi-functional energy storages
KR101830582B1 (ko) 전력계통 해석을 위한 주파수조정용 bess의 모의해석 프로그램
CN117420985B (zh) 一种使用JavaScript封装安卓服务功能的方法
O'Donnell et al. Implementing ATML into an existing software architecture
Wotawa et al. The Java2CSP debugging tool utilizing constraint solving and model-based diagnosis principles
EP4231204A1 (en) System for developing and running applications in hybrid quantum computing networks