KR102478005B1 - Plc 사용자 프로그램 분석 방법 - Google Patents

Plc 사용자 프로그램 분석 방법 Download PDF

Info

Publication number
KR102478005B1
KR102478005B1 KR1020160051942A KR20160051942A KR102478005B1 KR 102478005 B1 KR102478005 B1 KR 102478005B1 KR 1020160051942 A KR1020160051942 A KR 1020160051942A KR 20160051942 A KR20160051942 A KR 20160051942A KR 102478005 B1 KR102478005 B1 KR 102478005B1
Authority
KR
South Korea
Prior art keywords
user program
program
user
memory
plc
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020160051942A
Other languages
English (en)
Other versions
KR20170122941A (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 KR1020160051942A priority Critical patent/KR102478005B1/ko
Publication of KR20170122941A publication Critical patent/KR20170122941A/ko
Application granted granted Critical
Publication of KR102478005B1 publication Critical patent/KR102478005B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/058Safety, monitoring

Landscapes

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

Abstract

본 발명은 PLC 사용자 프로그램 분석 방법에 대한 것으로서, 특히, 로직특징과 메모리 정보 및 명령어를 기반으로 사용자 프로그램을 분석하여 보다 효율적인 사용자 프로그램에 대한 가이드를 제공하는 PLC 사용자 프로그램 분석 방법에 관한 것이다. 이에 따라, 본 발명은 사용자 프로그램을 분석하여 특징을 추출한 후 추출된 특징을 기반으로 성능을 분석하여 사용자 프로그램 작성 가이드를 제공함으로써 PLC의 성능을 향상시킬 수 있다.

Description

PLC 사용자 프로그램 분석 방법{ANALYSIS METHOD FOR PLC USER PROGRAM}
본 발명은 PLC 사용자 프로그램 분석 방법에 대한 것으로서, 특히, 로직특징과 메모리 정보 및 명령어를 기반으로 사용자 프로그램을 분석하여 보다 효율적인 사용자 프로그램에 대한 가이드를 제공하는 PLC 사용자 프로그램 분석 방법에 관한 것이다.
PLC(Programmable Logic Controller)는 기존에 사용하던 제어반 내의 릴레이 타이머와 카운터 등의 기능을 LSI(Large Scale Integration)와 트랜지스터 등의 반도체 소자로 대체시켜 기본적인 시퀀스 제어 기능에 수치 연산 기능을 추가하여 프로그램 제어가 가능한 장치를 의미한다. 여기서, PLC를 제어하는 프로그램을 사용자 프로그램이라 하며, PLC는 PLC 프로그래밍 환경에서 작성된 사용자 프로그램을 다운로드 받아 실행한다.
도 1은 종래 기술에 따른 PLC 사용자 프로그램 작성 장치의 블록도이고, 도 2는 종래 기술에 따른 PLC 사용자 프로그램 작성 방법의 순서도이다.
종래 기술에 따른 PLC 사용자 프로그램 작성 장치(10)는 도 1에 도시된 바와 같이, 사용자로부터 명령을 입력받아 사용자 프로그램을 작성하는 프로그램 작성부(11)와, 프로그램 작성부(11)에서 작성된 사용자 프로그램이 PLC에서 실행이 가능하도록 변환하는 프로그램 컴파일부(12), 및 프로그램 컴파일부(12)에서 컴파일된 사용자 프로그램을 PLC(20)로 전송하는 프로그램 전송부(13)를 포함한다. 여기서, PLC(20)는 베이스에 장착된 전원 모듈(21)과 CPU 모듈(22) 및 기타 모듈(230)을 포함하는 것을 예시한다. 물론, 이는 예시일 뿐 PLC(20)의 구성은 변경될 수 있다.
또한, 전술된 구성의 종래 기술에 따른 PLC 사용자 프로그램 작성 장치를 이용한 PLC 사용자 프로그램 작성 방법은 도 2에 도시된 바와 같이, 프로그램을 작성하는 단계(S1)와, 프로그램을 컴파일하는 단계(S2), 프로그램을 전송하는 단계(S3)를 포함한다. 또한, 전송된 사용자 프로그램은 프로그램 실행(S4) 단계를 거치게 된다. 이와 같은 단계들에 의해서, 종래 기술에 따른 PLC 사용자 프로그램 작성 방법은 소프트웨어로 구성된 프로그래밍 환경을 이용하여 사용자가 사용자 프로그램을 프로그래밍한다. 또한, 완성된 사용자 프로그램은 프로그래밍 환경에서 제공해주는 프로그램 컴파일 기능을 이용하여 LD와 ST, SDC 등의 PLC 프로그래밍 언어를 실제로 PLC에서 동작이 가능한 실행 프로그램으로 변환한다. 변환된 사용자 프로그램은 PLC로 다운로드되어 실행된다.
종래 기술은 기본적으로 사용자 프로그램의 문법적 오류에 대한 검사만 진행할 뿐 전반적인 성능 및 사용자 프로그램 작성 유형 등에 대해서는 검사를 진행하지 않는다. 이에 따라, 사용자 프로그램의 성능과 관련된 요소들은 사용자 프로그램을 작성하는 프로그래머의 몫으로, 전체적인 PLC의 성능은 전적으로 프로그래머의 역량에 의존할 수 밖에 없다.
본 발명의 목적은 PLC의 성능을 향상시킬 수 있는 PLC 사용자 프로그램 분석 방법을 제공하는 것이다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상술한 목적을 달성하기 위해서, 본 발명은 사용자 프로그램 분할부가 사용자 프로그램을 논리적 분할 단위인 프로그램 블록과, 프로그램 블록 내에서 독립적인 실행 단위인 렁으로 분할하는 단계와, 로직특징 추출부가 분할된 사용자 프로그램에서 서로 기능이 유사한, 즉, 중복되는 로직특징을 추출하는 단계, 및 상기 중복되는 로직특징을 기반으로 가이드 제공부가 사용자 프로그램 작성 가이드를 제공하는 단계를 포함하는 PLC 사용자 프로그램 분석 방법을 제공한다.
여기서, 상기 사용자 프로그램 분할부가 사용자 프로그램을 분할하는 단계는, 사용자 프로그램 분할부가 사용자 프로그램을 논리적 분할 단위인 프로그램 블록과, 프로그램 블록 내에서 독립적인 실행 단위인 렁으로 분할하는 단계를 포함한다.
상기 중복되는 로직특징을 기반으로 가이드 제공부가 사용자 프로그램 작성 가이드를 제공하는 단계는, 상기 로직의 유사성이 상기 프로그램 블록간에 존재하는지, 상기 프로그램 블록 내의 렁에 존재하는지에 대한 정보를 제공하는 단계를 포함한다.
상기 로직의 유사성은 프로그램 블록내에서의 렁의 유사성과 프로그램 블록간의 유사성을 포함하되, LCS(Longest Common Sequence)를 이용하여 연산되며, 상기 프로그램 블록내에서의 렁의 유사성(
Figure 112016040839667-pat00001
)은,
Figure 112016040839667-pat00002
이며, 상기 프로그램 블록간의 유사성(
Figure 112016040839667-pat00003
)은,
Figure 112016040839667-pat00004
이고, 상기
Figure 112016040839667-pat00005
는 로컬 인덱스로서, 첫 번째 렁, 상기
Figure 112016040839667-pat00006
는 로컬 인덱스로서, 두 번째 렁을 의미한다.
상기 분할된 사용자 프로그램에서 메모리 정보 추출부가 메모리 사용 빈도수를 추출하는 단계, 및 상기 메모리 사용 빈도수가 연속적이면 사용자가 메모리를 할당하고 있음을 가이드 제공부가 사용자 프로그램 작성 가이드를 제공하는 단계를 더 포함할 수 있다.
상기 분할된 사용자 프로그램에서 메모리 정보 추출부가 메모리 대역폭을 추출하는 단계, 및 상기 메모리 사용 빈도수가 불연속적이면 사용자가 메모리를 자동으로 할당하거나 메모리를 취합하는 기능을 활용하고 있음을 가이드 제공부가 사용자 프로그램 작성 가이드를 제공하는 단계를 더 포함할 수 있다.
상기 분할된 사용자 프로그램에서 명령어 추출부가 명령어를 추출하는 단계와, 추출된 명령어로 상기 사용자 프로그램에서 사용되는 명령어 빈도수와, 상기 사용자 프로그램의 예상 실행 시간, 및 메모리 소비 정보를 분석하는 단계, 및 상기 사용자로부터 선택을 입력받아, 상기 명령어 빈도수로 사용자 프로그램에서 반복되는 유사 명령어를 라이브러리로 생성하여 사용자 프로그램의 용량을 감소시키는 용량 우선 최적화 옵션과, 라이브러리로 생성된 명령어를 반복되는 유사 명령어로 변경하여 사용자 프로그램의 성능을 증가시키는 성능 우선 최적화 옵션을 제공하는 단계를 더 포함할 수 있다.
본 발명은 사용자 프로그램을 분석하여 특징을 추출한 후 추출된 특징을 기반으로 성능을 분석하여 사용자 프로그램 작성 가이드를 제공함으로써 PLC의 성능을 향상시킬 수 있다.
도 1은 종래 기술에 따른 PLC 사용자 프로그램 작성 장치의 블록도.
도 2는 종래 기술에 따른 PLC 사용자 프로그램 작성 방법의 순서도.
도 3은 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 블록도.
도 4는 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 사용자 프로그램 분석부의 블록도.
도 5는 본 발명에 따른 PLC 사용자 프로그램 분석 장치에서 작성되는 사용자 프로그램의 예시도.
도 6 내지 도 9는 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 메모리 정보 추출부를 설명하기 위한 사용자 프로그램의 메모리 사용 빈도수 그래프.
도 10은 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 가이드 제공부를 설명하기 위한 예시도.
도 11은 본 발명에 따른 PLC 사용자 프로그램 분석 방법의 순서도.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
도 3은 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 블록도이다.
본 발명에 따른 PLC 사용자 프로그램 분석 장치(100)는 도 3에 도시된 바와 같이, 사용자로부터 명령을 입력받아 사용자 프로그램을 작성하는 사용자 프로그램 작성부(110)와, 작성된 사용자 프로그램을 컴파일하는 사용자 프로그램 컴파일부(120), 컴파일된 사용자 프로그램을 분석하는 사용자 프로그램 분석부(130), 사용자 프로그램 분석에 따른 가이드를 제공하는 가이드 제공부(140), 및 사용자 프로그램을 PLC(200)로 전송하는 사용자 프로그램 전송부(150)를 포함한다. 여기서, 사용자 프로그램이 전송되는 PLC(200)는 전원 모듈(210)과 CPU 모듈(220), 및 기타 모듈(230)을 포함하는 것을 예시한다. 하지만, 이에 한정되는 것은 아니며, PLC(200)를 구성하는 모듈들은 달라질 수 있다.
사용자 프로그램 작성부(110)는 사용자로부터 명령을 입력받아 사용자 프로그램을 작성한다. PLC(200)는 릴레이 시퀀스와 같은 접점이나 코일이 존재하지 않으며, 접점이나 코일을 연결하는 동작은 사용자 프로그램에 의해 소프트웨어적으로 처리된다. 즉, 사용자 프로그램 작성부(110)에서 작성된 사용자 프로그램은 PLC(200)의 메모리에 저장되며, PLC(200)는 저장된 사용자 프로그램의 내용을 순차적으로 읽어 그 내용에 따라 동작한다.
사용자 프로그램 컴파일부(120)는 사용자 프로그램 작성부(110)에서 작성된 사용자 프로그램을 컴파일한다. 이에 따라, 사용자 프로그램은 PLC에서 사용이 가능하게 변환되며, 추후 사용자 프로그램을 다운로드한 PLC(200)는 사용자 프로그램에 따라 작동할 수 있다.
도 4는 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 사용자 프로그램 분석부의 블록도이고, 도 5는 본 발명에 따른 PLC 사용자 프로그램 분석 장치에서 작성되는 사용자 프로그램의 예시도이다.
사용자 프로그램 분석부(130)는 사용자 프로그램 컴파일부(120)에서 컴파일된 사용자 프로그램을 분석한다. 이를 위해서 사용자 프로그램 분석부(130)는 도 4에 도시된 바와 같이, 사용자 프로그램 분할부(131)와, 사용자 프로그램의 특징을 추출하는 추출부(132), 및 피처 기반 데이터 저장부(133)를 포함한다.
사용자 프로그램 분할부(131)는 프로그램 컴파일부에서 컴파일된 사용자 프로그램 전체를 하위단계로 분할한다. 여기서, 하위단계는 논리적 분할 단위인 프로그램 블록과 하나의 프로그램 블록 내에서 독립적인 실행 단위인 렁을 포함한다. 여기서, 렁(rung)은 도 5에 도시된 바와 같이, LD 언어의 구조가 사다리와 유사한 형태이므로 사다리의 발 딛는 부분인 렁으로 지칭하는 것이다. 프로그램 블록의 이름은 사용자 프로그램 작성부(110)에서 사용자에 의해 자유롭게 명명되나, 시스템의 기능 단위(예를 들어, 컨베이어, 오토런, 공정 등)로 구분되는 것이 통상적이다. 사용자 프로그램을 분석할 때 사용자에 의해 명명된 이름은 하나의 특징으로 구별될 수 있다.
추출부(132)는 사용자 프로그램 분할부(131)에서 분할된 사용자 프로그램에서 특징을 추출한다. 이를 위해서 추출부(132)는 로직특징 추출부(132a)와 메모리 정보 추출부(132b) 및 명령어 추출부(132c)를 포함한다.
로직특징 추출부(132a)는 분할된 사용자 프로그램에서 로직특징을 추출한다. C언어 등의 하이레벨 언어와 대비하여 사용자 프로그램 작성에 사용되는 LD 언어는 비교적 간단하게 조건이 부여되며, 비교적 유사한 로직들이 많이 사용된다. 여기서, 로직의 유사성은 주로 렁 단위로 발생된다. 여기서, 전술된 로직특징은 유사한 로직특징을 의미하며, 유사한 로직특징, 즉, 프로그램에서의 유사성은 프로그램 구성 요소인 렁이 얼마나 유사한지를 측정하게 된다. 예를 들어, 10개의 렁이 있는 경우에는 간단하게 10×10회의 비교가 필요하다. 따라서, 로직특징 추출부(132a)는 프로그램 블록내의 유사성, 즉, 프로그램 블록내에서 렁의 유사성(SL)과 프로그램 블록간의 유사성(SG)을 연산하여 로직의 유사성이 프로그램 내에 주로 존재하는지 아니면 프로그램 블록 내에 존재하는지 판단한다. 여기서, 로직의 유사성은 LCS(Longest Common Sequence)를 이용하여 연산되며, 이는 아래의 수학식 1과 같다.
Figure 112016040839667-pat00007
Figure 112016040839667-pat00008
수학식 1에서, Ri와 Rj는 로컬 인덱스로서, Ri는 첫번째 렁, Rj는 마지막 렁을 의미한다. 이에 따라, (Ri, Rj)는 분할된 사용자 프로그램의 전체 렁을 의미한다. 예를 들어, 렁이 1~100일 경우, Ri는 1이고 Rj는 100이며, LCS(Ri, Rj)는 첫번째 렁에서 100번째 렁까지 순차적으로 LCS 연산을 수행함을 의미한다.
하나의 렁에 대해서 프로그램 블록 내에서의 유사성과 전체 프로그램에서의 유사성을 계산하여 로직에 대한 응집도를 연산한다. 프로그램 블록은 기능 단위로 구성되므로, 제어 로직의 유사성은 SL>SG로 나타나는 것이 바람직한 현상이다. 따라서, 분석 결과를 사용자에게 제공하여 프로그램에 대한 재조직화를 할 수 있도록 하는 것이 바람직하다.
메모리 정보 추출부(132b)는 사용자 프로그램에서 사용자가 작성한 메모리 정보를 추출하여 사용자 프로그램에서 사용한 메모리 별 사용 여부를 분석한다. 또한, 이에 따라, 사용자가 메모리를 얼마나 효과적으로 사용하고 있는지 판단할 수 있다. 여기서, 메모리 정보 추출부(132b)는 추출한 메모리 정보에서 메모리 사용 빈도수와 메모리 대역폭을 추출할 수 있다.
명령어 추출부(132c)는 사용자 프로그램에서 명령어를 추출하며, 추출된 명령어를 기반으로 사용자 프로그램에서 사용되고 있는 명령어의 빈도수, 예상 실행 시간, 메모리 소비 정도를 분석한다.
피처 기반 데이터 저장부(133)는 로직특징 추출부(132a)와 메모리 정보 추출부(132b) 및 명령어 추출부(132c)에서 각각 분석된 정보와 추출된 피처를 기반으로 피처기반 데이터를 생성하여 서버에 전송 및 저장한다. 여기서, 저장되는 피처기반 데이터(Record)는 아래의 수학식 2와 같이 표현될 수 있다.
Figure 112016040839667-pat00009
수학식 2에서 키워드(KEYWORD)는 사용자에 의해 명명된 사용자 프로그램 블록 이름 중 중복되는 사용자 프로그램 블록 이름을 의미한다. Freq(MEM)은 메모리 주파수, 즉, 메모리 사용 빈도수를 의미하며, Bandwidth(MEM)은 메모리 대역폭을 의미한다. 또한, Statistics(INST, Optimize Option)은 명령어(INST)와 최적화 옵션(Optimize Option)의 통계를 의미한다.
도 6 내지 도 9는 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 메모리 정보 추출부를 설명하기 위한 사용자 프로그램의 메모리 사용 빈도수 그래프이다.
가이드 제공부(140)는 로직특징 추출부(132a)에서 추출된 로직특징과, 메모리 정보 추출부(132b)에서 추출된 메모리 정보, 및 명령어 추출부(132c)에서 추출된 명령어를 기반으로 사용자 프로그램이 보다 효율적일 수 있는 가이드를 사용자에게 제공한다. 이는 예를 들어, 로직특징이 중복되는 경우, 즉, 프로그램 블록간 또는 프로그램 내의 렁들이 중복되는 특징이 있다면, 해당 로직을 라이브러리로 생성하여 유지보수가 용이하도록 사용자에게 가이드를 제공할 수 있다. 한편, 로직이 유사한 경우, 하나의 로직에서 버그가 발생한 경우 중복되는 다른 로직에서도 버그가 발생할 확률이 높으므로 이에 대한 정보도 가이드로 제공할 수 있다.
또한, 가이드 제공부(140)는 추출된 메모리 정보에서 메모리 사용 빈도수를 기반으로 메모리 할당량 등의 가이드를 제공할 수 있다. 예를 들어, 메모리 정보 추출부(132b)에서 추출된 메모리 정보를 분석한 결과, 도 6과 도 7에 도시된 바와 같이, 메모리 사용 빈도수가 고른 경우, 사용자가 메모리를 할당하고 사용하고 있음을 의미한다. 여기서, 메모리 사용에 대한 대역폭이 큰 경우에는 메모리가 부족함을 의미한다. 즉, 프로그램 특징에 따라 보다 큰 메모리를 제공해 주어야 함을 의미한다. 또한, 도 8과 도 9에 도시된 바와 같이, 메모리 사용 빈도수가 고르지 않은 경우, 사용자가 메모리를 계획적으로 사용하고 있지 않음을 의미한다. 따라서, 자동으로 메모리를 할당해 주거나 메모리를 취합해 주는 기능을 활용할 가능성이 높다. 만약 메모리 사용에 대한 대역폭이 일정한 경우에는 프로그램에서 구조화되어 사용되고 있음을 의미한다. 따라서 배열에 대한 활용 또는 사용자 데이터 타입과 같은 데이터 타입을 활용할 수 있도록 가이드를 제공하는 것이 사용자에게 유리할 수 있음을 의미한다.
도 10은 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 가이드 제공부를 설명하기 위한 예시도이다.
또한, 가이드 제공부(140)는 추출된 명령어 정보에서 분석된 데이터를 기반으로 도 10에 도시된 바와 같이, 성능 우선 최적화 또는 용량 우선 최적화 옵션을 제공할 수 있다. 이는 예를 들어, 유사한 명령어가 반복되는 경우, 이를 루프로 반복하는 것보다 개별로 풀어서 반복하는 것이 더 효율적일 수 있으며, 그 반대의 경우도 있을 수 있다. 즉, 사용자 프로그램 실행시간은 늘어나지만 용량을 감소시키거나, 사용자 프로그램 실행시간은 감소하지만 용량이 증가하는 옵션을 제공할 수 있다.
사용자 프로그램 전송부(150)는 사용자 프로그램을 PLC(200)에 전송한다. 사용자 프로그램 전송부(150)를 통해 PLC(200)에 전송된 사용자 프로그램은 PLC(200)의 메모리에 저장되며, PLC(200)는 사용자 프로그램에 따라 출력을 내보낸다.
다음은 본 발명에 따른 PLC 사용자 프로그램 분석 방법에 대해 도면을 참조하여 설명한다. 후술할 내용 중 전술된 본 발명에 따른 PLC 사용자 프로그램 분석 장치의 설명과 중복되는 내용은 생략하거나 간략히 설명한다.
도 11은 본 발명에 따른 PLC 사용자 프로그램 분석 방법의 순서도이다.
본 발명에 따른 PLC 사용자 프로그램 분석 방법은 도 11에 도시된 바와 같이, 사용자 프로그램을 작성하는 단계(S1)와, 사용자 프로그램을 컴파일하는 단계(S2), 사용자 프로그램을 분석하는 단계(S3), 가이드를 제공하는 단계(S4), 및 사용자 프로그램을 전송하는 단계(S5)를 포함한다.
사용자 프로그램을 작성하는 단계(S1)는 사용자 프로그램 작성부가 사용자로부터 명령을 입력받아 사용자 프로그램을 작성한다.
사용자 프로그램을 컴파일하는 단계(S2)는 사용자 프로그램을 작성하는 단계(S1)에서 작성된 사용자 프로그램을 PLC에서 사용할 수 있는 형태로 컴파일한다. 이에 따라, 사용자 프로그램을 다운로드 받는 PLC는 사용자 프로그램을 정상적으로 해석하여 작동될 수 있다.
사용자 프로그램을 분석하는 단계(S3)는 사용자 프로그램을 컴파일하는 단계(S2)에서 컴파일된 사용자 프로그램을 분석한다. 이를 위해서, 사용자 프로그램을 분석하는 단계(S3)는 사용자 프로그램을 분할하는 단계(S3-1)와, 분할 정보를 추출하는 단계(S3-2) 및 피처 기반 데이터를 저장하는 단계(S3-3)를 포함한다.
사용자 프로그램을 분할하는 단계(S3-1)는 사용자 프로그램을 논리적 분할 단위인 프로그램 블록과, 프로그램 블록 내에서 독립적인 실행 단위인 렁으로 분할한다.
특징 정보를 추출하는 단계(S3-2)는 사용자 프로그램을 분할하는 단계(S3-1)에서 분할된 프로그램 블록과 렁에서 특징 정보를 추출한다. 여기서, 특징 정보를 추출하는 단계(S3-2)는 로직특징을 추출하는 단계(S3-2-1)와, 메모리 정보를 추출하는 단계(S3-2-2) 및 명령어를 추출하는 단계(S3-2-3)를 포함한다.
로직특징을 추출하는 단계(S3-2-1)는 로직특징 추출부가 사용자 프로그램에서 로직특징을 추출한다. 로직특징은 프로그램 블록간의 유사한 로직특징, 프로그램 블록 내에서 렁간의 유사한 로직특징을 의미하며, 이를 이용하여 사용자 프로그램에서 로직의 유사성이 프로그램 블록간에 주로 존재하는지, 프로그램 내에 존재하는지 판단할 수 있다.
메모리 정보를 추출하는 단계(S3-2-2)는 메모리 정보 추출부가 사용자 프로그램에서 메모리 정보를 추출한다. 여기서, 추출되는 메모리 정보는 사용자 프로그램 실행에 따른 메모리 사용 빈도수와 메모리 대역폭에 대한 정보를 포함한다.
명령어를 추출하는 단계(S3-2-3)는 명령어 추출부가 사용자 프로그램에서 명령어를 추출한다. 또한, 추출된 명령어를 기반으로 사용자 프로그램에서 사용되는 명령어의 빈도수와 예상 실행 시간 및 메모리 소비 정보를 분석할 수 있다.
피처 기반 데이터를 저장하는 단계(S3-3)는 로직특징을 추출하는 단계(S3-2-1)와 메모리 정보를 추출하는 단계(S3-2-2) 및 명령어를 추출하는 단계(S3-2-3)를 통해 분석된 정보와 추출된 피처를 기반으로 피처기반 데이터를 생성하여 서버에 저장한다.
가이드를 제공하는 단계(S4)는 피처 기반 데이터를 저장하는 단계(S3-3)에서 생성된 피처기반 데이터로 가이드 제공부가 사용자 프로그램이 보다 효율적일 수 있는 가이드를 제공한다.
전술된 단계에서 추출된 로직특징으로는 로직의 유사성을 판단할 수 있으며, 로직의 유사성은 프로그램 블록간에 주로 존재하는 것보다 프로그램 내에서 주로 존재하는 것이 바람직하다. 따라서, 로직의 유사성이 주로 어디에 존재하는지에 대한 정보를 사용자에게 제공하여 사용자 프로그램을 재조직화하도록 할 수 있다.
또한, 추출된 메모리 정보로는 사용자 프로그램 처리에 따른 메모리 사용 빈도수와 메모리 대역폭을 알 수 있다. 여기서, 메모리 사용이 연속적으로 나타나는 경우, 즉, 메모리 사용 빈도수가 고른 경우 사용자가 메모리를 할당하고 있음을 의미한다. 또한, 메모리 사용이 연속적이지 않은 경우, 즉, 메모리 사용 빈도수가 고르지 않은 경우 사용자가 메모리를 자동으로 할당하거나 메모리를 취합하는 기능을 활용할 가능성이 높음을 의미한다. 또한, 메모리 대역폭이 큰 경우는 메모리가 부족함을 의미하므로, 보다 큰 메모리를 제공하도록 가이드를 제공하고, 대역폭이 일정한 경우 배열에 대한 활용 또는 사용자 데이터 타입과 같은 논리적인 데이터 타입을 활용하도록 가이드를 제공할 수 있다.
또한, 추출된 명령어 정보로는 사용자 프로그램에서 사용되는 명령어 빈도수와, 상기 사용자 프로그램의 예상 실행 시간, 및 메모리 소비 정보를 분석할 수 있다. 또한, 분석된 정보를 기반으로 용량 우선 최적화 옵션과 성능 우선 최적화 옵션을 제공할 수 있다. 이는 상세하게, 사용자로부터 선택을 입력받아, 명령어 빈도수로 사용자 프로그램에서 반복되는 유사 명령어를 라이브러리로 생성하여 사용자 프로그램의 용량을 감소시키는 용량 우선 최적화 옵션과, 라이브러리로 생성된 명령어를 반복되는 유사 명령어로 변경하여 사용자 프로그램의 성능을 증가시키는 성능 우선 최적화 옵션을 제공할 수 있다.
사용자 프로그램을 전송하는 단계(S5)는 사용자 프로그램을 PLC로 전송한다. 또한, 사용자 프로그램을 전송받은 PLC는 이를 메모리에 저장하고 저장된 사용자 프로그램을 기반으로 출력을 수행한다.
전술한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.

Claims (7)

  1. 사용자 프로그램 분할부가 사용자 프로그램을 분할하는 단계와,
    로직특징 추출부가 분할된 사용자 프로그램에서 중복되는 로직특징을 추출하는 단계, 및
    상기 중복되는 로직특징을 기반으로 가이드 제공부가 사용자 프로그램 작성 가이드를 제공하는 단계를 포함하며,
    상기 분할된 사용자 프로그램에서 메모리 정보 추출부가 메모리 사용 빈도수를 추출하는 단계, 및
    상기 메모리 사용 빈도수가 연속적이면 사용자가 메모리를 할당하고 있음을 가이드 제공부가 사용자 프로그램 작성 가이드에 제공하는 단계를 포함하는 PLC 사용자 프로그램 분석 방법.
  2. 제1항에 있어서,
    상기 사용자 프로그램 분할부가 사용자 프로그램을 분할하는 단계는,
    사용자 프로그램 분할부가 사용자 프로그램을 논리적 분할 단위인 프로그램 블록과, 프로그램 블록 내에서 독립적인 실행 단위인 렁으로 분할하는 단계를 포함하는 PLC 사용자 프로그램 분석 방법.
  3. 제2항에 있어서,
    상기 중복되는 로직특징을 기반으로 가이드 제공부가 사용자 프로그램 작성 가이드를 제공하는 단계는,
    상기 로직의 유사성이 상기 프로그램 블록간에 존재하는지, 상기 프로그램 블록 내의 렁에 존재하는지에 대한 정보를 제공하는 단계를 포함하는 PLC 사용자 프로그램 분석 방법.
  4. 제3항에 있어서,
    상기 로직의 유사성은 프로그램 블록내에서의 렁의 유사성과 프로그램 블록간의 유사성을 포함하되, LCS(Longest Common Sequence)를 이용하여 연산되며,
    상기 프로그램 블록내에서의 렁의 유사성(SL)은,
    Figure 112022078644197-pat00028
    이며,
    상기 프로그램 블록간의 유사성(SG)은,
    Figure 112022078644197-pat00029
    이고,
    상기 Ri는 로컬 인덱스로서, 첫 번째 렁,
    상기 Rj는 로컬 인덱스로서, 마지막 렁인 PLC 사용자 프로그램 분석 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 분할된 사용자 프로그램에서 메모리 정보 추출부가 메모리 대역폭을 추출하는 단계, 및
    상기 메모리 사용 빈도수가 불연속적이면 사용자가 메모리를 자동으로 할당하거나 메모리를 취합하는 기능을 활용하고 있음을 가이드 제공부가 사용자 프로그램 작성 가이드에 제공하는 단계를 더 포함하는 PLC 사용자 프로그램 분석 방법.
  7. 제1항 내지 제4항, 및 제6항 중 어느 한 항에 있어서,
    상기 분할된 사용자 프로그램에서 명령어 추출부가 명령어를 추출하는 단계와,
    추출된 명령어로 상기 사용자 프로그램에서 사용되는 명령어 빈도수와, 상기 사용자 프로그램의 예상 실행 시간, 및 메모리 소비 정보를 분석하는 단계, 및
    상기 사용자로부터 용량 우선 옵션과 성능 우선 옵션 중 하나의 선택을 입력받아, 상기 명령어 빈도수로 사용자 프로그램에서 반복되는 유사 명령어를 라이브러리로 생성하여 사용자 프로그램의 용량을 감소시키는 용량 우선 옵션과, 라이브러리로 생성된 명령어를 반복되는 유사 명령어로 변경하여 사용자 프로그램의 성능을 증가시키는 성능 우선 옵션을 제공하는 단계를 더 포함하는 PLC 사용자 프로그램 분석 방법.
KR1020160051942A 2016-04-28 2016-04-28 Plc 사용자 프로그램 분석 방법 Active KR102478005B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160051942A KR102478005B1 (ko) 2016-04-28 2016-04-28 Plc 사용자 프로그램 분석 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160051942A KR102478005B1 (ko) 2016-04-28 2016-04-28 Plc 사용자 프로그램 분석 방법

Publications (2)

Publication Number Publication Date
KR20170122941A KR20170122941A (ko) 2017-11-07
KR102478005B1 true KR102478005B1 (ko) 2022-12-14

Family

ID=60384905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160051942A Active KR102478005B1 (ko) 2016-04-28 2016-04-28 Plc 사용자 프로그램 분석 방법

Country Status (1)

Country Link
KR (1) KR102478005B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101602993B1 (ko) * 2012-08-23 2016-03-11 엘에스산전 주식회사 프로그래밍 언어 오류 검색 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置

Also Published As

Publication number Publication date
KR20170122941A (ko) 2017-11-07

Similar Documents

Publication Publication Date Title
JP7019589B2 (ja) リアルタイムデータフロープログラミングのための効率的な状態機械
US8966462B2 (en) Memory management parameters derived from system modeling
US9043788B2 (en) Experiment manager for manycore systems
US9377998B2 (en) Code generation for control design
US6996517B1 (en) Performance technology infrastructure for modeling the performance of computer systems
CN110990019B (zh) 一种Java类分析方法、装置、存储介质及电子设备
US20130080760A1 (en) Execution Environment with Feedback Loop
CN110716715A (zh) 一种应用程序开发方法、装置、设备及介质
De Farias et al. COMFIT: A development environment for the Internet of Things
US20100037213A1 (en) Grammar-based generation of types and extensions
CN110750582B (zh) 数据处理方法、装置和系统
CN104657189A (zh) 混合式动态码编译装置、方法及其服务系统
CN117420985B (zh) 一种使用JavaScript封装安卓服务功能的方法
CN107463421B (zh) 一种静态流程模型的编译执行方法及系统
CN112540767A (zh) 程序代码的生成方法、装置、电子设备及存储介质
CN119862833A (zh) 基于物联网的异构芯片设计方法及系统
CN109144648B (zh) 统一地执行特征抽取的方法及系统
KR102478005B1 (ko) Plc 사용자 프로그램 분석 방법
CN110297639B (zh) 用于检测代码的方法和装置
WO2017135219A1 (ja) 設計支援装置、設計支援方法、および設計支援プログラムを格納した記録媒体
EP4254113A1 (en) Information processing system, information processing method and information processing program
CN116541643A (zh) 函数运行时间的计算方法、装置、存储介质及电子设备
CN114168150B (zh) 应用程序编译方法、装置、电子设备及存储介质
CN105512154A (zh) 一种基于嵌入式数据库的环保数据采集方法及系统
KR20150122924A (ko) 자바스크립트 성능 평가 장치 및 성능 평가 방법

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20160428

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20201230

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20160428

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20220125

Patent event code: PE09021S01D

E90F Notification of reason for final refusal
PE0902 Notice of grounds for rejection

Comment text: Final Notice of Reason for Refusal

Patent event date: 20220706

Patent event code: PE09021S02D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20221201

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20221212

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20221212

End annual number: 3

Start annual number: 1

PG1601 Publication of registration