KR102509859B1 - Plc 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법 - Google Patents

Plc 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법 Download PDF

Info

Publication number
KR102509859B1
KR102509859B1 KR1020210051743A KR20210051743A KR102509859B1 KR 102509859 B1 KR102509859 B1 KR 102509859B1 KR 1020210051743 A KR1020210051743 A KR 1020210051743A KR 20210051743 A KR20210051743 A KR 20210051743A KR 102509859 B1 KR102509859 B1 KR 102509859B1
Authority
KR
South Korea
Prior art keywords
information
unit
coordinates
child
units
Prior art date
Application number
KR1020210051743A
Other languages
English (en)
Other versions
KR20220145096A (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 KR1020210051743A priority Critical patent/KR102509859B1/ko
Priority to US17/722,580 priority patent/US20220342376A1/en
Publication of KR20220145096A publication Critical patent/KR20220145096A/ko
Application granted granted Critical
Publication of KR102509859B1 publication Critical patent/KR102509859B1/ko

Links

Images

Classifications

    • 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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • 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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • 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/10Plc systems
    • G05B2219/11Plc I-O input output
    • G05B2219/1126Conversion table between original defined module address and actual physical address
    • 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/10Plc systems
    • G05B2219/12Plc mp multi processor system
    • G05B2219/1215Master slave system
    • 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/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13057Automatic search for unused, available address; assign to symbol
    • 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/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13069Execute bit operation during instruction fetch cycle for word operation
    • 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/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13076Interprete in pc a ladder diagram, use of sequence engine
    • 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/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13105Two or more languages, ladder diagram or progression, basic program
    • 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/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13116Machine code, instruction for processor

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

본 발명에 따른, PLC 래더정보로부터 공용 명령어정보를 추출하는 장치는 PLC 래더정보가 변환된 XML 정보로부터 제어로직정보를 추출하는 로직정보 추출부; 및 상기 로직정보 추출부에서 추출된 상기 제어로직정보를 공용 명령어정보로 변환하는 공용 명령어 변환부를 포함하고, 상기 로직정보 추출부는, 상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 상기 제어로직정보를 추출하는 것을 특징으로 한다.

Description

PLC 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법{Apparatus and method for extracting common command information from PLC ladder information}
본 발명은 PLC(Programmable Logic Controller) 제어 프로그램의 공용형식 변환 기술에 관한 것으로, 보다 상세하게는 XML 정보로 변환된 PLC 래더정보를 이용 가능한 공용 명령어정보로 변환하기 위한 기술에 관한 것이다.
PLC(Programmable Logic Controller)는 자동화 산업의 공정제어를 위한 안정성이 보장된 제어장치로써, 다품종 소량생산으로 인한 현장의 잦은 시스템 변경에 대응하기 위해 프로그램이 가능하며 소규모이고 시스템 변경에 비교적 자유로운 제어기의 필요성에서부터 개발되었다.
PLC를 동작하기 위한 프로그래밍 언어에는 LD(Ladder Diagram), FBD(Function Block Diagram), ST(Structured Text), IL(Instruction List), SFC(Sequential Function Chart), CFC(Continuous Function Chart) 등이 있으며, 국제 규격 IEC 61131-3에 규정되어 있다.
PLC 제어 프로그램의 구조는 크게 PLC의 접점에 대한 정보를 담고 있는 태그 정보와 구동되는 PLC 프로그램에 대한 정보를 담고 있는 로직 정보로 구분할 수 있다. 이 중 로직 정보는 자동화 공정을 운영하는데 있어서 가장 기본이 되는 요소로써 설비/공정/라인 제어를 위한 시퀀스(sequence)와 조건 등에 대한 정보를 모두 포함하고 있어서, 최근 공정 운영 최적화 방법에 대한 관심이 높아지고 있는 상황에서, 공정 운영 분석을 위한 핵심 정보로 사용될 수 있다.
PLC 제어 프로그램의 제어 로직은 다양한 PLC 프로그래밍 언어들 중 언어의 직관성과 단순함으로 인하여 산업 현장 대부분에서 LD로 프로그래밍 되고 있다. LD는 스텝(step) 별로 출력을 위한 접점(Contact)들을 AND, OR구조로 배치하고 다양한 산술, 함수 등을 사용하여 공정제어를 위한 시퀀스와 조건 등의 작성이 이루어지도록 한다.
LD로 작성된 PLC 제어 프로그램은 처리 및 분석을 위해서 텍스트(Text) 기반의 PLC 제어 프로그램으로 변환된다. 텍스트 기반의 PLC 제어 프로그램의 형태는 PLC 제조사 별로 상이하다. PLC 제조사인 미쯔비시(MITSUBISHI)와 LS 산전의 경우 IL을 이용하여 PLC 제어 프로그램의 제어 로직을 텍스트로 표현하며, 지멘스(SIEMENS)사의 경우 STL로 PLC 제어 프로그램의 제어 로직을 텍스트로 표현하며, Rockwell 사의 경우 자사의 플랫폼에 따라 PLC 제어 프로그램의 제어 로직을 텍스트로 표현한다.
사용자는 PLC 제조사마다 제공하는 PLC 프로그래밍 소프트웨어를 이용하여 LD로 작성된 PLC 제어프로그램의 제어 로직을 직관적으로 또는 쉽게 이해할 수 있다.
공정 운영 분석을 위해 추출해내는 텍스트 기반의 PLC 제어 프로그램의 제어 로직의 경우 LD의 형태가 아닌 PLC 제조사별로 상이한 구조를 갖기 때문에, 사용자는 각 PLC 제조사별 PLC 제어프로그램의 제어 로직을 분석하기 위해서 각 PLC 제조사별 PLC 제어프로그램의 제어 로직의 표현방법을 파악하고 있어야 한다.
특히, 최근에는 XML을 통해 PLC 래더 프로그램의 태그 정보와 래더 이미지 정보를 저장한다. 그런데, 아직, XML 구조를 제어 로직 및 공용 명령어로 변환할 수 있는 기술에 개발되어 있지 아니하므로, XML 정보로 변환된 PLC 래더정보에 대해 효과적으로 활용하는데 한계가 있다.
대한민국 등록특허 제10-0931004호(등록일: 2009년 12월 02일)
본 발명이 해결하고자 하는 과제는 XML 정보로 변환되어 있는 PLC 래더정보를 공용 명령어정보로 변환하기 위한 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법에 관한 것이다.
상기의 과제를 해결하기 위한 본 발명에 따른, PLC 래더정보로부터 공용 명령어정보를 추출하는 장치는 PLC 래더정보가 변환된 XML 정보로부터 제어로직정보를 추출하는 로직정보 추출부; 및 상기 로직정보 추출부에서 추출된 상기 제어로직정보를 공용 명령어정보로 변환하는 공용 명령어 변환부를 포함하고, 상기 로직정보 추출부는, 상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 상기 제어로직정보를 추출하는 것을 특징으로 한다.
상기 XML 정보는, 상기 PLC 래더정보를 구성하는 세로선, 가로선, 자동완성 가로선, A접점, B접점, 입력펄스, NPLUS, 출력접점, 닫힌 출력접점, SET, RESET, 펄스코일, NPLUS 코일, 펑션 및 NOT을 포함하는 유닛들 각각에 대한 타입이 XML 언어로 변환된 것을 특징으로 한다.
상기 로직정보 추출부는, 상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점을 포함하는 유닛들에 대한 기본유닛 테이블정보를 생성하고, 상기 XML 정보를 이용하여, 상기 기본유닛 테이블정보에 포함된 각각의 유닛들의 하위 트리구조에 대응하는 각각의 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하고, 상기 자식유닛들에 대응하는 부모유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 테이블정보 생성모듈; 및 상기 자식유닛들과 상기 부모유닛들 사이의 관계에 따라, 상기 유닛 테이블 정보에서 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록을 생성하고, 생성된 블록들이 최종 하나의 단일 블록이 생성될 때까지 반복하여 상기 제어로직정보를 추출하는 블록 생성모듈을 포함하는 것을 특징으로 한다.
상기 테이블정보 생성모듈은, 상기 XML 정보에서 주소값, 좌표값, 펑션여부, 함수 맴버 포함여부, 파라미터 값, 및 유닛 타입을 포함하는 기본유닛 테이블정보를 생성하는 것을 특징으로 한다.
상기 테이블정보 생성모듈은, 상기 자식 유닛의 설정을 위해, 타겟 유닛과 탐색 좌표를 선택하고, 상기 탐색 좌표에 +3, +2, 및 -1022의 값을 더하여 연산 좌표를 산출하는 것을 특징으로 한다.
상기 테이블정보 생성모듈은, 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 아래에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출하고, 상기 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 위에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출하는 것을 특징으로 한다.
상기 테이블정보 생성모듈은, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선, 자동완성 가로선 및 세로선을 제외한 유닛이 존재하면 해당 유닛을 자식유닛으로 설정하는 것을 특징으로 한다.
상기 테이블정보 생성모듈은, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선이 나오면 상기 현재의 탐색 좌표에 3을 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 자동완성 가로선이 나오면 현 탐색 좌표에 +3과 상기 자동완성 가로선의 길이값을 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 한다.
상기 테이블정보 생성모듈은, 상기 현재의 탐색 좌표에 +2를 더한 연산 좌표 상에 세로선이 나오면 상기 현재의 탐색 좌표에 +1024를 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 -1022를 더한 연산 좌표 상에 상기 세로선이 나오면 상기 현재의 탐색 좌표에 -1024를 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 한다.
상기 블록 생성모듈은, 블록 생성을 위한 타겟 유닛의 자식 유닛이 한개이고, 해당 자식 유닛의 부모 유닛도 해당 타겟 유닛 하나뿐인 경우에는 해당 타겟 유닛과 자식 유닛에 대해 AND 조건을 만족하는 멤버로서 그룹핑하여 블록을 설정하는 것을 특징으로 한다.
상기 블록 생성모듈은, 블록 생성을 위한 타겟유닛의 자식유닛들에 대응하는 부모유닛들 중에서 타겟유닛의 부모유닛과 같은 객체의 개수와 상기 타겟유닛의 자식유닛들에 대응하는 조상유닛들 중에서 상기 타겟유닛의 부모유닛과 같은 객체의 개수가 동일한 경우에, 해당 타겟 유닛과 자식 유닛에 대해 OR 조건을 만족하는 멤버(member)로서 그룹핑하여 블록을 설정하는 것을 특징으로 한다.
상기의 과제를 해결하기 위한 본 발명에 따른, PLC 래더정보로부터 공용 명령어정보를 추출하는 방법은 PLC 래더정보가 변환된 XML 정보로부터 제어로직정보를 추출하는 단계; 및 상기 추출된 제어로직정보를 공용 명령어정보로 변환하는 단계를 포함하고, 상기 제어로직정보를 추출하는 단계는, 상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 상기 제어로직정보를 추출하는 것을 특징으로 한다.
상기 제어로직정보를 추출하는 단계는, 상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점을 포함하는 유닛들에 대한 기본유닛 테이블정보를 생성하는 단계; 상기 XML 정보를 이용하여, 상기 기본유닛 테이블정보에 포함된 각각의 유닛들의 하위 트리구조에 대응하는 각각의 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계; 상기 XML 정보를 이용하여, 상기 자식유닛들에 대응하는 부모유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계; 및 상기 자식유닛들과 상기 부모유닛들 사이의 관계에 따라, 상기 유닛 테이블 정보에서 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록을 생성하고, 생성된 블록들이 최종 하나의 단일 블록이 생성될 때까지 반복하여 상기 제어로직정보를 추출하는 단계를 포함하는 것을 특징으로 한다.
상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 자식 유닛의 설정을 위해, 타겟 유닛과 탐색 좌표를 선택하고, 상기 탐색 좌표에 +3, +2, 및 -1022의 값을 더하여 연산 좌표를 산출하는 것을 특징으로 한다.
상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 아래에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출하고, 상기 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 위에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출하는 것을 특징으로 한다.
상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선, 자동완성 가로선 및 세로선을 제외한 유닛이 존재하면 해당 유닛을 자식유닛으로 설정하는 것을 특징으로 한다.
상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선이 나오면 상기 현재의 탐색 좌표에 3을 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 자동완성 가로선이 나오면 현 탐색 좌표에 +3과 상기 자동완성 가로선의 길이값을 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 한다.
상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 현재의 탐색 좌표에 +2를 더한 연산 좌표 상에 세로선이 나오면 상기 현재의 탐색 좌표에 +1024를 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 -1022를 더한 연산 좌표 상에 상기 세로선이 나오면 상기 현재의 탐색 좌표에 -1024를 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 한다.
상기 제어로직정보를 추출하는 단계는, 블록 생성을 위한 타겟 유닛의 자식 유닛이 한개이고, 해당 자식 유닛의 부모 유닛도 해당 타겟 유닛 하나뿐인 경우에는 해당 타겟 유닛과 자식 유닛에 대해 AND 조건을 만족하는 멤버로서 그룹핑하여 블록을 설정하는 것을 특징으로 한다.
상기 제어로직정보를 추출하는 단계는, 블록 생성을 위한 타겟유닛의 자식유닛들에 대응하는 부모유닛들 중에서 타겟유닛의 부모유닛과 같은 객체의 개수와 상기 타겟유닛의 자식유닛들에 대응하는 조상유닛들 중에서 상기 타겟유닛의 부모유닛과 같은 객체의 개수가 동일한 경우에, 해당 타겟 유닛과 자식 유닛에 대해 OR 조건을 만족하는 멤버(member)로서 그룹핑하여 블록을 설정하는 것을 특징으로 한다.
본 발명에 따르면, XML 정보에서 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 상기 제어로직정보를 추출하고, 이것으로부터 공용 명령어정보로 변환할 수 있도록 함으로써, 어떠한 XML 문서일지라도 공용 명령어정보로 변환할 수 있기 때문에, XML 정보로 변환된 PLC 래더정보에 대한 높은 활용성을 가능하게 하는 효과가 있다.
텍스트 파싱은 명령어마다 공용 명령어와 매핑시켜야 하는데 명령어의 종류가 제조사마다 매우 상이하다. 따라서, 부정확한 매핑이 발생할 소지가 있으며 모든 텍스트에 대해 완벽하게 동작할 텍스트 파싱 기준을 잡기 매우 어렵기 때문에 간혹 예외적인 상황(잘못된 공용 명령어정보 추출)이 야기될 수 있다. XML 해석을 통한 공용 명령어 추출은 저장해야 할 기준 정보의 양이 적고, 위치 정보를 활용한 몇 가지 연산(텍스트 파싱에 비해 상대적으로 적은 기준)만을 지속 활용하기 때문에 모든 경우를 대응하기에 용이하다. 실제로 기존 텍스트 파싱에서 실패한 래더 정보를 XML을 통한 변환 과정에 성공하였다.
텍스트 파싱은 저장된 모든 텍스트를 파싱해야 하는데, 매우 많은 파싱 기준이 있어서 단순히 한 번 읽는 것으로 끝나지 않고 별도의 저장 과정과 이후 반복적인 탐색이 요구되어 많은 연산량을 필요로 한다. 반면 XML은 구조 자체가 계층적이며, 유닛 간의 부모, 자식 관계 매핑을 위해 한 번만 읽어주면 되기 때문에 훨씬 빠르다.
기존의 제어 프로그램의 검증 방법은 작업자의 수작업과 Simulation으로 진행되어 왔으나 많은 시간과 노력이 소모되었다. 사람이 직집적으로 분석하기 힘든 기계 제어 언어(Low Level Language)를 공용 명령어 형태로 변환하여 PLC 제조사마다 상이한 분석 서비스에서 벗어나 동일한 분석을 가능하게 한다. 그에 따라, 공용 명령어 형태로 변환된 제어 프로그램을 해석 및 분석하여 공정 분석의 효율과 효과를 높일 수 있다.
도 1은 본 발명에 따른 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치를 설명하기 위한 일 실시예의 구성 블록도이다.
도 2a는 일 실시예의 PLC 래더정보를 나타내고, 도 2b는 도 2a에 도시된 PLC 래더정보가 변환되어 XML 정보로 표현된 것을 예시하는 참조도이다.
도 3은 유닛의 종류에 따른 명칭과 XML 정보로 표현되는 형태를 예시하는 테이블정보이다.
도 4a 및 도 4b는 유닛의 종류 중 가로선에 관한 특징을 설명하기 위한 참조도이다.
도 4c는 유닛의 종류 중 Location에 대한 속성을 설명하기 위한 참조도이다.
도 4d는 유닛의 종류 중 Param, Name, Size에 대한 속성을 설명하기 위한 참조도이다.
도 5는 도 1에 도시된 로직정보 추출부(110)를 설명하기 위한 일 실시예의 구성 블록도이다.
도 6a는 일 실시예의 PLC 래더정보를 나타내고, 도 6b는 도 6a에 도시된 PLC 래더정보가 XML로 변환된 XML 정보를 나타내고, 도 6c는 도 6b에 도시된 XML 정보를 테이블화한 XML 테이블정보를 예시한다.
도 7은 도 6c에 도시된 XML 테이블정보로부터 생성된 기본유닛 테이블정보를 예시하는 참조도이다.
도 8은 테이블정보 생성모듈이 XML 정보를 이용하여 자식 유닛을 설정하는 일 실시예의 참조도이다.
도 9는 테이블정보 생성모듈이 XML 정보를 이용하여 자식 유닛을 설정하는 다른 실시예의 참조도이다.
도 10은 테이블정보 생성모듈이 XML 정보를 이용하여 자식 유닛을 설정하는 또다른 실시예의 참조도이다.
도 11은 테이블정보 생성모듈이 기본유닛 테이블정보를 이용해 부모 유닛을 설정하는 일 실시예의 참조도이다.
도 12는 테이블정보 생성모듈에 의해 업데이트된 기본유닛 테이블정보를 예시하는 참조도이다.
도 13a는 블록 생성모듈에 의해 블록이 생성된 상태를 이미지화한 일 실시예의 참조도이다.
도 13b는 도 13a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 14a는 블록 생성모듈에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이다.
도 14b는 도 14a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 15a는 블록 생성모듈에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이다.
도 15b는 도 15a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 16a는 블록 생성모듈에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이다.
도 16b는 도 16a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 17a는 블록 생성모듈에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이다.
도 17b는 도 17a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 18a는 블록 생성모듈에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이다.
도 18b는 도 18a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 19a는 블록 생성모듈에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이다.
도 19b는 도 19a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 20은 공용 명령어 변환부에 의해 제어로직정보가 공용 명령어정보로 변환된 상태를 나타내는 참조도이다.
도 21은 본 발명에 따른 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법을 설명하기 위한 일 실시예의 플로차트이다.
도 22는 도 21에 도시된 제어로직정보를 추출하는 단계를 설명하기 위한 일 실시예의 플로차트이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 
본 발명의 실시예들은 당해 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위하여 제공되는 것이며, 아래의 실시예들은 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 아래의 실시예들로 한정되는 것은 아니다. 오히려, 이들 실시예는 본 개시를 더욱 충실하고 완전하게 하며 당업자에게 본 발명의 사상을 완전하게 전달하기 위하여 제공되는 것이다. 이하, 본 발명의 실시예들은 본 발명의 실시예들을 개략적으로 도시하는 도면들을 참조하여 설명한다.
도 1은 본 발명에 따른 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치(이하, 공용 명령어 추출장치라 칭한다)를 설명하기 위한 일 실시예의 구성 블록도이다.
도 1을 참조하면, 본 발명에 따른 공용 명령어 추출장치는(100)는 로직정보 추출부(110) 및 공용 명령어 변환부(120)를 포함한다.
로직정보 추출부(110)는 PLC 래더정보가 변환된 XML 정보로부터 제어로직정보를 추출한다.
여기서, XML 정보는 PLC 래더정보에 해당하는 태그 정보와 래더 이미지 정보를 포함하고 있다. 예를 들어, XML 정보는 PLC 래더정보를 구성하는 세로선, 가로선, 자동완성 가로선, A접점, B접점, 입력펄스, NPLUS, 출력접점, 닫힌 출력접점, SET, RESET, 펄스코일, NPLUS 코일, 펑션 및 NOT을 포함하는 유닛들에 대해 각각 XML 표현문구로 변환된 것일 수 있다.
도 2a는 일 실시예의 PLC 래더정보를 나타내고, 도 2b는 도 2a에 도시된 PLC 래더정보가 변환되어 XML 정보로 표현된 것을 예시하는 참조도이다.
도 2a 및 도 2b를 참조하면, XML의 ‘POU’ 노드는 하위 노드로 ‘Programs’를 갖는다. Programs 노드는 래더 프로그램의 집합을 나타낸다. 따라서 Programs 노드의 하위 노드로 Program 노드들이 존재한다. Program 노드의 하위 노드로 Body LDRoutine 스텝)을 차례로 거치게 되면 하나의 래더 스텝에 대한 정보를 얻을 수 있다. Step노드의 하위 노드로 유닛(Unit) 노드들이 위치한다. 유닛은 하나의 래더 스텝을 이미지로 표현할 때 그려지는 기본 단위이다. 도 2b에 도시된 바와 같이, XML 이미지 구조에서는 어떠한 제어 로직 정보도 표면화 되어있지는 않다.
도 2a에서‘A01’의 이름을 갖는 접점은 일반적으로 A접점이라 하며 하나의 유닛으로 표현된다. A04나 A02 같은 다른 접점들 역시 하나의 유닛이다. 여기까지는 기존 il파일과 비슷하다. 하지만 XML 정보는 기본적으로 이미지를 정보화했기 때문에 라인도 유닛으로 처리한다. 예를 들어, A02과 Y01 사이에 위치한 긴 가로선 역시 하나의 유닛이고, A02에서 A03으로 내려가는 두 개의 세로선 역시 유닛이다. 유닛 뒤의 숫자는 XML 구조 상에서 등장하는 순서이다.
유닛은 'UnitType’ 속성, ‘Location’ 속성, 그리고 경우에 따라 ‘Param’ or ‘Size’ 속성을 가지며, UnitType이 A나 OUT인 유닛은 주소값 Address(예를 들어, P00001)를 갖는다.
도 3은 유닛의 종류에 따른 명칭과 XML 정보로 표현되는 형태를 예시하는 테이블정보이다.
UnitType은 XML 상에서 숫자로 표기되며, 이미지 종류에 따라 부여된다. AND 조건과 OR 조건과 같은 관계성은 표현되지 않는다. 가로선과 자동완성 가로선의 경우 구분이 필요하다.
도 4a 및 도 4b는 유닛의 종류 중 가로선에 관한 특징을 설명하기 위한 참조도이다.
도 4a 및 도 4b를 참조하면, 가로선을 나타내는 UnitType은 타입 1과 타입 2로 총 2가지가 있다. 도 4a에 해당하는 타입 1은 셀 한칸을 차지하는 가로선이다. 도 5b에 해당하는 타입 2은 자동완성 가로선이다. 한 래더 스텝은 출력부에 접점이 반드시 위치해야하며, 입력부의 접점들은 최종적으로 출력 접점과 연결되어야 한다. 입력접점은 ‘A01’, 출력접점은 ‘Y01’이다. 이 둘 사이는 라인으로 이어져 있어야 한다. 도 4a에서와 같이 셀 한칸 단위의 가로선을 반복해서 넣어 이어줄 수도 있으나 반복 작업을 여러 번 해야하는 불편함이 있다. 그래서, 출력접점이 입력되면 무조건 앞에 자동완성 가로선이 생성된다. 자동완성 가로선의 길이는 상황에 따라 다르며 길이가 0일 수도 있다.
도 4c는 유닛의 종류 중 Location에 대한 속성을 설명하기 위한 참조도이다.
도 4c를 참조하면, Location은 좌표값으로 해당 유닛이 어느 위치에 있는지 알려주는 정보이다. Location에는 다음의 규칙이 존재한다.
첫번째, 좌우 유닛 간 좌표값의 차이는 3이다. 다만, 유닛이 펑션이면, (펑션의 파라미터 + 1)*3 만큼의 차이를 갖는다. 두번째, 세로선과 세로선이 나오기 전 유닛의 좌표값 차이는 2이다. 세번째, 자동완성 이후 등장하는 유닛의 좌표는 자동완성 유닛의 속성 (‘Param’의 값 + 3or2)이다. 네번째, 위 아래 유닛들 간의 좌표값 차이는 1024이다. 이러한 규칙에 따르면, ‘A03’에서 ‘두 번째 세로선'의 좌표값을 구하려면49165 + 2 = 48143의 값을 얻을 수 있다.
도 4d는 유닛의 종류 중 Param, Name, Size에 대한 속성을 설명하기 위한 참조도이다. Param 및 Name은 FUNC인 함수에서 함수 인자와 함수 이름을 나타낸다. 또한, Size는 LHORIZONTAL인 자동완성 가로선의 길이를 나타낸다.
도 4d를 참조하면, LHORIZONTAL인 유닛이 갖는 Size는 위치값에 영향을 준다. 자동완성 가로선 이후에 등장하는 유닛의 좌표는 이 Size값에 3 or 2(세로선이 나올 때만 2)를 더한 값을 갖게 된다.
한편, FUNC은 기본 Function들이다. 도 4d에서 ‘ADDB’라는 함수가 등장하는데, 이 함수는 인자와 반환값으로 총 3개의 Unit를 필요로 한다. 여기서는 ‘A01‘, ‘A02’, ‘A03’이 사용된다. FUNC인 유닛의 Params은 이런 인자들이 내포된다. Name은 함수의 이름인 ADDB이다.
유닛들 중에는 Address를 갖는 유닛들도 있으며, 접점들은 Address로 자신의 디바이스 주소를 갖는다. 도 4d에서는 첫 유닛이 Address로 자신의 주소인 ‘P00001’을 갖는 것을 확인할 수 있다.
로직정보 추출부(110)는 XML 정보에서 상기 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 제어로직정보를 추출한다.
도 5는 도 1에 도시된 로직정보 추출부(110)를 설명하기 위한 일 실시예의 구성 블록도이다.
도 5를 참조하면, 로직정보 추출부(110)는 테이블정보 생성모듈(110-1) 및 블록 생성모듈(110-2)을 포함한다.
테이블정보 생성모듈(110-1)은 XML 정보에서 PLC 래더정보를 구성하는 접점 을 포함하는 유닛에 대한 기본유닛 테이블정보를 생성한다. 기본유닛은 PLC 래더정보 중에서 가로선, 세로선, 자동완성 가로선을 제외한 유닛들을 의미한다.
도 6a는 일 실시예의 PLC 래더정보를 나타내고, 도 6b는 도 6a에 도시된 PLC 래더정보가 XML로 변환된 XML 정보를 나타내고, 도 6c는 도 6b에 도시된 XML 정보를 테이블화한 XML 테이블정보를 예시한다. 도 6c에 도시된 바와 같이, XML 테이블정보는 주소값(Address), 좌표값(Position), 펑션여부(isFunc), 함수 맴버 포함여부(Member), 파라미터 값(Size/Parm), 및 유닛 타입(Type)을 포함하는 정보를 갖는다.
테이블정보 생성모듈(110-1)은 XML 테이블정보에서 기본유닛들에 대한 주소값, 좌표값, 펑션여부, 함수 맴버 포함여부, 파라미터 값, 및 유닛 타입을 포함하는 기본유닛 테이블정보를 생성한다. 이때, 테이블정보 생성모듈(110-1)은 생성된 기본유닛 테이블정보에 포함된 각각의 유닛에 키값(Key)을 할당한다.
도 7은 도 6c에 도시된 XML 테이블정보로부터 생성된 기본유닛 테이블정보를 예시하는 참조도이다. 도 7에 도시된 바와 같이, 기본유닛 테이블정보는 테이블정보 생성모듈(110-1)에 의해 각각의 유닛에 할당된 키값을 포함하고 있다.
테이블정보 생성모듈(110-1)은 기본유닛 테이블정보에 포함된 각각의 유닛들의 하위 트리구조에 대응하는 자식유닛 설정을 통해 상기 기본유닛 테이블정보를 업데이트한다.
먼저, 테이블정보 생성모듈(110-1)은 자식 유닛의 설정을 위해, 타겟 유닛과 탐색 좌표를 선택한다. 최초의 타겟 유닛은 입력 접점일 수 있으며, 최초 탐색 좌표는 타겟 유닛의 좌표이다. 단 타겟유닛이 Function인 경우에는 현재 좌표에서 인자 개수*3만큼 더해준 값이 타겟유닛의 탐색 좌표가 된다.
테이블정보 생성모듈(110-1)은 탐색 좌표에 +3, +2, 또는 -1022의 값을 더하여 연산 좌표를 산출한다. 다만, 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 아래에 존재하는 경우에, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출한다. 또한, 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 위에 존재하는 경우에, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출한다.
테이블정보 생성모듈(110-1)은 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선, 자동완성 가로선 및 세로선을 제외한 유닛이 존재하면 해당 유닛을 자식유닛으로 설정한다.
또한, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선이 나오면 현 탐색 좌표에 3을 더한 값을 새로운 탐색 좌표로 설정한다.
또한, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 자동완성 가로선이 나오면 현 탐색 좌표에 3 + Size값을 더한 값을 새로운 탐색 좌표로 설정한다. 여기서, Size값은 자동완성 가로선의 길이값을 의미한다.
또한, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표에 +2를 더한 연산 좌표 상에 세로선이 나오면 현 탐색 좌표에 +1024를 더한 값을 새로운 탐색 좌표로 설정한다.
또한, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표에 -1022를 더한 연산 좌표 상에 세로선이 나오면 현 탐색 좌표에 -1024를 더한 값을 새로운 탐색 좌표로 설정한다.
도 8은 테이블정보 생성모듈(110-1)이 XML 정보를 이용하여 자식 유닛을 설정하는 일 실시예의 참조도이다.
도 8을 참조하면, 타겟 유닛 A01에 대한 탐색 좌표는 타겟 유닛의 좌표인 17409이다. 테이블정보 생성모듈(110-1)은 17409에 +3, +2 또는 -1022를 각각 더한다. 이 때, 17409에 +3을 더하면 연산 좌표 17412에 대응하는 좌표에 가로선, 자동완성 가로선 또는 세로선이 아닌 유닛 A02가 존재하면, 테이블정보 생성모듈(110-1)은 유닛 A02를 타겟 유닛 A01에 대한 자식 유닛으로 설정한다.
도 9는 테이블정보 생성모듈(110-1)이 XML 정보를 이용하여 자식 유닛을 설정하는 다른 실시예의 참조도이다.
도 9를 참조하면, 타겟 유닛 $<은 Function이고, 2개의 인자를 갖는다. 따라서, 테이블정보 생성모듈(110-1)은 현재 좌표인 17427 + 2*3 = 17433을 타겟 유닛 $<에 대한 타겟 좌표로 설정한다.
테이블정보 생성모듈(110-1)은 17433에 +3, +2, 또는 -1022를 각각 더한다. 예를 들어, 17433에 +3을 더하면 연산 좌표 17436에 대응하는 좌표에 가로선에 해당하는 유닛이 존재한다. 가로선에 해당하는 유닛이 존재하므로, 현 탐색 좌표 17433에 3을 더한 17436을 새로운 탐색 좌표로 설정한다.
테이블정보 생성모듈(110-1)은 새로운 탐색 좌표에 해당하는 17436에 +3, +2, -1022를 각각 더한다. 예를 들어, 17436에 +3을 더하면 연산 좌표 17439에 대응하는 좌표에 유닛 A05가 존재한다. 유닛 A05은 가로선, 자동완성 가로선 또는 세로선이 아니므로, 테이블정보 생성모듈(110-1)은 유닛 A05을 타겟 유닛 $<의 자식 유닛으로 설정한다.
또한, 17436에 +2를 더하면 연산 좌표 17438에 대응하는 좌표에 세로선에 해당하는 유닛이 존재한다. 산출된 연산 좌표의 좌표 상에 세로선이 존재하므로, 테이블정보 생성모듈(110-1)은 현 탐색 좌표 17436에 1024를 더한 값 18460을 새로운 탐색 좌표로 설정한다.
현재의 탐색 좌표 18640가 이전의 탐색 좌표 17436에 비해서 XML 정보의 이미지 위치상 아래에 존재하므로, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표18640에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출한다.
현재의 탐색 좌표 18640에 3을 더하면 연산 좌표 18643에 유닛 A07이 존재한다. 유닛 A07은 가로선, 자동완성 가로선 또는 세로선이 아니므로, 테이블정보 생성모듈(110-1)은 유닛 A07을 타겟 유닛 $<의 자식 유닛으로 설정한다.
또한, 현재의 탐색 좌표 18460에 +2를 더하면 연산 좌표 18462에 세로선에 해당하는 유닛이 존재한다. 산출된 연산 좌표 상에 세로선이 존재하므로, 테이블정보 생성모듈(110-1)은 현 탐색 좌표 18460에 +1024를 더한 값 19484를 새로운 탐색 좌표로 설정한다.
현재의 탐색 좌표 19484가 이전의 탐색 좌표 18460에 비해서 XML 정보의 이미지 위치상 아래에 존재하므로, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표19484에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출한다. +3의 결과 가로선이 존재하고, +2의 결과는 존재하지 않는다.
따라서, 현재의 탐색 좌표 19484에 +3을 더하면 연산 좌표 19487에 가로선에 해당하는 유닛이 존재한다. 산출된 연산 좌표 상에 가로선이 존재하므로, 테이블정보 생성모듈(110-1)은 현 탐색 좌표 19484에 +3을 더한 값 19487을 새로운 탐색 좌표로 설정한다.
새로운 탐색 좌표 19487에 +3, +2 또는 -1022의 값을 더하여 연산 좌표를 산출한다. 이에 따르면, +3의 결과 유닛이 존재하고, +2 및 -1022의 결과는 존재하지 않는다.
새로운 탐색 좌표 19487에 +3을 더하면 연산 좌표 18490에 유닛 A09가 존재한다. 유닛 A09는 가로선, 자동완성 가로선 또는 세로선이 아니므로, 테이블정보 생성모듈(110-1)은 유닛 A09를 타겟 유닛 $<의 자식 유닛으로 설정한다.
도 10은 테이블정보 생성모듈(110-1)이 XML 정보를 이용하여 자식 유닛을 설정하는 또다른 실시예의 참조도이다.
도 10을 참조하면, 타겟 유닛은 A09이고, 타겟 유닛 A09의 탐색 좌표는 19490이다.
테이블정보 생성모듈(110-1)은 탐색 좌표 19490에 +3, +2, 또는 -1022를 각각 더한다. 예를 들어, 19490에 -1022을 더하면 연산 좌표 18468에 세로선에 해당하는 유닛이 존재한다. 연산 좌표 18468에 세로선이 존재하므로, 테이블정보 생성모듈(110-1)은 현 탐색 좌표 19490에 -1024을 더한 값 18466을 새로운 탐색 좌표로 설정한다.
현재의 탐색 좌표 18466이 이전의 탐색 좌표 19490에 비해서 XML 정보의 이미지 위치상 위에 존재하므로, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표18466에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출한다. -1022의 결과 세로선이 존재하고, +3의 결과는 존재하지 않는다.
즉, 현재의 탐색 좌표 18466에 -1022를 더한 연산 좌표 17444에 세로선에 해당하는 유닛이 존재한다. 산출된 연산 좌표 상에 세로선이 존재하므로, 테이블정보 생성모듈(110-1)은 현 탐색 좌표 18466에 -1024를 더한 값 17442를 새로운 탐색 좌표로 설정한다.
현재의 탐색 좌표 17442가 이전의 탐색 좌표 18466에 비해서 XML 정보의 이미지 위치상 위에 존재하므로, 테이블정보 생성모듈(110-1)은 현재의 탐색 좌표17442에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출한다. +3의 결과 자동완성 가로선이 존재하고, -1022의 결과는 존재하지 않는다.
즉, 현재의 탐색 좌표 17442에 +3을 더한 연산 좌표 17445에 자동완성 가로선에 해당하는 유닛이 존재한다. 산출된 연산 좌표 상에 자동완성 가로선이 존재하므로, 테이블정보 생성모듈(110-1)은 현 탐색 좌표 17442에 3 + size값(예를 들어, 54)을 더한 값 17499를 새로운 탐색 좌표로 설정한다.
새로운 탐색 좌표 17499에 +3, +2 또는 -1022의 값을 더하여 연산 좌표를 산출한다. 이에 따르면, +3의 결과 유닛이 존재하고, +2 및 -1022의 결과는 존재하지 않는다. 새로운 탐색 좌표 17499에 +3을 더하면 연산 좌표 17502에 유닛 Y01이 존재한다. 유닛 Y01은 가로선, 자동완성 가로선 또는 세로선이 아니므로, 테이블정보 생성모듈(110-1)은 유닛 Y01를 타겟 유닛 A09의 자식 유닛으로 설정한다.
테이블정보 생성모듈(110-1)은 설정된 자식유닛들을 기초로 이에 대응하는 부모유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트한다.
도 11은 테이블정보 생성모듈(110-1)이 기본유닛 테이블정보를 이용해 부모 유닛을 설정하는 일 실시예의 참조도이다.
도 11을 참조하면, 테이블정보 생성모듈(110-1)은 A02의 자식으로 A03 및 A04이 존재함을 기본유닛 테이블정보를 통해 확인할 수 있다. 따라서, 테이블정보 생성모듈(110-1)은 기본유닛 테이블에 설정된 자식유닛 A03 및 A04를 기초로 이에 대응하는 부모유닛 A02를 설정할 수 있고, 이를 기본유닛 테이블정보를 업데이트할 수 있다. 또한, 테이블정보 생성모듈(110-1)은 A06, A08, A09의 자식으로 Y01이 존재함을 기본유닛 테이블정보를 통해 확인할 수 있다. 따라서, 테이블정보 생성모듈(110-1)은 기본유닛 테이블정보에 설정된 자식유닛 Y01를 기초로 이에 대응하는 부모유닛 A06, A08, A09를 각각 설정할 수 있고, 이를 기본유닛 테이블정보에 업데이트할 수 있다.
그 후, 테이블정보 생성모듈(110-1)은 PLC 래더정보의 입력 접점에 해당하는 유닛 A01과 연결되는 루트(root) 유닛을 설정하고, PLC 래더정보의 출력 접점에 해당하는 유닛 Y01과 연결되는 리프(leaf) 유닛을 설정한다.
도 11에 도시된 바와 같이, 테이블정보 생성모듈(110-1)은 루프 노드에 대한 자식 유닛 및 부모 유닛을 설정하고, 리프 노드의 부모 노드를 설정한다. 즉, 테이블정보 생성모듈(110-1)은 부모가 없는 유닛의 부모유닛을 루트 유닛으로 설정하고, 자식이 없는 유닛의 자식유닛을 리프 유닛으로 설정한다.
도 12는 테이블정보 생성모듈(110-1)에 의해 업데이트된 기본유닛 테이블정보를 예시하는 참조도이다. 도 12를 참조하면, 기본유닛 테이블정보에 로트 노드 및 리프 노드가 설정되어 있으며, 이와 함께, 모든 자식 유닛 및 부모 유닛들이 설정되어 있음을 확인할 수 있다.
블록 생성모듈(110-2)은 상기 자식유닛들과 상기 부모유닛들 사이의 관계에 따라, 상기 유닛 테이블 정보에서 각각의 유닛들을 AND 조건 또는 OR 조건을 만족하도록 그룹핑하여 블록을 설정하고, 설정된 블록들이 최종 하나의 단일 블록이 생성될 때까지 반복한다. 블록 생성모듈(110-2)은 타겟 유닛을 정한 후에, 해당 타겟 유닛에 대한 AND 조건을 테스트하여 블록을 생성한 후, OR 조건을 테스트하여 블록을 생성하는 과정을 반복한다.
블록 생성모듈(110-2)은 블록 생성을 위한 타겟 유닛의 자식 유닛이 한개이고, 해당 자식 유닛의 부모 유닛도 해당 타겟 유닛 하나뿐인 경우에는 해당 타겟 유닛과 자식 유닛에 대해 AND 조건을 만족하는 멤버(member)로서 그룹핑하여 블록을 설정한다.
블록 생성모듈(110-2)은 블록 생성을 위한 타겟유닛의 자식유닛들에 대응하는 부모유닛들 중에서 타겟유닛의 부모유닛과 같은 부모유닛을 갖는 유닛의 개수 a를 구한다. 또한, 블록 생성모듈(110-2)은 타겟유닛의 자식유닛들에 대응하는 부모유닛들 중에서 타겟유닛의 부모유닛과 같은 조상유닛을 갖는 유닛의 개수 b를 구한다. 그 후, 블록 생성모듈(110-2)은 유닛 개수 a와 유닛 개수 b가 동일한 해당 타겟 유닛과 자식 유닛에 대해 OR 조건을 만족하는 멤버(member)로서 그룹핑하여 블록을 설정한다. 여기서, 특정 유닛의 조상유닛이란 특정 유닛의 부모 유닛부터 루트 유닛까지 선으로 연결된 모든 유닛들을 포함한다.
예를 들어, 도 12에 도시된 바와 같은 기본유닛 테이블정보를 이용하여, 블록 생성모듈(110-2)은 우선 키값이 ANB 0인 타겟 유닛에 대해 AND 테스트를 시작한다. 이에 따르면, ANB 0의 자식유닛은 ANB 1에 해당하는 것으로 1개 뿐이고, ANB 1의 부모 유닛도 ANB 0에 해당하는 것으로 1개 뿐이므로, 블록 생성모듈(110-2)은 ANB 0을 AND 멤버에 추가하고 ANB 1을 AND 테스트를 위한 타켓 유닛으로 설정한다. ANB 1은 자식유닛이 많으므로, 테이블정보 생성모듈(110-1)은 ANB 1을 AND 멤버에 추가하고, AND 테스트를 종료한다.
도 13a는 블록 생성모듈(110-2)에 의해 블록이 생성된 상태를 이미지화한 일 실시예의 참조도이고, 도 13b는 도 13a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 13a 및 도 13b를 참조하면, 블록 생성모듈(110-2)은 AND 멤버에 해당하는 객체들을 사용하여 새로운 키값에 해당하는 AND 블록 ANB 11을 생성하고, 기본유닛 테이블정보에서 AND 멤버에 있는 객체들을 삭제하고 ANB 11을 추가한다. 블록 생성모듈(110-2)은 ANB 11과 관련된 모든 릴레이션을 초기화한다.
그 후, 블록 생성모듈(110-2)은 ANB 11에 대한 블록화를 위해 AND 테스트 및 OR 테스트를 시작한다. ANB 11에 대한 AND 테스트 결과, AND 조건을 만족하는 유닛이 존재하지 않고, ANB 11에 대한 OR 테스트 결과, OR 조건을 만족하는 유닛도 존재하지 않는다.
이경우, 블록 생성모듈(110-2)은 첫 자식유닛인 ANB 2(A03)에서 AND 테스트 및 OR 테스트를 수행한다. 이에 따라, 블록 생성모듈(110-2)은 ANB 2에 대한 AND 테스트 결과, AND 조건을 만족하는 유닛이 존재하지 않음을 확인한다.
그 후, 블록 생성모듈(110-2)은 ANB 2에 대한 OR 테스트를 실시한다. ANB 2의 자식유닛은 ANB 3($<)이고, ANB 3의 부모유닛들 중 ANB 2를 제외하면 ANB 7이 존재한다. 또한, ANB 7의 부모유닛은 ANB 11이다. 이는 ANB 2의 부모유닛과 같다. ANB 7의 조상유닛도 역시 ANB 11에 해당하므로 ANB 2의 부모유닛과 같다. 따라서, 블록 생성모듈(110-2)은 ANB 2와 ANB 7은 OR 조건을 만족함을 확인한다.
도 14a는 블록 생성모듈(110-2)에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이고, 도 14b는 도 14a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 14a 및 도 14b를 참조하면, 블록 생성모듈(110-2)은 OR 멤버에 포함되는 객체들을 이용하여 새로운 키값에 해당하는 OR 블록 ORB 12를 생성한다. 블록 생성모듈(110-2)은 기본유닛 테이블정보에서 OR 멤버에 있는 객체들을 삭제하고 ORB 12를 추가한다. 블록 생성모듈(110-2)은 ORB 12와 관련된 모든 릴레이션을 초기화한다.
그 후, 블록 생성모듈(110-2)은 ORB 12에 대한 블록화를 위해 AND 테스트 및 OR 테스트를 시작한다. ORB 12의 부모유닛은 ANB 11 한 개이다. ANB 11의 자식유닛도 ORB 12 한 개이다. 따라서 블록 생성모듈(110-2)은 ANB 11을 AND 멤버로 추가한다.
한편, ORB 12의 자식유닛은 ANB 3($<) 한 개이다. ANB 3의 부모유닛도 ORB 12 한 개이다. 따라서 블록 생성모듈(110-2)은 ORB 12를 AND 멤버로 설정한 후에, ANB3을 테스트한다. ANB 3은 자식유닛이 여러 개이다. 따라서 블록 생성모듈(110-2)은 ANB 3을 AND 멤버로 추가하고, AND 테스트를 종료한다.
도 15a는 블록 생성모듈(110-2)에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이고, 도 15b는 도 15a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 15a 및 도 15b를 참조하면, 블록 생성모듈(110-2)은 AND 멤버의 객체들을 사용하여 새로운 키값에 해당하는 AND 블록 ANB 13을 생성한다. 블록 생성모듈(110-2)은 기본유닛 테이블정보에서 AND 멤버에 있는 객체들을 삭제하고 ANB 13을 추가한다. 블록 생성모듈(110-2)은 ANB 13과 관련된 모든 릴레이션을 초기화한다.
그 후, 블록 생성모듈(110-2)은 ANB 13에 대한 블록화를 위해 AND 테스트 및 OR 테스트를 시작한다. ANB 13에 대한 AND 테스트 결과, AND 조건을 만족하는 유닛이 존재하지 않고, ANB 13에 대한 OR 테스트 결과, OR 조건을 만족하는 유닛도 존재하지 않는다.
이경우, 블록 생성모듈(110-2)은 첫 자식유닛인 ANB 4(A05)에서 AND 테스트 및 OR 테스트를 수행한다. ANB 4의 자식유닛은 ANB 5 한 개이고, ANB 5의 부모유닛은 ANB 4 한 개 뿐이므로, 블록 생성모듈(110-2)은 ANB 4를 AND 멤버에 추가하고, ANB 5를 테스트한다. ANB 5의 자식유닛은 ANB 6 한 개이다. 하지만 ANB 6의 부모유닛은 많다. 따라서 블록 생성모듈(110-2)은 ANB 5를 AND멤버에 추가한 뒤, AND 테스트를 종료한다.
도 16a는 블록 생성모듈(110-2)에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이고, 도 16b는 도 16a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 16a 및 도 16b를 참조하면, 블록 생성모듈(110-2)은 AND 멤버에 있는 객체들을 사용하여 AND 블록인 ANB 14를 생성한다. 블록 생성모듈(110-2)은 기본유닛 테이블정보에서 AND 멤버에 있는 객체들을 삭제하고 ANB 14를 추가한다. 블록 생성모듈(110-2)은 ANB 14와 관련된 모든 릴레이션을 초기화한다.
그 후, 블록 생성모듈(110-2)은 후에, ANB 14에 대한 블록화를 위해, AND 테스트 및 OR 테스트를 시작한다.
ANB 14와 AND 조건에 맞는 유닛은 없다. ANB 14의 자식유닛 ANB 6의 부모유닛들 중에서 ANB 14를 제외하면 ANB 9, ANB 10이 존재한다. 이 중에서 ANB 10의 부모유닛은 ANB 14와 같다. 하지만 ANB 9와 ANB 10의 조상유닛 역시 ANB 14의 부모유닛과 같다. 두 가지 경우를 만족하는 각각의 유닛 개수가 다르기 때문에 OR 조건에 맞는 유닛 역시 존재하지 않는다.
이경우, 블록 생성모듈(110-2)은 ANB 14의 자식 유닛인 ANB 6에서 AND 테스트 및 OR 테스트를 수행한다.
ANB 6의 자식유닛이 리프 유닛이므로 AND 조건과 OR 조건을 만족하는 유닛이 존재하지 않는다. 또한 리프 유닛을 제외한 자식유닛이 없으므로 ANB 14로 돌아온다. ANB 14의 자식은 한 개뿐이므로 ANB 13으로 돌아간다.
그 후, 블록 생성모듈(110-2)은 ANB 13의 두번째 자식 유닛인 ANB 8에서 AND 테스트 및 OR 테스트를 수행한다.
ANB 8의 자식유닛은 ANB 9 하나이고, ANB 9의 부모유닛 역시 ANB 8 하나이므로 AND 조건을 만족한다. 블록 생성모듈(110-2)은 ANB 8을 AND 멤버에 추가한 후, ANB 9에 대해 AND 테스트를 한다. AND 9의 자식유닛은 Y01 하나이지만, Y01의 부모유닛은 많기 때문에, 블록 생성모듈(110-2)은 테스트를 종료하고 AND 9를 AND 멤버에 추가한다.
도 17a는 블록 생성모듈(110-2)에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이고, 도 17b는 도 17a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 17a 및 도 17b를 참조하면, 블록 생성모듈(110-2)은 AND 멤버의 객체들을 사용하여 AND 블록인 ANB 15을 생성한다. 블록 생성모듈(110-2)은 기본유닛 테이블 정보에서 AND 멤버에 있는 객체들을 삭제하고 ANB 15을 추가한다. 블록 생성모듈(110-2)은 ANB 15과 관련된 모든 릴레이션을 초기화한다.
그 후, 블록 생성모듈(110-2)은 ANB 15에 대한 블록화를 위해, AND 테스트 및 OR 테스트를 시작한다.
ANB 15에 대한 AND 테스트 시 조건에 맞는 유닛이 존재하지 않는다. 블록 생성모듈(110-2)은 ANB 15에 대해 OR 테스트를 시작한다. ANB 15의 자식유닛인 ANB 6의 부모유닛들 중에서 ANB 15를 제외한 ANB 14와 ANB 10의 부모유닛은 ANB 15의 부모유닛과 같다. 또한 이들의 조상유닛 또한 ANB 15의 부모유닛과 같다. 그러므로 블록 생성모듈(110-2)은 ANB 14, ANB 15, ANB 10를 OR 멤버에 추가한다.
도 18a는 블록 생성모듈(110-2)에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이고, 도 18b는 도 18a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 18a 및 도 18b를 참조하면, 블록 생성모듈(110-2)은 OR 멤버에 있는 객체들을 이용하여 OR 블록인 ORB 16를 생성한다. 블록 생성모듈(110-2)은 기본유닛 테이블정보에서 OR 멤버에 있는 객체들을 삭제하고 ORB 16를 추가한다. 블록 생성모듈(110-2)은 ORB 16와 관련된 모든 릴레이션을 초기화한다.
그 후, 블록 생성모듈(110-2)은 ORB 16에 대한 블록화를 위해, AND 테스트 및 OR 테스트를 시작한다.
ORB 16의 부모유닛은 ANB 13 한 개이다. ANB 13의 자식유닛도 ORB 16 한 개이다. 따라서 블록 생성모듈(110-2)은 ANB 13을 AND 멤버에 추가한다. ORB 16의 자식유닛은 ANB 6 한 개이고, ANB 6의 부모유닛도 ORB 16 한 개이다. 따라서 블록 생성모듈(110-2)은 ORB 16를 AND 멤버에 추가한 후, ANB 6을 테스트한다. ANB 6은 자식유닛이 없다. 따라서 블록 생성모듈(110-2)은 테스트를 종료하고, ORB 멤버에 ANB 6을 추가한다.
도 19a는 블록 생성모듈(110-2)에 의해 블록이 생성된 상태를 이미지화한 다른 실시예의 참조도이고, 도 19b는 도 19a의 블록 생성에 대응하는 기본유닛 테이블정보의 업데이트된 상태를 나타내는 참조도이다.
도 19a 및 도 19b를 참조하면, 블록 생성모듈(110-2)은 유닛이 최종적으로 ANB 17 하나 남았으므로 테스트를 종료한다. 그 후, 블록 생성모듈(110-2)은 기본유닛 테이블정보에서 루트 유닛과 리프 유닛을 삭제한다.
공용 명령어 변환부(120)는 제어로직정보 추출부(110)에서 추출된 제어로직정보를 공용 명령어정보로 변환한다. 공용 명령어정보는 제어 로직정보의 해석을 위한 언어 체계이다. 공용 명령어정보는 PLC 제조사마다 서로 다른 제어 로직 표현을 동일한 언어 체계로 해석하기 위한 정보이다. 모든 태그 정보와 로직 정보가 하나의 공용 명령어정보로 변환하게 되면, 공용 명령어정보를 해석함으로써 모든 PLC 제조사의 제어 로직을 시스템 상에서 이해할 수 있다.
이를 위해, 공용 명령어 변환부(120)는 블록화된 제어로직정보를 공용 명령어정보로 변환하기 위한 프로그램을 포함할 수 있다. 변환을 위해 공용 명령어 변환부(120)에 제공되는 정보는 블록화된 제어로직정보이다.
도 20은 공용 명령어 변환부(120)에 의해 제어로직정보가 공용 명령어정보로 변환된 상태를 나타내는 참조도이다.
도 20을 참조하면, 공용 명령어 변환부(120)는 블록 형태의 제어로직정보의 블록을 분해 함수에 인가한다. 공용 명령어 변환부(120)는 제어로직정보가 AND 조건에 따른 ANB 블록이라면, 멤버의 개수를 추출한다. 공용 명령어 변환부(120)는 ANB 블록의 멤버 개수가 하나인 경우엔 접점의 고용 명령어 인스트럭션과 주소를 반환한다. 한편, ANB 블록의 멤버 개수가 둘 이상인 경우엔 공용 명령어 변환부(120)는 각 멤버에 대해 분해 함수를 적용하고, 나온 결과를 문자열에 추가한다.
공용 명령어 변환부(120)는 제어로직정보가 OR 조건에 따른 ORB 블록이라면, ORB 블록의 멤버들에 대해 분해 함수를 적용하고, 나온 결과를 ‘,’로 구분한 뒤 문자열에 추가한다. 그 후, 공용 명령어 변환부(120)는 마지막에 문자열을 ‘[‘과 ‘]’로 묶어준 뒤, 완성된 문자열을 반환한다.
이에 따라, 공용 명령어 변환부(120)가 블록화된 제어로직정보를 공용 명령어정보로 변환함으로써, PLC 래더정보의 태그 정보와 래더 이미지 정보가 하나의 파일정보로 저장 및 관리될 수 있다.
도 21은 본 발명에 따른 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법을 설명하기 위한 일 실시예의 플로차트이다.
먼저, PLC 래더정보가 변환된 XML 정보로부터 제어로직정보를 추출한다(S200 단계). 상기 제어로직정보를 추출하는 단계는, 상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 상기 제어로직정보를 추출한다.
도 22는 도 21에 도시된 제어로직정보를 추출하는 단계를 설명하기 위한 일 실시예의 플로차트이다.
상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점을 포함하는 유닛들에 대한 기본유닛 테이블정보를 생성한다(S200-1 단계). 기본유닛은 PLC 래더정보 중에서 가로선, 세로선, 자동완성 가로선을 제외한 유닛들을 의미한다. 테이블정보 생성모듈(110-1)은 XML 정보에서 주소값, 좌표값, 펑션여부, 함수 맴버 포함여부, 파라미터 값, 및 유닛 타입을 포함하는 기본유닛 테이블정보를 생성한다. 이때, 기본유닛 테이블정보에 포함된 각각의 유닛에 키값(Key)을 할당한다.
S200-1 단계 후에, 상기 XML 정보를 이용하여, 상기 기본유닛 테이블정보에 포함된 각각의 유닛들의 하위 트리구조에 대응하는 각각의 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트한다(S200-2 단계).
자식 유닛의 설정을 위해, 타겟 유닛과 탐색 좌표를 선택한다. 최초의 타겟 유닛은 입력 접점일 수 있으며, 최초 탐색 좌표는 타겟 유닛의 좌표이다. 단 타겟유닛이 Function인 경우에는 현재 좌표에서 인자 개수*3만큼 더해준 값이 타겟유닛의 탐색 좌표가 된다.
상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 자식 유닛의 설정을 위해, 타겟 유닛과 탐색 좌표를 선택하고, 상기 탐색 좌표에 +3, +2, 및 -1022의 값을 더하여 연산 좌표를 산출한다.
또한, 상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 아래에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출하고, 상기 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 위에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출한다.
또한, 상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선, 자동완성 가로선 및 세로선을 제외한 유닛이 존재하면 해당 유닛을 자식유닛으로 설정한다.
또한, 상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선이 나오면 상기 현재의 탐색 좌표에 3을 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 자동완성 가로선이 나오면 현 탐색 좌표에 +3과 상기 자동완성 가로선의 길이값을 더한 값을 새로운 탐색 좌표로 설정한다.
또한, 상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는, 상기 현재의 탐색 좌표에 +2를 더한 연산 좌표 상에 세로선이 나오면 상기 현재의 탐색 좌표에 +1024를 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 -1022를 더한 연산 좌표 상에 상기 세로선이 나오면 상기 현재의 탐색 좌표에 -1024를 더한 값을 새로운 탐색 좌표로 설정한다.
S200-2 단계 후에, 상기 XML 정보를 이용하여, 상기 자식유닛들에 대응하는 부모유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트한다(S200-3 단계). 또한, PLC 래더정보의 입력 접점에 해당하는 유닛과 연결되는 루트(root) 유닛을 설정하고, PLC 래더정보의 출력 접점에 해당하는 유닛과 연결되는 리프(leaf) 유닛을 설정한다.
S200-3 단계 후에, 상기 자식유닛들과 상기 부모유닛들 사이의 관계에 따라, 상기 유닛 테이블 정보에서 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록을 생성하고, 생성된 블록들이 최종 하나의 단일 블록이 생성될 때까지 반복하여 상기 제어로직정보를 추출한다(S200-4 단계).
상기 제어로직정보를 추출하는 단계는, 블록 생성을 위한 타겟 유닛의 자식 유닛이 한개이고, 해당 자식 유닛의 부모 유닛도 해당 타겟 유닛 하나뿐인 경우에는 해당 타겟 유닛과 자식 유닛에 대해 AND 조건을 만족하는 멤버로서 그룹핑하여 블록을 설정한다.
또한, 상기 제어로직정보를 추출하는 단계는, 블록 생성을 위한 타겟유닛의 자식유닛들에 대응하는 부모유닛들 중에서 타겟유닛의 부모유닛과 같은 객체의 개수와 상기 타겟유닛의 자식유닛들에 대응하는 조상유닛들 중에서 상기 타겟유닛의 부모유닛과 같은 객체의 개수가 동일한 경우에, 해당 타겟 유닛과 자식 유닛에 대해 OR 조건을 만족하는 멤버(member)로서 그룹핑하여 블록을 설정한다.
한편, S200 단계 후에, 상기 추출된 제어로직정보를 공용 명령어정보로 변환한다(S210 단계). 블록 형태의 제어로직정보의 블록을 분해 함수에 인가되면, 제어로직정보가 AND 조건에 따른 ANB 블록이라면, 멤버의 개수를 추출한다. ANB 블록의 멤버 개수가 하나인 경우엔 접점의 고용 명령어 인스트럭션과 주소를 반환한다. 한편, ANB 블록의 멤버 개수가 둘 이상인 경우엔 각 멤버에 대해 분해 함수를 적용하고, 나온 결과를 문자열에 추가한다. 제어로직정보가 OR 조건에 따른 ORB 블록이라면, ORB 블록의 멤버들에 대해 분해 함수를 적용하고, 나온 결과를 ‘,’로 구분한 뒤 문자열에 추가한다. 그 후, 공용 명령어 변환부(120)는 마지막에 문자열을 '['과 ‘]’로 묶어준 뒤, 완성된 문자열을 반환한다.
이제까지 본 발명에 대하여 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 따라서 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허청구범위에 기재된 내용 및 그와 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
100 : 공용 명령어 추출장치
110: 로직정보 추출부
110-1: 테이블정보 생성모듈
110-2: 블록 생성모듈
120: 공용 명령어 변환부

