KR102268795B1 - 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법 - Google Patents

프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법 Download PDF

Info

Publication number
KR102268795B1
KR102268795B1 KR1020190033539A KR20190033539A KR102268795B1 KR 102268795 B1 KR102268795 B1 KR 102268795B1 KR 1020190033539 A KR1020190033539 A KR 1020190033539A KR 20190033539 A KR20190033539 A KR 20190033539A KR 102268795 B1 KR102268795 B1 KR 102268795B1
Authority
KR
South Korea
Prior art keywords
language
memory
mapping
program
function
Prior art date
Application number
KR1020190033539A
Other languages
English (en)
Other versions
KR20200113405A (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 KR1020190033539A priority Critical patent/KR102268795B1/ko
Priority to CN201980094633.4A priority patent/CN113632016A/zh
Priority to PCT/KR2019/012078 priority patent/WO2020197011A1/ko
Publication of KR20200113405A publication Critical patent/KR20200113405A/ko
Application granted granted Critical
Publication of KR102268795B1 publication Critical patent/KR102268795B1/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/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
    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/408Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by data handling or data format, e.g. reading, buffering or conversion of data
    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4093Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by part programming, e.g. entry of geometrical information as taken from a technical drawing, combining this with machining and material information to obtain control information, named part programme, for the NC machine
    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4093Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by part programming, e.g. entry of geometrical information as taken from a technical drawing, combining this with machining and material information to obtain control information, named part programme, for the NC machine
    • G05B19/40931Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by part programming, e.g. entry of geometrical information as taken from a technical drawing, combining this with machining and material information to obtain control information, named part programme, for the NC machine concerning programming of geometry
    • G05B19/40936Defining geometry with a high level language

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Geometry (AREA)
  • Programmable Controllers (AREA)

Abstract

본 발명은 사용자의 유지 보수 편의성을 높이고 익숙한 프로그램 언어가 다른 사용자가 공동으로 프로젝트를 수행할 때 협업할 수 있도록 함으로써 높여 수행 기간 단축과 비용 절감 효과를 얻고자 IEC 언어에서 지원하는 사용자 펑션/펑션 블록 기능을 이용하여 제조사에서 정의한 언어를 IEC 언어에 통합하는 메모리 매핑 방법을 제공하는 것이다. 본 발명에 따른 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법은 (A) PADT(Program And Debugging Tool)에 제1 언어의 사용자 펑션/펑션블록에서 제2 언어를 지원하는 언어 설정창을 추가하는 단계; (B) 상기 추가된 언어 설정창에서 선택된 제2 언어로 사용자 펑션/펑션블록에 프로그램이 작성되는 단계; (C) 테이블 생성부를 통해 상기 제1 언어와 제2 언어를 서로 매핑시키기 위한 매핑 테이블을 생성하는 단계; (D) 매핑 처리부를 통해 상기 생성된 매핑 테이블을 기반으로 PADT의 언어 설정창에 설정된 제2 언어로 프로그램에서 사용할 변수를 매핑하는 단계; 및 (E) 어셈블 변환부를 통해 상기 매핑 처리부에서 매핑된 변수를 기반으로 서로 다른 언어로 작성된 프로그램을 하나의 언어로 변환하는 단계를 포함할 수 있다.

Description

프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법{A Method of Memory Mapping for Mixing Programming Language and Manufacturer-defined Language}
본 발명은 제조사에서 정의한 언어(MK 언어)의 명령어를 호출하는 방식을 유지하면서 프로그램 언어(IEC61131-3에서 정의한 언어)의 사용자 펑션/펑션블록에서 제조사에서 정의한 언어를 사용할 수 있도록 메모리를 구성하는 방법을 개선하여 프로그램 언어와 제조사에서 정의한 언어의 혼용을 지원하기 위한 메모리 매핑 방법에 관한 것이다.
PLC(programmable logic controller)는 산업 플랜트의 자동 제어 및 감시에 사용하는 제어 장치이다. PLC는 입력을 프로그램에 의해 순차적으로 논리 처리하고 그 출력 결과를 이용해 연결된 외부장치를 제어한다. PLC는 스위치 등을 통해 입력신호가 들어가면 프로그램 내부의 동작 기술에 의해 내부에서 처리되고 결과물은 최종적으로 출력코일에 나타난다. 그리고 출력된 제어 대상의 동작이 전체 시스템을 제어하게 된다.
프로그램 내부의 동작은 IEC61131-3에서 정의한 언어(LD(ladder Diagram), IL(Instruction List), ST(structured Text), FBD(Function Block Diagram), 이후 IEC 언어로 칭함)와 제조사에서 정의한 언어(LS산전의 경우 MASTER-K제품, 이후 MK 언어로 칭함)로 기술한다.
프로그램 언어는 기본적으로 a-접점 스위치, b-접점 스위치, 타이머, 논리연산 명령어를 가지며, 통신 등 기타 다양한 기능을 갖는 기능 블록은 업체에 따라 다양하게 구성될 수 있다.
그러나 프로그램 언어는 사용자마다 사용하는 프로그램 언어가 달라 하나의 하드웨어(H/W)에 프로그램 언어 별로 운영체제(O/S)를 구성하는 형태를 취하고 있다.
도 1은 사용자가 PADT(Program And Debugging Tool)을 이용하여 MK 언어로 작성한 프로그램의 실시예이다.
이때, MK 언어의 특징은 Byte, Word, Double Word, Floating 등 데이터 타입에 따른 연산 구분을 입력 변수의 타입으로 지정하지 않고 명령어에 변수 타입을 부여하는 방식이다.
즉, 도 1에서 도시하고 있는 것과 같이, Add 연산의 경우 Word 타입 연산은
Figure 112019030316366-pat00001
과 같이 ADD 명령을 사용한다. 그리고 Double Word 타입 연산은
Figure 112019030316366-pat00002
과 같이 DADD 명령을 사용한다.
여기에서 입력 데이터는 D00000, D00002, D00004로 동일함을 확인할 수 있다. 또한 일반적으로 제공하는 Timer 명령의 경우 타이머용 메모리(T0000)를 별도로 할당하여 사용하고 있다.
도 2는 사용자가 PADT(Program And Debugging Tool)을 이용하여 IEC-61131-3 언어로 작성한 프로그램의 실시예이다.
이때, IEC 언어의 특징은 데이터 타입에 따른 연산 구분을 입력 변수에 타입을 지정하여 연산을 결정하는 방식이다.
도 2에서 도시하고 있는 것과 같이, 동일 명령어(예, ADD)에 대해 입력 데이터가 %MW0, %MW1인 경우에는 Word 연산을 수행하고, %MD0, %MD1인 경우에는 Double Word 연산을 수행한다.
또한 일반적으로 제공하는 Timer 명령의 경우 별도의 메모리 없이 명령어 내부에 타이머용 메모리를 별도 할당하여 사용하고 있다.
도 3은 IEC 언어를 지원하는 PADT의 프로젝트 구조를 나타낸 실시예이다.
도 3에서 도시하고 있는 것과 같이, IEC 언어에서는 사용자 펑션/펑션 블록을 지원하고 있음을 알 수 있다. 사용자 펑션/펑션블록은 PLC에서 지원하는 기본 명령어(Addition, Subtraction, Multiplication, Division) 외에 사용자가 특수 어플리케이션에 적용하기 위해 기본 명령어를 이용하여 작성할 수 있다.
사용자가 작성한 펑션/펑션블록은 C언어에서 함수처럼 다른 프로젝트에서 동일한 기능을 사용할 경우 해당 사용자 펑션/펑션 블록을 이용하여 구현할 수 있다.
도 4는 도 3에서 사용자 펑션/펑션블록에서 사용할 변수를 지정하는 창을 나타낸 실시예이다.
도 4(a)는 IEC 언어에서 지원하는 데이터 타입(BOOL, BYTE, WORD, DWORD, 어레이(어레이 변수의 경우에도 타입별로 지정 가능))의 실시예이고, 도 4(b)는 어레이 변수일 경우의 변수 생성 방법의 실시예이며, 도 4(c)는 도 4(a) 및 도 4(b)를 통해 생성된 변수의 실시예를 보여주고 있다.
그리고 도 5는 도 4에서 정의한 변수를 이용하여 사용자 펑션/펑션블록에서 ADD 명령을 구현한 프로그램의 실시예이다.
이처럼, 종래에는 프로그램 언어와 제조사에서 정의한 언어가 서로 상이한 차이를 나타내고 있습니다.
즉, 프로그램 언어와 제조사에서 정의한 언어는 첫째, 명령어를 사용하는 방법(예, ADD, DADD(MK언어)와 ADD(IEC언어))에 차이가 있으며, 둘째, 메모리를 사용하는 방법(예, M0000(MK언어)과 %MW0000(IEC언어))에 차이가 있다. 그리고 셋째, 메모리 구성(예, MK 언어의 경우 타이머(T0000)존재)에서 차이가 있다.
이러한 차이로 인해, 현재까지 대부분의 PLC는 두 언어를 지원하기 위해 하나의 하드웨어(H/W)에 언어 별로 상이한 운영체제(O/S)를 개발, 관리하고 있다. 이에 따라, 사용자 마다 상이한 언어에 익숙한 경우 공동 작업이 어려운 문제점이 있었다.
또한 IEC 언어에서만 지원하는 명령어가 있을 경우 MK 언어를 사용하는 사용자는 직접 구현해야 하는 번거로운 문제점이 있었다.
본 발명의 목적은 사용자의 유지 보수 편의성을 높이고 익숙한 프로그램 언어가 다른 사용자가 공동으로 프로젝트를 수행할 때 협업할 수 있도록 함으로써 높여 수행 기간 단축과 비용 절감 효과를 얻고자 IEC 언어에서 지원하는 사용자 펑션/펑션 블록 기능을 이용하여 제조사에서 정의한 언어를 IEC 언어에 통합하는 메모리 매핑 방법을 제공하는 것이다.
또한 본 발명의 목적은 종래의 첫 번째 문제점을 해결하기 위해, 제조사에서 정의한 언어(MK 언어)의 명령어를 호출하는 방식을 유지하는 메모리 매핑 방법을 제공하는 것이다.
또한, 본 발명의 목적은 종래의 두 번째 및 세 번째 문제점을 해결하기 위해, 프로그램 언어(IEC61131-3에서 정의한 언어)의 사용자 펑션/펑션블록에서 제조사에서 정의한 언어를 사용할 수 있도록 메모리를 구성하는 방법을 개선하여 프로그램 언어와 제조사에서 정의한 언어의 혼용을 지원하기 위한 메모리 매핑 방법을 제공하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
본 발명에 따른 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법은 (A) PADT(Program And Debugging Tool)에 제1 언어의 사용자 펑션/펑션블록에서 제2 언어를 지원하는 언어 설정창을 추가하는 단계; (B) 상기 추가된 언어 설정창에서 선택된 제2 언어로 사용자 펑션/펑션블록에 프로그램이 작성되는 단계; (C) 테이블 생성부를 통해 상기 제1 언어와 제2 언어를 서로 매핑시키기 위한 매핑 테이블을 생성하는 단계; (D) 매핑 처리부를 통해 상기 생성된 매핑 테이블을 기반으로 PADT의 언어 설정창에 설정된 제2 언어로 프로그램에서 사용할 변수를 매핑하는 단계; 및 (E) 어셈블 변환부를 통해 상기 매핑 처리부에서 매핑된 변수를 기반으로 서로 다른 언어로 작성된 프로그램을 하나의 언어로 변환하는 단계를 포함할 수 있다.
또한, 상기 제1 언어는 IEC 언어는 프로그램 언어로서, IEC61131-3에서 정의한 언어(LD(ladder Diagram), IL(Instruction List), ST(structured Text), FBD(Function Block Diagram)를 포함하고, 상기 제2 언어는 제조사에서 정의한 언어로서, MASTER-K제품 언어(MK 언어)를 포함할 수 있다.
또한, 상기 매핑 테이블은 사용자 펑션/펑션블록의 제2 언어에서 사용할 메모리, 구분, 크기, 타입, 메모리 시작 주소, 할당된 메모리 주소로 분류하여 생성할 수 있다.
또한, 상기 매핑 테이블의 생성은 상기 제1 언어 및 상기 제2 언어에서 사용되는 동일 메모리 이름을 재정의하는 단계; 상기 제1 언어 및 상기 제2 언어에서 사용되는 메모리를 블록 사이즈로 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하는 단계; 상기 제1 언어 및 상기 제2 언어에서 사용되는 동일이름의 변수를 타입 별로 지정하는 단계를 포함할 수 있다.
또한, 상기 매핑 테이블은 제1 언어에서 사용자 펑션/펑션블록 사용 시 사용하던 변수 타입을 지정할 수 있다.
또한, 상기 (E) 단계는 어셈블 변환부를 통해 상기 매핑된 변수를 기반으로 사용자 펑션/펑션블록에 작성한 제2 언어의 프로그램을 매핑 테이블을 이용하여 제1 언어에서 호출하여 변환할 수 있다.
또한, 상기 (E) 단계는 메모리 블록의 사이즈를 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하는 단계; 동일이름의 변수를 타입 별로 지정하는 단계; 및 서로 다른 언어로 작성된 프로그램을 하나의 언어로 변환하는 단계를 포함할 수 있다.
또한, 본 발명에 따른 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법은 PADT(Program And Debugging Tool)에 제1 언어로 작성된 프로그램과 제2 언어로 작성된 프로그램을 입력받는 단계; 매핑 처리부를 통해 함수 형태의 사용자 펑션/펑션블록에 메모리 블록의 사이즈를 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하고, 동일이름의 변수를 타입 별로 지정하는 단계; 어셈블 변환부를 통해, 사용자 펑션/펑션블록에 작성한 제2 언어의 프로그램을 제1 언어에서 호출하여 제1 언어의 프로그램으로 변환하는 단계; 및 상기 제1 언어로 작성된 프로그램과 함께, 상기 제1 언어로 변환된 프로그램을 함께 구현하여, IEC 프로젝트에서 유기적으로 동작하는 단계를 포함할 수 있다.
본 발명에 따는 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법은 각각 IEC 언어와 MK 언어를 사용자들이 공동으로 PLC 프로그램을 작성할 경우 언어에 구애받지 않고 프로젝트를 수행할 수 있는 효과를 얻을 수 있다.
또한 현재 하나의 하드웨어(H/W)에 2개의 언어 지원을 위한 운영체제(O/S) 개발로 소요되는 시간과 경비를 절약할 수 있다.
상술한 효과와 더불어 본 발명의 구체적인 효과는 이하 발명을 실시하기 위한 구체적인 사항을 설명하면서 함께 기술한다.
도 1은 사용자가 PADT(Program And Debugging Tool)을 이용하여 MK 언어로 작성한 프로그램의 실시예이다.
도 2는 사용자가 PADT(Program And Debugging Tool)을 이용하여 IEC-61131-3 언어로 작성한 프로그램의 실시예이다.
도 3은 IEC 언어를 지원하는 PADT의 프로젝트 구조를 나타낸 실시예이다.
도 4는 도 3에서 사용자 펑션/펑션블록에서 사용할 변수를 지정하는 창을 나타낸 실시예이다.
도 5는 도 4에서 정의한 변수를 이용하여 사용자 펑션/펑션블록에서 ADD 명령을 구현한 프로그램의 실시예이다.
도 6은 PLC용 프로그래밍 장치에서 PADT의 프로젝트 구조에서 사용자 펑션/펑션블록에서 사용할 변수를 지정하는 창을 나타낸 실시예이다.
도 7은 도 6에서 PLC용 프로그래밍 장치의 구성을 나타낸 블록도이다.
도 8은 도 7의 테이블 생성부에서 생성된 IEC 언어에서 정의한 메모리와 MK 언어에서 사용하는 메몰 간의 매핑 테이블을 나타낸 도면이다.
도 9는 사용자 펑션/펑션블록에 작성한 MK 언어의 프로그램을 IEC 언어에서 호출하여 변환된 결과를 나타낸 실시예이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
이하에서 어떤 구성요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 상기 구성요소들은 서로 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성요소 사이에 다른 구성요소가 "개재"되거나, 각 구성요소가 다른 구성요소를 통해 "연결", "결합" 또는 "접속"될 수도 있는 것으로 이해되어야 할 것이다.
이하에서는, 본 발명의 몇몇 실시예에 따른 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법을 설명하도록 한다.
도 6은 PLC용 프로그래밍 장치에서 PADT의 프로젝트 구조에서 사용자 펑션/펑션블록에서 사용할 변수를 지정하는 창을 나타낸 실시예이다. 그리고 도 7은 PLC용 프로그래밍 장치의 구성을 나타낸 블록도이고, 도 8은 도 7의 테이블 생성부에서 생성된 IEC 언어에서 정의한 메모리와 MK 언어에서 사용하는 메몰 간의 매핑 테이블을 나타낸 도면이다.
이때, PLC용 프로그래밍 장치는 도 7에서 도시하고 있는 것과 같이, 테이블 생성부(100), 매핑 처리부(200), 어셈블 변환부(300)를 포함할 수 있다. 그리고 PLC용 프로그래밍 장치는 키패드 및 모니터, 터치스크린 등과 같은 데이터 입출력을 위한 입출력부(미도시)를 더 포함할 수 있다.
도 6에서 도시하고 있는 것과 같이, PADT(Program And Debugging Tool)에 IEC 언어의 사용자 펑션/펑션블록에서 MK(MASTER-K) 언어를 지원하는 언어 설정창을 추가한다. 이처럼, 사용자로부터 PADT의 언어 설정창에 MK 언어가 선택되면 해당 펑션/펑션블록이 MK 언어로 작성될 것임을 확인한다.
이때, IEC 언어는 프로그램 언어로서, IEC61131-3에서 정의한 언어(LD(ladder Diagram), IL(Instruction List), ST(structured Text), FBD(Function Block Diagram)를 포함한다. 그리고 MK 언어는 제조사에서 정의한 언어(LS산전의 경우 MASTER-K제품)일 수 있다.
그리고 MK 언어와 IEC 언어를 서로 매핑 시키기 위한 테이블을 생성하여, 기존의 IEC 언어에서 사용자 펑션/펑션블록 사용 시 사용하던 변수 타입을 MK 언어로 매핑할 수 있도록 할 수 있다.
테이블을 이용하여, MK 언어의 M0000~M0099를 지원하기 위해서는 테이블을
Figure 112019030316366-pat00003
와 같이 변수 종류, 변수, 타입 및 메모리 할당 등으로 분류하여 1:1로 매핑하거나 어레이로 등록할 수 있다.
그러나, 1:1 매핑은 많은 시간 소요와 수정이 용이하지 못한 단점이 있고,
Figure 112019030316366-pat00004
와 같이 어레이로 지정할 경우 메모리 직접 지정 방식인 MK 언어에서 사용이 불가능하다. 또한 타이머의 경우 동일한 변수명으로 타입별(현재값(Word), 설정값(Word), 상태값(bit))로 구분된 변수를 제공하여야 하나 사용자 펑션/펑션블록의 변수 타입 지정 방식으로는 하나의 이름에 여러 타입을 지정할 수 없다.
따라서, 본 발명은 다음 3가지 측면에서 제조사 언어를 지원할 수 있는 테이블을 도 7의 테이블 생성부(100)에서 생성할 수 있다.
첫째로, 동일 메모리 이름을 재정의하여 사용할 수 있도록 한다. 즉, 프로그램 언어와 제조사에서 정의한 언어는 메모리를 사용하는 방법(예, M0000(MK 언어)과 %MW0000(IEC 언어))에 차이가 있기 때문이다.
따라서, %MW0000 메모리 이름을 M0000로 재정의할 수 있다면 IEC 언어에서 정의된 메모리 이름과 제조사에서 정의한 메모리 이름이 동일하여도 혼용이 가능하여 프로그래머에 따라 자신의 언어로 용도를 지정하여 사용할 수 있게 된다.
둘째로, 하나의 이름으로 비트/워드를 모두 쓸 수 있기 때문에 메모리를 배열로 지정하면 호환이 안되는 경우가 있다. 따라서 메모리 블록의 사이즈를 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하는 기능을 지원한다.
셋째로, 동일이름의 변수를 타입별로 지정할 수 있도록 하여 다양한 타입을 동일 이름으로 사용하는 프로그램 언어를 지원할 수 있게 한다. 즉, 프로그램 언어와 제조사에서 정의한 언어는 동일 이름으로 명령어를 사용하는 방법(예, ADD, DADD(MK 언어)와 ADD(IEC 언어))에 차이가 있기 때문이다.
도 8은 도 7의 테이블 생성부에서 생성된 IEC 언어에서 정의한 메모리와 MK 언어에서 사용하는 메몰 간의 매핑 테이블을 나타낸 도면이다.
이때, 매핑 테이블은 사용자 펑션/펑션블록의 제2 언어에서 사용할 메모리, 구분, 크기, 타입, 메모리 시작 주소, 할당된 메모리 주소로 분류하여 생성할 수 있다. 그리고 매핑 테이블은 메모리 구성 방식을 MK 언어와 동일하게 하기 위해 기존의 IEC 언어에서 사용자 펑션/펑션블록 사용 시 사용하던 변수 타입을 지정할 수 있도록 저장된다.
매핑 처리부(200)는 프로그램 과정을 수행하는 부분으로, MK 언어로 선택된 제1 함수가 MK 언어로 프로그래밍할 수 있으며, 또한 IEC 언어로 선택된 제2 함수가 IEC 언어로 프로그래밍 할 수 있다.
그리고 매핑 처리부(200)는 도 8에서 나타낸 매핑 테이블을 기반으로 PADT의 언어 설정창에 설정된 MK 언어로 프로그램에서 사용할 변수를 매핑한다. 도 8의 매핑 테이블이 지원되면 도 1에서 도시하고 있는 MK 언어로 작성된 프로그램을 수정 없이 IEC 언어로 적용할 수 있다.
즉, 사용자마다 사용하는 프로그램 언어가 달라 제1 사용자는 도 1에서 도시하고 있는 MK 언어로 프로그램을 작성하고, 제2 사용자는 도 2에서 도시하고 있는 IEC 언어로 프로그램을 작성하는 경우에도, 매핑 처리부(200)를 통해 MK 언어로 작성된 프로그램을 수정 없이 IEC 언어로 적용할 수 있게 된다.
이어서 어셈블 변환부(300)는 컴파일 과정을 수행하는 부분으로, 매핑 처리부(200)로부터 프로그래밍된 MK 언어 또는 IEC 언어를 각각 컴파일링시켜 기계어로 번역해 주며, 각각 번역된 기계어를 하나의 기계어로 통합시킨다.
즉, 어셈블 변환부(300)는 매핑 처리부(200)에서 매핑된 변수를 이용하여 메모리 블록의 사이즈를 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하고, 동일이름의 변수를 타입별로 지정함으로써, 서로 다른 언어로 작성된 프로그램을 하나의 언어로 변환한다. 즉, 어셈블 변환부(300)는 사용자 펑션/펑션블록에 작성한 MK 언어의 프로그램을 매핑 테이블을 이용하여 IEC 언어에서 호출하여 변환한다.
이를 통해, 어셈블 변환부(300)는 사용자 펑션/펑션블록에 작성한 MK 언어의 프로그램이 IEC 언어에서 호출하여 유기적으로 동작할 수 있도록 변환한다.
도 9는 사용자 펑션/펑션블록에 작성한 MK 언어의 프로그램을 IEC 언어에서 호출하여 변환된 결과를 나타낸 실시예이다.
도 9에서 도시하고 있는 것과 같이, PADT(Program And Debugging Tool)은 제1 사용자로부터 도 1에서 도시하고 있는 MK 언어로 작성된 프로그램과 제2 사용자는 도 2에서 도시하고 있는 IEC 언어로 작성된 프로그램을 입력 받는다.
이후, 매핑 처리부(200)를 통해 함수 형태의 사용자 펑션/펑션 블록에 메모리 블록의 사이즈를 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하고, 동일이름의 변수를 타입 별로 지정한다.
그리고 어셈블 변환부(300)를 통해, 사용자 펑션/펑션블록에 작성한 MK 언어의 프로그램을 IEC 언어에서 호출하여 IEC 언어의 프로그램(301)으로 변환한다.
그리고 PADT(Program And Debugging Tool)은 도 2의 IEC 언어로 작성된 프로그램과 함께, 어셈블 변환부(300)에서 IEC 언어로 변환된 프로그램(301)을 함께 구현하여, IEC 프로젝트에서 유기적으로 동작할 수 있도록 한다.
이에 따라, PADT(Program And Debugging Tool)은 각각 IEC 언어와 MK 언어를 사용자들이 공동으로 PLC 프로그램을 작성할 경우 언어에 구애받지 않고 프로젝트를 수행할 수 있게 된다.
이상과 같이 본 발명에 대해서 예시한 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시 예와 도면에 의해 본 발명이 한정되는 것은 아니며, 본 발명의 기술사상의 범위 내에서 통상의 기술자에 의해 다양한 변형이 이루어질 수 있음은 자명하다. 아울러 앞서 본 발명의 실시 예를 설명하면서 본 발명의 구성에 따른 작용 효과를 명시적으로 기재하여 설명하지 않았을지라도, 해당 구성에 의해 예측 가능한 효과 또한 인정되어야 함은 당연하다.

Claims (8)

  1. (A) PADT(Program And Debugging Tool)에 제1 언어의 사용자 펑션/펑션블록에서 제2 언어를 지원하는 언어 설정창을 추가하는 단계;
    (B) 상기 추가된 언어 설정창에서 선택된 제2 언어로 사용자 펑션/펑션블록에 프로그램이 작성되는 단계;
    (C) 테이블 생성부를 통해 상기 제1 언어와 제2 언어를 서로 매핑시키기 위한 매핑 테이블을 생성하는 단계;
    (D) 매핑 처리부를 통해 상기 생성된 매핑 테이블을 기반으로 PADT의 언어 설정창에 설정된 제2 언어로 프로그램에서 사용할 변수를 매핑하는 단계; 및
    (E) 어셈블 변환부를 통해 상기 매핑 처리부에서 매핑된 변수를 기반으로 서로 다른 언어로 작성된 프로그램을 하나의 언어로 변환하는 단계를 포함하고,
    상기 (E) 단계는
    메모리 블록의 사이즈를 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하는 단계;
    동일이름의 변수를 타입 별로 지정하는 단계; 및
    서로 다른 언어로 작성된 프로그램을 하나의 언어로 변환하는 단계를 포함하는 메모리 매핑 방법.
  2. 제1 항에 있어서,
    상기 제1 언어는 IEC 언어는 프로그램 언어로서, IEC61131-3에서 정의한 언어(LD(ladder Diagram), IL(Instruction List), ST(structured Text), FBD(Function Block Diagram)를 포함하고,
    상기 제2 언어는 제조사에서 정의한 언어로서, MASTER-K제품 언어(MK 언어)를 포함하는 메모리 매핑 방법.
  3. 제1 항에 있어서,
    상기 매핑 테이블은 사용자 펑션/펑션블록의 제2 언어에서 사용할 메모리, 구분, 크기, 타입, 메모리 시작 주소, 할당된 메모리 주소로 분류하여 생성하는 메모리 매핑 방법.
  4. 제3 항에 있어서,
    상기 매핑 테이블의 생성은
    상기 제1 언어 및 상기 제2 언어에서 사용되는 동일 메모리 이름을 재정의하는 단계;
    상기 제1 언어 및 상기 제2 언어에서 사용되는 메모리를 블록 사이즈로 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하는 단계;
    상기 제1 언어 및 상기 제2 언어에서 사용되는 동일이름의 변수를 타입 별로 지정하는 단계를 포함하는 메모리 매핑 방법.
  5. 제4 항에 있어서,
    상기 매핑 테이블은 제1 언어에서 사용자 펑션/펑션블록 사용 시 사용하던 변수 타입을 지정하는 메모리 매핑 방법.
  6. 제1 항에 있어서,
    상기 (E) 단계는
    어셈블 변환부를 통해 상기 매핑된 변수를 기반으로 사용자 펑션/펑션블록에 작성한 제2 언어의 프로그램을 매핑 테이블을 이용하여 제1 언어에서 호출하여 변환하는 단계를 더 포함하는 메모리 매핑 방법.
  7. 삭제
  8. PADT(Program And Debugging Tool)에 제1 언어로 작성된 프로그램과 제2 언어로 작성된 프로그램을 입력받는 단계;
    매핑 처리부를 통해 함수 형태의 사용자 펑션/펑션블록에 메모리 블록의 사이즈를 지정하여 1:1로 메모리 이름에 숫자를 증가시켜 매핑하고, 동일이름의 변수를 타입 별로 지정하는 단계;
    어셈블 변환부를 통해, 사용자 펑션/펑션블록에 작성한 제2 언어의 프로그램을 제1 언어에서 호출하여 제1 언어의 프로그램으로 변환하는 단계; 및
    상기 제1 언어로 작성된 프로그램과 함께, 상기 제1 언어로 변환된 프로그램을 함께 구현하여, IEC 프로젝트에서 유기적으로 동작하는 단계를 포함하는 메모리 매핑 방법.
KR1020190033539A 2019-03-25 2019-03-25 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법 KR102268795B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190033539A KR102268795B1 (ko) 2019-03-25 2019-03-25 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법
CN201980094633.4A CN113632016A (zh) 2019-03-25 2019-09-18 用于混合使用编程语言和制造商定义的语言的内存映射方法
PCT/KR2019/012078 WO2020197011A1 (ko) 2019-03-25 2019-09-18 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190033539A KR102268795B1 (ko) 2019-03-25 2019-03-25 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법

Publications (2)

Publication Number Publication Date
KR20200113405A KR20200113405A (ko) 2020-10-07
KR102268795B1 true KR102268795B1 (ko) 2021-06-23

Family

ID=72610631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190033539A KR102268795B1 (ko) 2019-03-25 2019-03-25 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법

Country Status (3)

Country Link
KR (1) KR102268795B1 (ko)
CN (1) CN113632016A (ko)
WO (1) WO2020197011A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116775038B (zh) * 2023-06-26 2024-06-04 国电南京自动化股份有限公司 支持iec和c++任务同时或独立运行的运行时系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140173557A1 (en) * 2008-09-30 2014-06-19 Ics Triplex Isagraf Inc. Multi language editor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055907B2 (en) * 2003-10-24 2011-11-08 Microsoft Corporation Programming interface for a computer platform
KR100976324B1 (ko) * 2008-05-22 2010-08-16 엘에스산전 주식회사 Padt를 이용한 plc의 프로그램 쓰기 방법
JP5867540B2 (ja) * 2013-04-26 2016-02-24 キヤノンマーケティングジャパン株式会社 プログラム生成装置、プログラム生成装置の制御方法、およびプログラム
KR101734306B1 (ko) * 2016-02-24 2017-05-18 주식회사 핀인사이트 멀티 프로그램 코드 자동 개발 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140173557A1 (en) * 2008-09-30 2014-06-19 Ics Triplex Isagraf Inc. Multi language editor

Also Published As

Publication number Publication date
KR20200113405A (ko) 2020-10-07
WO2020197011A1 (ko) 2020-10-01
CN113632016A (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
CN103814333B (zh) 用于对可编程控制装置编程和配置的方法和设备
JP6950665B2 (ja) エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
KR940703049A (ko) 처리 태스크를 신호 프로세서 및 이것과 인터페이스하는 의사 결정 마이크로 프로세서로 분할하는 시스템
JP2009146229A (ja) プログラマブルコントローラシステム
US20190012168A1 (en) Program generating apparatus
KR102280116B1 (ko) 엔지니어링 장치, 엔지니어링 장치의 제어 방법 및 프로그램
KR102268795B1 (ko) 프로그램 언어와 제조사에서 정의한 언어의 혼용을 위한 메모리 매핑 방법
CN110471659B (zh) 多语言实现方法和系统、人机界面组态软件端和设备端
JP2009157533A (ja) プログラマブルコントローラシステム
EP3159792B1 (en) Method of optimally compiling plc command
US20220291903A1 (en) Information processing device, recording medium, and support system
JP7208441B1 (ja) Fa制御テスト支援プログラム、fa制御テスト支援装置、fa制御テスト支援方法及びfa制御テスト支援システム
KR100258633B1 (ko) 제어로직 프로그램 관리방법
WO2022249713A1 (ja) 制御システム、システムプログラムおよびデバッグ方法
WO2022190418A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
WO2024128118A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
JP2018151537A (ja) 画面作成装置および画面作成プログラム
JP3697351B2 (ja) プログラム自動生成装置
KR100423742B1 (ko) 순차기능챠트에 의한 전용 제어 시스템
KR100434134B1 (ko) 프로그램가능한로직제어기
Lamberský et al. Development of Simulink blockset for embedded system with complex peripherals
JP2022053177A (ja) シーケンスプログラム編集装置、シーケンスプログラム編集方法、コンピュータが読み取り可能な記憶媒体
JP2022018696A (ja) 制御プログラム生成装置
JP2010003073A (ja) エンジニアリングツール
JPWO2018185854A1 (ja) 制御システムおよび経路情報生成方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant