KR20120095512A - Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템 - Google Patents

Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템 Download PDF

Info

Publication number
KR20120095512A
KR20120095512A KR1020110014871A KR20110014871A KR20120095512A KR 20120095512 A KR20120095512 A KR 20120095512A KR 1020110014871 A KR1020110014871 A KR 1020110014871A KR 20110014871 A KR20110014871 A KR 20110014871A KR 20120095512 A KR20120095512 A KR 20120095512A
Authority
KR
South Korea
Prior art keywords
function
class
pou
fbn
unit
Prior art date
Application number
KR1020110014871A
Other languages
English (en)
Other versions
KR101216916B1 (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 KR1020110014871A priority Critical patent/KR101216916B1/ko
Publication of KR20120095512A publication Critical patent/KR20120095512A/ko
Application granted granted Critical
Publication of KR101216916B1 publication Critical patent/KR101216916B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)

Abstract

본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법은 FBN의 펑션 블록(Function Block)이 분류되는 S1 단계, S1 단계에서 분류된 펑션 블록에서 실행부분이 추출되는 S2 단계, S2 단계에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분이 구분되는 S3 단계, S3 단계에서 구분된 정적인 부분과 동적인 부분이 결합되어 베이스 클래스(Base Class)가 생성되는 S4 단계 및 펑션 블록에 사용자 정의 변수 또는 사용자 정의 알고리즘이 있는 경우, S4 단계의 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit) 클래스가 생성되는 S5 단계를 포함한다.
IEC 61499 FBN과 C언어 코드와의 호환성을 지원하여, 분야가 상의한 엔지니어들이 쉽게 접근할 수 있는 개발환경을 제공한다.

Description

FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템{METHOD AND SYSTEM FOR CONVERTING FBN BASED PLC CODE INTO A GENERAL PROGRAM CODE}
본 발명은 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템에 관한 것이다. 특히 본 발명은 FBN 기반의 PLC 코드를 C++ 언어로 변환하는 방법 및 시스템에 관한 것이다.
종래의 PLC(Programmable Logic Controller)프로그래밍 환경에 따른 소프트웨어에서 릴레이 로직 기반의 레더(Ladder) 프로그래밍 방식은 일반적인 시스템 프로그래머들이 접근하기 힘들고, 텍스트 기반의 제어 프로그램밍 방식은 기존의 제어 엔지니어들이 접근하기 힘들다는 문제점이 있었다.
IEC 61499는 Function Block diagram Network(FBN)을 비롯한 다양한 모델링 기법을 제시하고 있지만, 범용 PC에서 동작 가능하도록 범용 프로그래밍 언어와의 호환기법을 제공하지 않기 때문에 문제가 된다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템은 다음과 같은 해결과제를 목적으로 한다.
첫째, IEC 61499 FBN(Function Block diagram Network) 기반의 그래픽 코드를 범용 PC에서 동작 가능하도록 하고자 한다.
둘째, FBN 기반의 코드를 범용 PC에서 동작가능한 C++ 코드로 변환하고자 한다.
셋째, 변환된 FBN 프로세스 객체들을 효과적으로 관리하고자 한다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법은 FBN(Function Block diagram Network)의 펑션 블록(Function Block)이 분류되는 S1 단계, S1 단계에서 분류된 펑션 블록에서 실행부분이 추출되는 S2 단계, S2 단계에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분이 구분되는 S3 단계, S3 단계에서 구분된 정적인 부분과 동적인 부분이 결합되어 베이스 클래스(Base Class)가 생성되는 S4 단계 및 펑션 블록에 사용자 정의 변수 또는 사용자 정의 알고리즘이 있는 경우, S4 단계의 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit) 클래스가 생성되는 S5 단계를 포함한다.
본 발명에 따른 S1 단계는 펑션 블록이 이벤트 I/O와 데이터 I/O로 분류되는 S1-1 단계 및 펑션 블록에서 사용자 정의 I/O가 분류되는 S1-2 단계를 포함한다.
본 발명에 따른 S4 단계는 정적인 부분과 동적인 부분이 각각 클래스 파일로 구성되는 S4-1 단계 및 동적인 부분의 클래스 파일이 정적인 부분의 클래스 파일을 상속받아 베이스 클래스가 생성되는 S4-2 단계를 포함한다.
본 발명에 따른 S5 단계는 베이스 클래스의 알고리즘 수행 함수가 가상함수로 구성되는 S5-1 단계 및 S4 단계에서 생성된 베이스 클래스를 상속받는 사용자 정의 POU 클래스가 생성되는 S5-2 단계를 포함한다.
본 발명에 따른 사용자 정의 POU 클래스는 사용자 정의 변수 및 사용자 정의 알고리즘을 실행 함수에 선언하고, 베이스 클래스의 가상함수를 호출하는 형태로 실행함수가 구성되는 것을 특징으로 한다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법은 베이스 클래스 또는 POU 클래스로 변환된 FBN을 관리하는 S6 단계를 더 포함할 수 있다.
본 발명에 따른 S6 단계는 S5 단계의 사용자 정의 POU가 타입 캐스팅을 통해 베이스 POU로 변환되는 S6-1 단계, S6-1 단계에서 변환된 베이스 POU에 펑션 맵핑을 적용하여 펑션 레코드(Function Record)가 생성되는 S6-2 단계, S6-2 단계의 펑션 레코드가 광역 펑션 테이블(Global Function Table)에 등록되는 S6-3 단계, S6-3 단계에서 등록된 펑션 레코드가 펑션 블록 간의 연결 관계에 따라 관계설정이 되는 S6-4 단계, 등록된 펑션 레코드가 스케쥴링되는 S6-5 단계를 포함한다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템은 FBN(Function Block diagram Network)을 입력받아 펑션 블록(Function Block: FB)을 분류하는 FB분류부, FB분류부에서 분류된 펑션 블록에서 실행부분을 추출하는 실행부추출부, 실행부추출부에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분을 구분하는 실행부구분부, 실행부구분부에서 구분된 정적인 부분과 동적인 부분을 결합하여 베이스 클래스(Base Class)를 생성하는 베이스생성부 및 펑션 블록에 사용자 정의 변수 또는 사용자 정의 알고리즘이 있는 경우, 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit) 클래스를 생성하는 POU생성부를 포함한다.
본 발명에 따른 FB분류부는 펑션 블록을 이벤트 I/O와 데이터 I/O로 분류하고, 펑션 블록에서 사용자 정의 I/O를 분류하는 것을 특징으로 한다.
본 발명에 따른 베이스생성부는 정적인 부분과 동적인 부분을 각각 클래스 파일로 구성하고, 동적인 부분의 클래스 파일이 정적인 부분의 클래스 파일을 상속받도록 하여 베이스 클래스를 생성하는 것을 특징으로 한다.
본 발명에 따른 POU생성부는 베이스 클래스의 알고리즘 수행 함수를 가상함수로 구성하고, 베이스 클래스를 상속받는 사용자 정의 POU 클래스를 생성하는 것을 특징으로 한다.
본 발명에 따른 사용자 정의 POU 클래스는 사용자 정의 변수 및 사용자 정의 알고리즘을 실행 함수에 선언하고, 베이스 클래스의 가상함수를 호출하는 형태로 실행함수가 구성되는 것을 특징으로 한다.
본 발명에 따른 베이스 클래스 또는 POU 클래스로 변환된 FBN을 관리하는 FBN관리부를 더 포함하는 것을 특징으로 한다.
본 발명에 따른 FBN관리부는 사용자 정의 POU에 타입 캐스팅을 수행하여 베이스 POU로 변환하는 타입캐스팅부, 타입캐스팅부에서 변환된 베이스 POU에 펑션 맵핑을 적용하여 펑션 레코드(Function Record)를 생성하는 레코드생성부, 레코드생성부에서 생성된 펑션 레코드를 광역 펑션 테이블(Global Function Table)에 등록하는 테이블등록부, 테이블등록부에서 등록된 펑션 레코드를 펑션 블록 간의 연결 관계에 따라 관계설정을 수행하는 관계설정부 및 관계설정부에서 관계가 설정된 펑션 레코드를 스케쥴링하는 스케쥴링부를 포함하는 것을 특징으로 한다.
본 발명은 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 포함한다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템은 다음과 같은 효과를 갖는다.
첫째, IEC 61499 FBN과 C언어 코드와의 호환성을 지원하여, 분야가 상의한 엔지니어들이 쉽게 접근할 수 있는 개발환경을 제공한다.
둘째, 전용 하드웨어에서 동작하던 PLC 프로그램을 임베디드 PC 또는 범용 PC에서 동작 가능하게 하여 프로그램의 재사용성 및 데이터의 신뢰성을 높인다.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
도 1은 본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법의 개략적인 순서를 도시한 순서도이다.
도 2는 FBN을 구성하는 기본적인 펑션 블록을 도시한 블록도이다.
도 3은 본 발명의 방법을 개략적으로 도시한 구성도이다.
도 4는 본 발명의 S6 단계에 대한 구체적인 순서를 도시한 순서도이다.
도 5는 생성된 POU를 펑션 레코드로 맵핑하는 단계 및 펑션 테이블에 등록하여 프로세스를 등록하는 과정을 도시한 블록도이다.
도 6은 등록된 펑션 레코드를 펑션 테이블에서 호출하여 프로세스를 처리하는 과정을 도시한 블록도이다.
도 7은 본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템에 대한 개략적인 구성을 도시한 블록도이다.
본 명세서에서 사용되는 용어에서 단수의 표현은 문맥상 명백하게 다르게 해석되지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함한다" 등의 용어는 설시된 특징, 개수, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 의미하는 것이지, 하나 또는 그 이상의 다른 특징들이나 개수, 단계 동작 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하지 않는 것으로 이해되어야 한다.
이하에서는 도면을 참조하면서 FBN(Function Block diagram Network) 기반의 PLC(Programmable Logic Controller) 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템에 관하여 구체적으로 설명하겠다.
이하 본 발명에서의 변환 결과물인 범용 프로그램 코드는 C++ 언어인 것으로 가정하고 설명한다. 다만, 해당분야의 통상의 지식을 가진 자가 이해할 수 있는 바와 같이, C++ 코드 외에 사용가능한 범용 프로그램 코드가 결과물이 될 수 있음은 자명하다.
도 1은 본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법의 개략적인 순서를 도시한 순서도이다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법은 FBN의 펑션 블록(Function Block)이 분류되는 S1 단계, S1 단계에서 분류된 펑션 블록에서 실행부분이 추출되는 S2 단계, S2 단계에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분이 구분되는 S3 단계, S3 단계에서 구분된 정적인 부분과 동적인 부분이 결합되어 베이스 클래스(Base Class)가 생성되는 S4 단계 및 펑션 블록에 사용자 정의 변수 또는 사용자 정의 알고리즘이 있는 경우, S4 단계의 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit) 클래스가 생성되는 S5 단계를 포함한다.
FBN의 펑션 블록의 객체를 분류별로 분류하는 과정이 선행되는 것이 바람직하다. S1 단계는 펑션 블록이 이벤트 I/O와 데이터 I/O로 분류되는 S1-1 단계 및 펑션 블록에서 사용자 정의 I/O가 분류되는 S1-2 단계를 포함할 수 있다.
이러한 분류가 수행된 후 펑션 블록(FB)에서 실질적인 실행부분을 추출하여, 변환을 위한 구성을 특정하게 된다. 도 2에 도시된 바와 같이, 펑션 블록은 크게 FB Head와 FB Body로 나누어진다. FB Head는 이벤트 입출력 및 장치 초기화와 같은 FB 운용에 관련된 정보들이 정의되고, FB Body는 데이터 입출력 및 사용자 정의 내부 변수설정, 실질적인 실행 알고리즘과 같은 FB의 실질적인 기능이 정의된다. 다수의 FB가 모여 FBN을 구성하게 된다.
도 3에 도시된 바와 같이, 범용 PC에서 컴파일 가능한 C++ 프로그램 코드로 변환하기 위하여 FB의 부분을 크게 변환이 불가능한 정적인 부분과 제한적인 변환이 가능한 동적인 부분으로 나누었다. 변환이 불가능한 정적인 부분은 FB 식별자 설정, 이벤트 입출력, 장치 초기화(하드웨어 주소 맵핑)와 같은 작업을 실행한다. 제한적인 변환이 가능한 동적인 부분은 데이터 입출력, 사용자 정의 내부변수 선언, 실질적인 실행 알고리즘이 정의된다. 동적인 부분에서 변환이 가능한 부분은 사용자 정의 내부변수 선언 및 알고리즘 부분에 사용자 정의 알고리즘을 추가가능 하다. S3 단계에서 S2 단계에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분이 구분된다.
S4 단계는 정적인 부분과 동적인 부분이 각각 클래스 파일로 구성되는 S4-1 단계 및 동적인 부분의 클래스 파일이 정적인 부분의 클래스 파일을 상속받아 베이스 클래스가 생성되는 S4-2 단계를 포함한다.
정적인 부분과 동적인 부분은 각각 클래스 파일로 구성한다. 구성된 클래스 파일은 동적인 부분이 정적인 부분을 상속받아 실행 가능한 베이스 클래스를 생성한다. 베이스 클래스는 Basic FB일 경우 별도의 수정 없이 바로 실행 가능한 프로그램 코드로 동작한다.
그러나 사용자 정의 변수 추가 및 사용자 정의 알고리즘이 추가된 경우, 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit)를 구성한다. 베이스 클래스의 실질적인 알고리즘 수행 함수를 가상함수로 구성하고, 베이스 클래스를 상속받는 새로운 사용자 정의 POU 클래스를 만든다. 생성된 사용자 정의 POU 클래스의 실행 함수 부분에 사용자 정의 변수 및 알고리즘을 선언하고, 베이스 클래스의 가상함수를 호출하는 형태로 사용자 정의 POU의 실행 함수를 구성한다.
즉 S5 단계는 베이스 클래스의 알고리즘 수행 함수가 가상함수로 구성되는 S5-1 단계 및 S4 단계에서 생성된 베이스 클래스를 상속받는 사용자 정의 POU 클래스가 생성되는 S5-2 단계를 포함한다.
전술한 바와 같이, 사용자 정의 POU 클래스는 사용자 정의 변수 및 사용자 정의 알고리즘을 실행 함수에 선언하고, 베이스 클래스의 가상함수를 호출하는 형태로 실행함수가 구성된다.
사용자 정의 POU는 그 형태가 다양하기 때문에 작업 리스트에서 모든 정보를 관리하기 힘들다. 따라서, 본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법은 베이스 클래스 또는 POU 클래스로 변환된 FBN을 관리하는 S6 단계를 더 포함할 수 있다.
FBN에서 지원하는 FB 타입은 베이스 클래스 형태의 타입만 지원하고, 사용자 정의 POU는 베이스 클래스 타입을 상속받아 구성한다. 생성된 사용자 정의 POU는 다시 베이스 클래스 타입으로 캐스팅시켜 작업 리스트에 등록하는 형태로 다양한 형태의 POU를 관리한다. 작업리스트에 등록한 POU는 베이스 클래스 타입이지만 실제로 실행되는 알고리즘은 사용자 정의 POU의 주소를 지시하기 때문에 기능적으로는 사용자 정의 POU가 실행된다.
도 4는 본 발명의 S6 단계에 대한 구체적인 순서를 도시한 순서도이다.
S6 단계는 S5 단계의 사용자 정의 POU가 타입 캐스팅을 통해 베이스 POU로 변환되는 S6-1 단계, S6-1 단계에서 변환된 베이스 POU에 펑션 맵핑을 적용하여 펑션 레코드(Function Record)가 생성되는 S6-2 단계, S6-2 단계의 펑션 레코드가 광역 펑션 테이블(Global Function Table)에 등록되는 S6-3 단계, S6-3 단계에서 등록된 펑션 레코드가 펑션 블록 간의 연결 관계에 따라 관계설정이 되는 S6-4 단계, 등록된 펑션 레코드가 스케줄링되는 S6-5 단계를 포함한다.
도 5는 생성된 POU를 펑션 레코드로 맵핑하는 단계 및 펑션 테이블에 등록하여 프로세스를 등록하는 과정을 도시한 블록도이다.
생성된 POU는 펑션 맵핑 과정을 통해 펑션 레코드를 생성한다. 펑션 레코드에는 해당 POU의 우선순위, POU의 주소값, POU의 베이스 클래스 타입, POU의 연결 정보 테이블이 저장된다. 펑션 레코드 형태가 광역 펑션 테이블(Global Function Table)에 등록되어 POU를 관리하는 구조이다.
FB는 다른 FB들과 서로 데이터 및 이벤트 입출력 부분에서 연결 관계를 가질 수 있다. 펑션 레코드의 연결 테이블(Connection Table)에 연결 관계를 나타내기 위한 정보를 저장한다. 연결 테이블에는 소속된 펑션 레코드의 주소, 입력이 되는 변수 정보를 갖는 FB 주소값, 출력이 되는 변수 정보를 갖는 FB 주소값, 입출력 타입을 나타내는 변수 타입 값이 저장된다.
광역 펑션 테이블에 등록된 펑션 레코드는 우선순위에 기반을 둔 FCFS(First Come First Served)방식으로 스케줄링 될 수 있다.
도 6은 등록된 펑션 레코드를 펑션 테이블에서 호출하여 프로세스를 처리하는 과정을 도시한 블록도이다.
펑션 레코드는 각각이 독립적으로 동작하는 프로세스이다. 펑션 레코드의 fCode 정보로 맵핑할 베이스 클래스 타입을 파악한다. 펑션 맵핑 과정을 통해 베이스 클래스 타입으로 맵핑한 후 pFunction에 등록된 사용자 정의 POU 실행함수를 호출한다. 실행함수가 호출되는 순간 해당 FB가 갖는 고유의 기능을 수행하게 된다.
FB가 연결 관계를 갖는다는면 POU 실행함수의 실행이 완료된 후 관련 정보를 업데이트 한다. 연결 맵핑(Connection Mapping) 과정을 통해 연결 테이블에 저장된 FB의 연결 정보들을 업데이트 한다.
연결 관계를 갖는 FB들은 실행 완료된 POU의 연결된 결과 값으로 일괄 업데이트 된다. 이 과정은 Atomic 하게 실행됨 으로서, 변수 간 잘못된 참조현상을 방지한다. 연결 맵핑 과정을 끝마치면, 다음 펑션 레코드를 호출하는 방식으로 작업을 진행한다.
이하 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템에 대해 설명하도록 한다. 전술한 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법과 동일한 내용은 간략하게 설명하기로 한다.
도 7은 본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템(100)에 대한 개략적인 구성을 도시한 블록도이다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템은 FBN(Function Block diagram Network)을 입력받아 펑션 블록(Function Block: FB)을 분류하는 FB분류부(110), FB분류부(110)에서 분류된 펑션 블록에서 실행부분을 추출하는 실행부추출부(120), 실행부추출부(120)에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분을 구분하는 실행부구분부(130), 실행부구분부(130)에서 구분된 정적인 부분과 동적인 부분을 결합하여 베이스 클래스(Base Class)를 생성하는 베이스생성부(140) 및 펑션 블록에 사용자 정의 변수 또는 사용자 정의 알고리즘이 있는 경우, 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit) 클래스를 생성하는 POU생성부(150)를 포함한다.
FB분류부(110)는 펑션 블록을 이벤트 I/O와 데이터 I/O로 분류하고, 펑션 블록에서 사용자 정의 I/O를 분류한다.
베이스생성부(140)는 정적인 부분과 동적인 부분을 각각 클래스 파일로 구성하고, 동적인 부분의 클래스 파일이 정적인 부분의 클래스 파일을 상속받도록 하여 베이스 클래스를 생성한다.
POU생성부(150)는 베이스 클래스의 알고리즘 수행 함수를 가상함수로 구성하고, 베이스 클래스를 상속받는 사용자 정의 POU 클래스를 생성한다.
사용자 정의 POU 클래스는 사용자 정의 변수 및 사용자 정의 알고리즘을 실행 함수에 선언하고, 베이스 클래스의 가상함수를 호출하는 형태로 실행함수가 구성된다.
본 발명에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템은 베이스 클래스 또는 POU 클래스로 변환된 FBN을 관리하는 FBN관리부(160)를 더 포함할 수 있다.
FBN관리부는 사용자 정의 POU에 타입 캐스팅을 수행하여 베이스 POU로 변환하는 타입캐스팅부(161), 타입캐스팅부에서 변환된 베이스 POU에 펑션 맵핑을 적용하여 펑션 레코드(Function Record)를 생성하는 레코드생성부(162), 레코드생성부에서 생성된 펑션 레코드를 광역 펑션 테이블(Global Function Table)에 등록하는 테이블등록부(163), 테이블등록부에서 등록된 펑션 레코드를 펑션 블록 간의 연결 관계에 따라 관계설정을 수행하는 관계설정부(164) 및 관계설정부에서 관계가 설정된 펑션 레코드를 스케줄링하는 스케줄링부(165)를 포함한다.
또한 본 발명의 다른 실시예로서, 전술한 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법이 컴퓨터에서 실행되는 프로그램 형태로 구현될 수 있다. 따라서 본 발명은 컴퓨터에서 본 발명의 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체 형태로 구현가능하다.
본 실시예 및 본 명세서에 첨부된 도면은 본 발명에 포함되는 기술적 사상의 일부를 명확하게 나타내고 있는 것에 불과하며, 본 발명의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시예는 모두 본 발명의 권리범위에 포함되는 것이 자명하다고 할 것이다.
100 : FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템
110 : FB분류부 120 : 실행부추출부
130 : 실행부구분부 140 : 베이스생성부
150 : POU생성부 160 : FBN관리부
161 : 타입캐스팅부 162 : 레코드생성부
163 : 테이블등록부 164 : 관계설정부
165 : 스케줄링부

Claims (15)

  1. FBN(Function Block diagram Network)의 펑션 블록(Function Block)이 분류되는 S1 단계;
    상기 S1 단계에서 분류된 펑션 블록에서 실행부분이 추출되는 S2 단계;
    상기 S2 단계에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분이 구분되는 S3 단계;
    상기 S3 단계에서 구분된 정적인 부분과 동적인 부분이 결합되어 베이스 클래스(Base Class)가 생성되는 S4 단계; 및
    펑션 블록에 사용자 정의 변수 또는 사용자 정의 알고리즘이 있는 경우, 상기 S4 단계의 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit) 클래스가 생성되는 S5 단계를 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법.
  2. 제1항에 있어서,
    상기 S1 단계는
    상기 펑션 블록이 이벤트 I/O와 데이터 I/O로 분류되는 S1-1 단계; 및
    상기 펑션 블록에서 사용자 정의 I/O가 분류되는 S1-2 단계를 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법.
  3. 제1항에 있어서,
    상기 S4 단계는
    상기 정적인 부분과 동적인 부분이 각각 클래스 파일로 구성되는 S4-1 단계; 및
    동적인 부분의 클래스 파일이 정적인 부분의 클래스 파일을 상속받아 베이스 클래스가 생성되는 S4-2 단계를 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법.
  4. 제1항에 있어서,
    상기 S5 단계는
    베이스 클래스의 알고리즘 수행 함수가 가상함수로 구성되는 S5-1 단계; 및
    상기 S4 단계에서 생성된 베이스 클래스를 상속받는 사용자 정의 POU 클래스가 생성되는 S5-2 단계를 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법.
  5. 제4항에 있어서,
    상기 사용자 정의 POU 클래스는 사용자 정의 변수 및 사용자 정의 알고리즘을 실행 함수에 선언하고, 베이스 클래스의 가상함수를 호출하는 형태로 실행함수가 구성되는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법.
  6. 제1항에 있어서,
    상기 베이스 클래스 또는 POU 클래스로 변환된 FBN을 관리하는 S6 단계를 더 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법.
  7. 제6항에 있어서,
    상기 S6 단계는
    상기 S5 단계의 사용자 정의 POU가 타입 캐스팅을 통해 베이스 POU로 변환되는 S6-1 단계;
    상기 S6-1 단계에서 변환된 베이스 POU에 펑션 맵핑을 적용하여 펑션 레코드(Function Record)가 생성되는 S6-2 단계;
    상기 S6-2 단계의 펑션 레코드가 광역 펑션 테이블(Global Function Table)에 등록되는 S6-3 단계;
    상기 S6-3 단계에서 등록된 펑션 레코드가 펑션 블록 간의 연결 관계에 따라 관계설정이 되는 S6-4 단계;
    상기 등록된 펑션 레코드가 스케줄링되는 S6-5 단계를 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법.
  8. FBN(Function Block diagram Network)을 입력받아 펑션 블록(Function Block: FB)을 분류하는 FB분류부;
    상기 FB분류부에서 분류된 펑션 블록에서 실행부분을 추출하는 실행부추출부;
    상기 실행부추출부에서 추출된 펑션 블록의 실행부분에서 정적인 부분과 동적인 부분을 구분하는 실행부구분부;
    상기 실행부구분부에서 구분된 정적인 부분과 동적인 부분을 결합하여 베이스 클래스(Base Class)를 생성하는 베이스생성부; 및
    펑션 블록에 사용자 정의 변수 또는 사용자 정의 알고리즘이 있는 경우, 상기 베이스 클래스를 수정하여 사용자 정의 POU(Program Organization Unit) 클래스를 생성하는 POU생성부를 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템.
  9. 제8항에 있어서,
    상기 FB분류부는 상기 펑션 블록을 이벤트 I/O와 데이터 I/O로 분류하고, 상기 펑션 블록에서 사용자 정의 I/O를 분류하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템.
  10. 제8항에 있어서,
    상기 베이스생성부는 상기 정적인 부분과 동적인 부분을 각각 클래스 파일로 구성하고, 동적인 부분의 클래스 파일이 정적인 부분의 클래스 파일을 상속받도록 하여 베이스 클래스를 생성하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템.
  11. 제8항에 있어서,
    상기 POU생성부는
    상기 베이스 클래스의 알고리즘 수행 함수를 가상함수로 구성하고, 상기 베이스 클래스를 상속받는 사용자 정의 POU 클래스를 생성하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템.
  12. 제11항에 있어서,
    상기 사용자 정의 POU 클래스는 사용자 정의 변수 및 사용자 정의 알고리즘을 실행 함수에 선언하고, 베이스 클래스의 가상함수를 호출하는 형태로 실행함수가 구성되는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템.
  13. 제8항에 있어서,
    상기 베이스 클래스 또는 POU 클래스로 변환된 FBN을 관리하는 FBN관리부를 더 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템.
  14. 제13항에 있어서,
    상기 FBN관리부는
    상기 사용자 정의 POU에 타입 캐스팅을 수행하여 베이스 POU로 변환하는 타입캐스팅부;
    상기 타입캐스팅부에서 변환된 베이스 POU에 펑션 맵핑을 적용하여 펑션 레코드(Function Record)를 생성하는 레코드생성부;
    상기 레코드생성부에서 생성된 펑션 레코드를 광역 펑션 테이블(Global Function Table)에 등록하는 테이블등록부;
    상기 테이블등록부에서 등록된 펑션 레코드를 펑션 블록 간의 연결 관계에 따라 관계설정을 수행하는 관계설정부; 및
    상기 관계설정부에서 관계가 설정된 펑션 레코드를 스케줄링하는 스케줄링부를 포함하는 것을 특징으로 하는 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 시스템.
  15. 제1항 내지 제7항에 중 어느 한 항에 따른 FBN 기반의 PLC 코드를 범용 프로그램 코드로 변환하는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.

KR1020110014871A 2011-02-21 2011-02-21 Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템 KR101216916B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110014871A KR101216916B1 (ko) 2011-02-21 2011-02-21 Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110014871A KR101216916B1 (ko) 2011-02-21 2011-02-21 Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20120095512A true KR20120095512A (ko) 2012-08-29
KR101216916B1 KR101216916B1 (ko) 2012-12-28

Family

ID=46885930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110014871A KR101216916B1 (ko) 2011-02-21 2011-02-21 Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101216916B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101627769B1 (ko) * 2015-12-17 2016-06-08 주식회사 유디엠텍 Plc 제어 프로그램의 공용형식 변환장치 및 방법
WO2017018670A1 (ko) * 2015-07-29 2017-02-02 주식회사 유디엠텍 이기종 plc 설비정보를 동일 포맷의 모듈로 생성하는 방법
CN111857028A (zh) * 2020-06-24 2020-10-30 广州明珞汽车装备有限公司 一种plc程序生成方法、系统、设备及存储介质
CN113311764A (zh) * 2021-05-31 2021-08-27 东莞市木鸟自动化有限公司 基于单片机作为底层载体的可编程控制器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090083719A1 (en) 2007-09-20 2009-03-26 Delta Electronics, Inc. Method of compiling machine code program for programmable logic controller

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017018670A1 (ko) * 2015-07-29 2017-02-02 주식회사 유디엠텍 이기종 plc 설비정보를 동일 포맷의 모듈로 생성하는 방법
KR101627769B1 (ko) * 2015-12-17 2016-06-08 주식회사 유디엠텍 Plc 제어 프로그램의 공용형식 변환장치 및 방법
WO2017104934A1 (ko) * 2015-12-17 2017-06-22 주식회사 유디엠텍 Plc 제어 프로그램의 공용형식 변환장치 및 방법
CN111857028A (zh) * 2020-06-24 2020-10-30 广州明珞汽车装备有限公司 一种plc程序生成方法、系统、设备及存储介质
CN113311764A (zh) * 2021-05-31 2021-08-27 东莞市木鸟自动化有限公司 基于单片机作为底层载体的可编程控制器