Claims (20)

  1. PLC 래더정보가 변환된 XML 정보로부터 제어로직정보를 추출하는 로직정보 추출부; 및
    상기 로직정보 추출부에서 추출된 상기 제어로직정보를 공용 명령어정보로 변환하는 공용 명령어 변환부를 포함하고,
    상기 로직정보 추출부는,
    상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 상기 제어로직정보를 추출하고,
    상기 로직정보 추출부는,
    상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점을 포함하는 유닛들에 대한 기본유닛 테이블정보를 생성하고, 상기 XML 정보를 이용하여, 상기 기본유닛 테이블정보에 포함된 각각의 유닛들의 하위 트리구조에 대응하는 각각의 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하고, 상기 자식유닛들에 대응하는 부모유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 테이블정보 생성모듈; 및
    상기 자식유닛들과 상기 부모유닛들 사이의 관계에 따라, 상기 기본유닛 테이블 정보에서 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록을 생성하고, 생성된 블록들이 최종 하나의 단일 블록이 생성될 때까지 반복하여 상기 제어로직정보를 추출하는 블록 생성모듈을 포함하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  2. 청구항 1에 있어서,
    상기 XML 정보는,
    상기 PLC 래더정보를 구성하는 세로선, 가로선, 자동완성 가로선, A접점, B접점, 입력펄스, NPLUS, 출력접점, 닫힌 출력접점, SET, RESET, 펄스코일, NPLUS 코일, 펑션 및 NOT을 포함하는 유닛들 각각에 대한 타입이 XML 언어로 변환된 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  3. 삭제
  4. 청구항 1에 있어서,
    상기 테이블정보 생성모듈은,
    상기 XML 정보에서 주소값, 좌표값, 펑션여부, 함수 맴버 포함여부, 파라미터 값, 및 유닛 타입을 포함하는 기본유닛 테이블정보를 생성하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  5. 청구항 1에 있어서,
    상기 테이블정보 생성모듈은,
    상기 자식 유닛의 설정을 위해, 타겟 유닛과 탐색 좌표를 선택하고, 상기 탐색 좌표에 +3, +2, 및 -1022의 값을 더하여 연산 좌표를 산출하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  6. 청구항 5에 있어서,
    상기 테이블정보 생성모듈은,
    현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 아래에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출하고, 상기 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 위에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  7. 청구항 6에 있어서,
    상기 테이블정보 생성모듈은,
    상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선, 자동완성 가로선 및 세로선을 제외한 유닛이 존재하면 해당 유닛을 자식유닛으로 설정하는 것을특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  8. 청구항 6에 있어서,
    상기 테이블정보 생성모듈은,
    상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선이 나오면 상기 현재의 탐색 좌표에 3을 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 자동완성 가로선이 나오면 현 탐색 좌표에 +3과 상기 자동완성 가로선의 길이값을 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  9. 청구항 6에 있어서,
    상기 테이블정보 생성모듈은,
    상기 현재의 탐색 좌표에 +2를 더한 연산 좌표 상에 세로선이 나오면 상기 현재의 탐색 좌표에 +1024를 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 -1022를 더한 연산 좌표 상에 상기 세로선이 나오면 상기 현재의 탐색 좌표에 -1024를 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  10. 청구항 1에 있어서,
    상기 블록 생성모듈은,
    블록 생성을 위한 타겟 유닛의 자식 유닛이 한개이고, 해당 자식 유닛의 부모 유닛도 해당 타겟 유닛 하나뿐인 경우에는 해당 타겟 유닛과 자식 유닛에 대해 AND 조건을 만족하는 멤버로서 그룹핑하여 블록을 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  11. 청구항 1에 있어서,
    상기 블록 생성모듈은,
    블록 생성을 위한 타겟유닛의 자식유닛들에 대응하는 부모유닛들 중에서 타겟유닛의 부모유닛과 같은 객체의 개수와 상기 타겟유닛의 자식유닛들에 대응하는 조상유닛들 중에서 상기 타겟유닛의 부모유닛과 같은 객체의 개수가 동일한 경우에, 해당 타겟 유닛과 자식 유닛에 대해 OR 조건을 만족하는 멤버(member)로서 그룹핑하여 블록을 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 장치.
  12. PLC 래더정보가 변환된 XML 정보로부터 제어로직정보를 추출하는 단계; 및
    상기 추출된 제어로직정보를 공용 명령어정보로 변환하는 단계를 포함하고,
    상기 제어로직정보를 추출하는 단계는,
    상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점 및 라인을 대표하는 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록 형태의 상기 제어로직정보를 추출하고,
    상기 제어로직정보를 추출하는 단계는,
    상기 XML 정보에서 상기 PLC 래더정보를 구성하는 접점을 포함하는 유닛들에 대한 기본유닛 테이블정보를 생성하는 단계;
    상기 XML 정보를 이용하여, 상기 기본유닛 테이블정보에 포함된 각각의 유닛들의 하위 트리구조에 대응하는 각각의 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계;
    상기 XML 정보를 이용하여, 상기 자식유닛들에 대응하는 부모유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계; 및
    상기 자식유닛들과 상기 부모유닛들 사이의 관계에 따라, 상기 기본유닛 테이블 정보에서 각각의 유닛들을 AND 조건 및 OR 조건에 따라 그룹핑한 블록을 생성하고, 생성된 블록들이 최종 하나의 단일 블록이 생성될 때까지 반복하여 상기 제어로직정보를 추출하는 단계를 포함하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
  13. 삭제
  14. 청구항 12에 있어서,
    상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는,
    상기 자식 유닛의 설정을 위해, 타겟 유닛과 탐색 좌표를 선택하고, 상기 탐색 좌표에 +3, +2, 및 -1022의 값을 더하여 연산 좌표를 산출하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
  15. 청구항 14에 있어서,
    상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는,
    현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 아래에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 +2의 값만을 더하여 연산 좌표를 산출하고, 상기 현재의 탐색 좌표가 이전의 탐색 좌표에 비해서 XML 정보의 이미지 위치상 위에 존재하는 경우에, 상기 현재의 탐색 좌표에 +3 또는 -1022의 값만을 더하여 연산 좌표를 산출하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
  16. 청구항 15에 있어서,
    상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는,
    상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선, 자동완성 가로선 및 세로선을 제외한 유닛이 존재하면 해당 유닛을 자식유닛으로 설정하는 것을특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
  17. 청구항 16에 있어서,
    상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는,
    상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 가로선이 나오면 상기 현재의 탐색 좌표에 3을 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 +3을 더한 연산 좌표 상에 자동완성 가로선이 나오면 현 탐색 좌표에 +3과 상기 자동완성 가로선의 길이값을 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
  18. 청구항 17에 있어서,
    상기 자식유닛들의 설정을 통해 상기 기본유닛 테이블정보를 업데이트하는 단계는,
    상기 현재의 탐색 좌표에 +2를 더한 연산 좌표 상에 세로선이 나오면 상기 현재의 탐색 좌표에 +1024를 더한 값을 새로운 탐색 좌표로 설정하고, 상기 현재의 탐색 좌표에 -1022를 더한 연산 좌표 상에 상기 세로선이 나오면 상기 현재의 탐색 좌표에 -1024를 더한 값을 새로운 탐색 좌표로 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
  19. 청구항 12에 있어서,
    상기 제어로직정보를 추출하는 단계는,
    블록 생성을 위한 타겟 유닛의 자식 유닛이 한개이고, 해당 자식 유닛의 부모 유닛도 해당 타겟 유닛 하나뿐인 경우에는 해당 타겟 유닛과 자식 유닛에 대해 AND 조건을 만족하는 멤버로서 그룹핑하여 블록을 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
  20. 청구항 12에 있어서,
    상기 제어로직정보를 추출하는 단계는,
    블록 생성을 위한 타겟유닛의 자식유닛들에 대응하는 부모유닛들 중에서 타겟유닛의 부모유닛과 같은 객체의 개수와 상기 타겟유닛의 자식유닛들에 대응하는 조상유닛들 중에서 상기 타겟유닛의 부모유닛과 같은 객체의 개수가 동일한 경우에, 해당 타겟 유닛과 자식 유닛에 대해 OR 조건을 만족하는 멤버(member)로서 그룹핑하여 블록을 설정하는 것을 특징으로 하는 PLC 래더정보로부터 공용 명령어정보를 추출하는 방법.
KR1020210051743A 2021-04-21 2021-04-21 Plc 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법 KR102509859B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210051743A KR102509859B1 (ko) 2021-04-21 2021-04-21 Plc 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법
US17/722,580 US20220342376A1 (en) 2021-04-21 2022-04-18 Apparatus and method for extracting common command information from plc ladder information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210051743A KR102509859B1 (ko) 2021-04-21 2021-04-21 Plc 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220145096A KR20220145096A (ko) 2022-10-28
KR102509859B1 true KR102509859B1 (ko) 2023-03-24

Family

ID=83695204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210051743A KR102509859B1 (ko) 2021-04-21 2021-04-21 Plc 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법

Country Status (2)

Country Link
US (1) US20220342376A1 (ko)
KR (1) KR102509859B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020635A (ja) * 2008-07-11 2010-01-28 Nippon Reliance Kk プログラミング言語変換装置、変換方法及び変換プログラム
KR101243437B1 (ko) 2011-02-21 2013-03-13 성균관대학교산학협력단 Plc 기반 제어 코드를 xml 인터페이스를 이용하여 범용 프로그램 코드로 변환하는 방법 및 프레임워크 시스템
KR101627769B1 (ko) 2015-12-17 2016-06-08 주식회사 유디엠텍 Plc 제어 프로그램의 공용형식 변환장치 및 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100931004B1 (ko) 2008-11-27 2009-12-10 (주)미도지리정보 지리정보 및 지형정보에 따른 데이터의 오차 여부를 확인 및 갱신해서 수치지도의 정밀성을 향상시킨 수치지도 제작시스템
KR102004456B1 (ko) * 2016-08-12 2019-07-30 주식회사 유디엠텍 Plc 제어 프로그램을 구조체 데이터로 변환하는 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020635A (ja) * 2008-07-11 2010-01-28 Nippon Reliance Kk プログラミング言語変換装置、変換方法及び変換プログラム
KR101243437B1 (ko) 2011-02-21 2013-03-13 성균관대학교산학협력단 Plc 기반 제어 코드를 xml 인터페이스를 이용하여 범용 프로그램 코드로 변환하는 방법 및 프레임워크 시스템
KR101627769B1 (ko) 2015-12-17 2016-06-08 주식회사 유디엠텍 Plc 제어 프로그램의 공용형식 변환장치 및 방법

Also Published As

Publication number Publication date
KR20220145096A (ko) 2022-10-28
US20220342376A1 (en) 2022-10-27

Similar Documents

Publication Publication Date Title
CN107179753B (zh) 来自控制器程序文件的自动化控制系统点配置
CN108351636B (zh) 工程设计工具、系统及模块
US20050283758A1 (en) Bi-directional programming system/method for program development
KR101627769B1 (ko) Plc 제어 프로그램의 공용형식 변환장치 및 방법
US5303147A (en) Computer aided planning method and system
Drath et al. Computer-aided design and implementation of interlock control code
IL239575A (en) Automatic control of production facilities
CN106933568B (zh) 一种组态软件系统及一种工业控制方法
US20160132305A1 (en) Program graph display device, program graph display method, and program graph display program
CN103136100A (zh) 一种Android测试的方法和系统
US20180032328A1 (en) Method and apparatus of segment flow trace analysis
JP5785130B2 (ja) プログラム生成装置
KR102509859B1 (ko) Plc 래더정보로부터 공용 명령어정보를 추출하는 장치 및 방법
CN103049504A (zh) 基于源代码查询的半自动插桩方法
US20220197238A1 (en) Development support device, method for controlling development support device, and recording medium
Younis et al. UML-based approach for the re-engineering of PLC programs
Yoo et al. Synthesis of FBD-based PLC design from NuSCR formal specification
JP6289748B2 (ja) 制御ロジック図解析装置および制御ロジック図解析方法
Jnanamurthy et al. Analysis of industrial control system software to detect semantic clones
Núñez-Varela et al. Building a user oriented application for generic source code metrics extraction from a metrics framework
JP2002014845A (ja) テスト・スクリプト部品の自動生成方法および装置
CN110554860B (zh) 一种软件项目自然语言编程接口nli的构造方法及代码生成方法
Asensio et al. Industrial automation programming environment with a new translation algorithm among IEC 61131–3 languages based on the TC6-XML scheme
CN112416367A (zh) 基于软件逆向拆解和分析的应用资源变更影响分析系统
Racchetti et al. Generating automatically the documentation from PLC code by D4T3 to improve the usability and life cycle management of software in automation

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right