Also Published As

Publication number Publication date
KR101216916B1 (ko) 2012-12-28

Similar Documents

Publication Publication Date Title
EP1988497A2 (en) Deriving grounded model of business process suitable for automatic deployment
EP2223282A1 (en) Automated model generation for computer based business process
CN104778124A (zh) 一种软件应用自动化测试方法
US20090241088A1 (en) Creating graphical models representing control flow of a program manipulating data resources
US8701079B2 (en) Procedure and development environment for generation of an executable overall control program
KR101216916B1 (ko) Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템
CN112748908A (zh) 基于SSM框架的Restful服务开发方法与装置
CN111506314B (zh) 项目开发的方法、装置、服务器及介质
WO2022188780A1 (zh) 视觉软件开发系统、方法、装置及计算机存储介质
CN114064213B (zh) 基于Kubernets容器环境的快速编排服务方法及系统
CN106600226B (zh) 用于优化流程管理系统的方法及装置
WO2017109791A1 (en) A system and method for building enterprise applications
da Silva et al. XIS-UML profile for extreme modeling interactive systems
CN104699503A (zh) 一种替换安卓系统中函数的执行逻辑的方法及装置
CN114912897A (zh) 工作流执行方法、工作流编排方法及电子设备
KR101243437B1 (ko) Plc 기반 제어 코드를 xml 인터페이스를 이용하여 범용 프로그램 코드로 변환하는 방법 및 프레임워크 시스템
CN115860451A (zh) 一种流程运行方法、装置、电子设备及存储介质
CN109144512A (zh) 一种生成api的方法和系统
JP7331716B2 (ja) フィールドデバイスを稼働するためのシステム、方法、およびコンピュータによって実施されるプログラム
EP2930576A1 (en) Controlling a manufacturing plant with a MES system
Gutschier et al. A pitfall with BPMN execution
CN110956025A (zh) 一种基于流程模板复用的方法
JP5426578B2 (ja) コードレスプロビジョニング
EP2487628A1 (en) An integrated engineering and workflow system for engineering and executing workflows of mechatronic objects
Pinto et al. Icaru-fb: An IEC 61499 compliant multiplatform software infrastructure

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee