KR20190096499A - 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 - Google Patents
프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 Download PDFInfo
- Publication number
- KR20190096499A KR20190096499A KR1020180016030A KR20180016030A KR20190096499A KR 20190096499 A KR20190096499 A KR 20190096499A KR 1020180016030 A KR1020180016030 A KR 1020180016030A KR 20180016030 A KR20180016030 A KR 20180016030A KR 20190096499 A KR20190096499 A KR 20190096499A
- Authority
- KR
- South Korea
- Prior art keywords
- program
- code
- subroutine
- unit
- editing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13028—Convert plc type program in pc type program for running in pc environment
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13056—Edit conversion, jump table interactively
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
본 발명은 PLC시스템의 프로그램 제공 장치에 있어서, 서로 다른 프로그래밍 언어에 대응하는 복수의 편집부, 상기 복수의 편집부 중 어느 하나에 의한 메인코드와 적어도 하나의 서브루틴코드로 이루어진 프로그램블록이 하나 이상 조합된 프로그램을 제공하는 프로그램제공부, 및 상기 적어도 하나의 서브루틴코드에 대한 리스트를 제공하는 서브루틴리스트제공부를 포함하는 프로그램 제공 장치를 제공한다.
Description
본 발명은 PLC시스템의 프로그램 제공 장치 및 CPU모듈에 관한 것으로, 감시기능 및 제어기능을 구현하기 위한 프로그램을 제공하는 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 CPU모듈에 관한 것이다.
최근 자동화 설비를 구현함에 있어서, 각 공정을 수행하는 제어대상기기들을 공정의 순서에 따라 순차적으로 연결하기 위한 릴레이 및 카운터 등은 PLC시스템으로 대체되고 있다.
PLC시스템은 사용자에 의해 설정된 공정 순서에 따라 제어대상기기들의 순차 구동을 제어하는 장비이다. 이러한 PLC시스템을 이용하여 자동화 설비를 구현하면, 공정의 순서 변경, 추가 및 삭제가 용이해질 수 있는 장점이 있다.
일반적으로 PLC시스템은 제어대상기기들의 순차 구동을 제어 및 감시하기 위한 각종 기능들을 구현하기 위한 프로그램을 제공하는 프로그램 제공 장치와, 프로그램을 실행하는 CPU장치를 포함한다.
PLC시스템의 프로그램은 2회 이상 반복되는 기능을 포함할 수 있다. 이에 관련하여, PLC프로그래밍에 관련한 규격인 IEC 61131-3은 사용자 펑션 및 사용자 펑션블록을 설정한다. 즉, 프로그램의 메인코드는 자주 사용되는 기능(또는 연산)에 관한 사용자 펑션(또는 사용자 펑션블록)을 호출하는 명령어를 포함할 수 있다. 이와 같이 하면, 반복적으로 배치되는 기능(또는 연산)을 일일이 코드로 작성하는 것에 비해, 프로그램의 복잡도 및 오류가 감소될 수 있다.
그러나, 사용자 펑션(또는 사용자 펑션블록)의 변수 설정은 메인코드와 별개로 실시된다. 이에, 사용자 펑션(또는 사용자 펑션블록)이 호출되려면, 메인코드에 따른 변수를 사용자 펑션(또는 사용자 펑션블록)의 입력파라미터로 전달하고, 사용자 펑션(또는 사용자 펑션블록)의 출력파라미터를 메인코드로 전달하는 과정이 필수적이다.
이러한 입력파라미터 및 출력파라미터의 전달 과정에 의한 지연시간이 발생되므로, 프로그램의 실행 기간이 단축되는 데에 한계가 있는 문제점이 있다.
본 발명은 프로그램의 실행 기간이 단축될 수 있는 프로그램 제공 장치 및 그에 의한 프로그램을 실행하는 CPU모듈을 제공한다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
이와 같은 과제를 해결하기 위하여, 본 발명의 일 예시는 PLC시스템의 프로그램 제공 장치에 있어서, 서로 다른 프로그래밍 언어에 대응하는 복수의 편집부, 상기 복수의 편집부 중 어느 하나에 의한 메인코드와 적어도 하나의 서브루틴코드로 이루어진 프로그램블록이 하나 이상 조합된 프로그램을 제공하는 프로그램제공부, 및 상기 적어도 하나의 서브루틴코드에 대한 리스트를 제공하는 서브루틴리스트제공부를 포함하는 프로그램 제공 장치를 제공한다.
상기 각 서브루틴코드는 소정의 명령어에 기초하여 상기 각 프로그램블록의 메인코드에 2회 이상 호출된다.
상기 각 프로그램블록의 메인코드는 상기 메인코드와 동일한 프로그램블록에 배치되는 적어도 하나의 서브루틴코드 중 적어도 어느 하나를 호출하는 명령어를 포함한다.
또는, 상기 각 프로그램블록의 메인코드는 상기 메인코드와 상이한 프로그램블록에 배치되는 적어도 하나의 서브루틴코드 중 적어도 어느 하나를 호출하는 명령어를 포함한다.
상기 서브루틴리스트제공부는 상기 복수의 편집부 중 어느 하나에 의해 상기 메인코드가 작성되는 동안 상기 서브루틴리스트를 제공한다.
상기 복수의 편집부 중 어느 하나에 의해 새로운 서브루틴코드가 작성되면, 상기 서브루틴리스트제공부는 상기 어느 하나의 편집부의 알림에 기초하여 상기 서브루틴리스트를 갱신한다.
상기 복수의 편집부는 LD(Ladder Diagram) 언어 기반의 코드 편집기능을 제공하는 LD편집부, ST(Structures Text) 언어 기반의 코드 편집기능을 제공하는 ST편집부, 및 IL(Instruction List) 언어 기반의 코드 편집기능을 제공하는 IL편집부를 포함한다.
그리고, 본 발명의 다른 일 예시는 상기 프로그램 제공 장치에 의한 프로그램의 실행을 처리하는 CPU부, 및 상기 CPU부의 처리에 필요한 데이터들을 보유하는 메모리부를 포함하는 CPU모듈을 더 제공한다.
상기 메모리부는 운영 프로그램과 연산 및 제어 기능에 관한 라이브러리를 보유하는 OS ROM 영역, 상기 프로그램 제공 장치에 의해 제공되는 기계어 상태의 프로그램을 보유하는 프로그램 영역, 상기 프로그램 제공 장치에 의해 제공되는 프로그래밍 언어 상태의 프로그램을 보유하는 업로드 영역 및 상기 CPU부의 입출력 데이터와 상기 CPU부에 의한 연산 결과를 보유하는 데이터 영역을 포함한다. 여기서, 상기 OS ROM 영역은 상기 프로그램 제공 장치의 상기 서브루틴리스트제공부에 의한 상기 서브루틴리스트를 보유한다.
상기 CPU부는 상기 메모리부의 상기 OS ROM 영역에 보유된 서브루틴리스트에 기초하여, 상기 메모리부의 상기 프로그램 영역에 보유된 프로그램이 서브루틴코드를 포함하는 형태임을 감지한다. 그리고, 상기 CPU부는 상기 메모리부의 상기 프로그램 영역에 보유된 프로그램에 포함되는 각 프로그램 블록의 메인코드를 실행하는 중에 상기 서브루틴코드를 호출하는 명령어를 감지하면, 상기 메모리부의 상기 프로그램 영역에 보유된 프로그램 중 상기 명령어에 대응하는 어느 하나의 서브루틴코드를 실행한다.
전술한 바와 같은 프로그램 제공 장치는 서로 다른 프로그래밍 언어에 대응하는 복수의 편집부와, 복수의 편집부 중 어느 하나에 의한 메인코드와 적어도 하나의 서브루틴코드로 이루어진 프로그램블록이 하나 이상 조합된 프로그램을 제공하는 프로그램제공부를 포함한다. 여기서, 각 서브루틴코드는 소정의 명령어에 기초하여 각 프로그램블록의 메인코드에 2회 이상 호출된다.
즉, 서브루틴코드는 메인코드와 마찬가지로 복수의 편집부 중 어느 하나에 의해 생성되고, 메인코드에 반복적으로 배치되는 기능에 대응한다.
이러한 서브루틴코드로 인해, 사용자 펑션 또는 사용자 펑션블록을 배제하면서도, 메인코드에 반복적으로 배치되는 기능으로 인한 프로그램의 복잡도 및 오류 증가가 방지될 수 있다. 또한, 사용자 펑션 또는 사용자 펑션블록의 호출에 따른 지연시간이 방지될 수 있으므로, 프로그램의 실행 기간이 단축될 수 있다.
도 1은 본 발명의 일 실시예에 따른 PLC시스템을 나타낸 도면이다.
도 2는 도 1의 CPU모듈을 나타낸 도면이다.
도 3은 도 1의 주변기기모듈 중 프로그램 제공 장치를 나타낸 도면이다.
도 4는 도 3의 프로그램 제공 장치에 의한 어느 하나의 프로그램블록에 대한 예시를 나타낸 도면이다.
도 5는 사용자 펑션을 호출하는 예시를 나타낸 도면이다.
도 6은 도 3의 LD편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다.
도 7은 도 3의 IL편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다.
도 8은 도 3의 ST편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다.
도 2는 도 1의 CPU모듈을 나타낸 도면이다.
도 3은 도 1의 주변기기모듈 중 프로그램 제공 장치를 나타낸 도면이다.
도 4는 도 3의 프로그램 제공 장치에 의한 어느 하나의 프로그램블록에 대한 예시를 나타낸 도면이다.
도 5는 사용자 펑션을 호출하는 예시를 나타낸 도면이다.
도 6은 도 3의 LD편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다.
도 7은 도 3의 IL편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다.
도 8은 도 3의 ST편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
이하, 본 발명의 일 실시예에 따른 프로그램 제공 장치에 대해 첨부한 도면을 참고로 하여 상세히 설명한다.
먼저, 도 1 및 도 2를 참조하여, 본 발명의 일 실시예에 따른 프로그램 제공 장치를 포함한 PLC시스템에 대해 설명한다.
도 1은 본 발명의 일 실시예에 따른 PLC시스템을 나타낸 도면이다. 도 2는 도 1의 CPU모듈을 나타낸 도면이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 PLC시스템(10)은 주변기기모듈(11), CPU모듈(12), 전원모듈(13) 및 입출력모듈(14)을 포함할 수 있다.
CPU모듈(12)은 프로그램 실행을 위한 연산을 수행하고, 연산 결과를 메모리에 저장한다. 그리고, CPU모듈(12)은 각종 통신 기능 및 시스템 전체를 제어하는 기능을 포함할 수 있다.
전원모듈(13)은 각 모듈(11, 12, 14)의 구동을 위한 전원을 공급한다.
주변기기모듈(11)은 사용자 프로그램을 작성하고, 각종 연산 결과 및 상태를 모니터링한다.
입출력모듈(14)은 외부입력장치로부터 데이터를 입력 받고, CPU모듈(12)에 의한 연산데이터 또는 수집된 데이터를 출력한다.
도 2에 도시된 바와 같이, CPU모듈(12)은 PLC 시스템의 프로그램에 대응하는 각종 연산 기능과 제어 기능의 실행을 처리하는 CPU부(121) 및 CPU부(121)의 처리에 필요한 데이터들을 보유하는 메모리부(122)를 포함한다. 그리고, CPU모듈(12)은 데이터 백업을 실행하고 리셋신호를 공급하는 주변회로부(123)를 더 포함할 수 있다.
메모리부(122)는 운영 프로그램과 연산 및 제어 기능에 관한 라이브러리 등을 보유하는 OS ROM 영역(122a), 주변기기모듈(11) 중 프로그램 제공 장치(도 3의 11')에 의해 제공되고 기계어 상태의 PLC 시스템의 프로그램을 보유하는 프로그램 영역(122b), 프로그램 제공 장치(도 3의 11')에 의한 프로그래밍 언어 상태의 사용자 프로그램을 보유하는 업로드 영역(122c) 및 CPU부(12)의 입출력 데이터와 CPU부(12)에 의한 각종 연산 결과를 보유하는 데이터 영역(122d)을 포함한다.
다음, 도 3 내지 도 8을 참조하여, 본 발명의 일 실시예에 따른 도 1의 주변기기모듈(11) 중 CPU모듈(12)에 사용자 프로그램을 제공하는 프로그램 제공 장치에 대해 설명한다.
도 3은 도 1의 주변기기모듈 중 프로그램 제공 장치를 나타낸 도면이다. 도 4는 도 3의 프로그램 제공 장치에 의한 어느 하나의 프로그램블록에 대한 예시를 나타낸 도면이다.
도 5는 사용자 펑션을 호출하는 예시를 나타낸 도면이다.
도 6은 도 3의 LD편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다. 도 7은 도 3의 IL편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다. 도 8은 도 3의 ST편집부에 의한 프로그램블록의 서브루틴코드 및 이를 호출하는 메인코드의 명령어에 대한 일 예시를 나타낸 도면이다.
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 프로그램 제공 장치(11')는 복수의 편집부(111), 프로그램제공부(112), 서브루틴리스트제공부(113) 및 컴파일부(114)를 포함한다.
복수의 편집부(111)는 IEC 61131-3에 의해 정의된 복수의 서로 다른 프로그래밍 언어에 대응한다.
예시적으로, 복수의 편집부(111)는 LD(Ladder Diagram) 언어 기반의 코드 편집기능을제공하는 LD편집부(111a), ST(Structures Text)언어 기반의 코드 편집기능을 제공하는 ST편집부(111b) 및 IL(Instruction List) 언어 기반의 코드 편집기능을 제공하는 IL편집부(111c)를 포함할 수 있다.
또는, 복수의 편집부(111)는 FBD(Function Block Diagram)언어 기반의 코드 편집기능을 제공하는 FBD편집부(111d) 및 SFC(Sequential Function Chart)언어 기반의 코드 편집기능을 제공하는 SFC편집부(111e)를 더 포함할 수 있다.
또는, 복수의 편집부(111)는 IEC 61131-3에 의해 정의되지 않았으나 PLC 프로그램 작성에 적용될 수 있는 다른 프로그래밍 언어 기반의 코드 편집기능을 더 포함할 수도 있다.
본 발명의 일 실시예에 따르면, LD편집부(111a),ST편집부(111b) 및IL편집부(111c) 중 어느 하나에 의한 프로그램블록은 적어도 하나의 서브루틴코드를 포함할 수 있다. 즉, FBD편집부(111d) 및SFC편집부(111e) 중 어느 하나에 의한 프로그램블록은 서브루틴코드를 포함하지 않을 수 있다.
프로그램제공부(112)는 복수의 편집부(111) 중 어느 하나에 의한 프로그램블록이 하나 이상 조합된 프로그램을 제공한다. 여기서, 각 프로그램블록은 복수의 편집부(111) 중 어느 하나에 의해 작성되고, 메인코드와 적어도 하나의 서브루틴코드로 이루어진다.
일 예로, 도 4에 도시된 바와 같이, 어느 하나의 편집부(111)에 의해 작성된 프로그램블록(PB)은 메인코드가 배치되는 메인코드영역(MCA)과, 적어도 하나의 서브루틴코드가 배치되는 서브루틴코드영역(SCA)을 포함할 수 있다. 여기서, 서브루틴코드영역(SCA)은 메인코드영역(MCA)의 후단에 배치될 수 있다. 즉, 메인코드의 종료 명령어 이후에, 서브루틴코드가 배치될 수 있다.
각 서브루틴코드는 소정의 명령어에 기초하여 각 프로그램블록의 메인코드에 2회 이상 반복하여 호출되는 기능(또는 연산)을 지칭한다. 서브루틴코드의 호출에 대해서는 도 5 내지 도 8을 참조하여 이하에서 상세히 설명하기로 한다.
더불어, 어느 하나의 프로그램은 서로 다른 언어 기반으로 작성된 둘 이상의 프로그램블록을 포함할 수 있다.
이때, 각 프로그램블록의 메인코드는 메인코드와 동일한 프로그램블록 내에서 메인코드의 후단에 배치된 적어도 하나의 서브루틴코드 중 적어도 어느 하나를 호출하는 명령어를 포함할 수 있다. 즉, 메인코드는 그와 동일한 프로그래밍 언어로 작성된 서브루틴코드를 호출할 수 있다.
또는, 각 프로그램블록의 메인코드는 메인코드와 상이한 프로그램블록 내에 배치되는 적어도 하나의 서브루틴코드 중 적어도 어느 하나를 호출하는 명령어를 포함할 수도 있다. 즉, 메인코드는 그와 상이한 프로그래밍 언어로 작성된 서브루틴코드를 호출할 수도 있다.
이를 위해, 프로그램 제공 장치(11')는 서브루틴리스트제공부(113)를 포함한다.
서브루틴리스트제공부(113)는 각 프로그램블록에 배치된 적어도 하나의 서브루틴코드에 대한 리스트를 제공한다.
일 예로, 각 편집부(111)에서 새로운 서브루틴코드가 작성되면, 서브루틴리스트제공부(113)는 각 편집부(111)의 알림에 기초하여 서브루틴리스트를 갱신한다.
그리고, 서브루틴리스트제공부(113)는 어느 하나의 편집부(111)에서 코드가 작성되는 동안, 서브루틴리스트를 제공한다. 이에, 프로그램 작성 관리자는 서브루틴리스트에 기초하여 메인코드에 호출할 서브루틴을 용이하게 선택할 수 있다. 이에 따라, 프로그램 작성 용이성이 향상될 수 있다.
컴파일부(114)는 프로그램제공부(112)에 의한 프로그램을 기계어로 변환한다.
그리고, 프로그램 제공 장치(11')의 컴파일부(114)는 기계어로 변환된 프로그램을 PLC시스템의 CPU모듈(도 1의 12)에 제공한다. 이에, 기계어로 변환된 프로그램이 CPU모듈(12)의 메모리부(122) 중 프로그램영역(122b)에 배치된다.
더불어, 프로그램 제공 장치(11')의 프로그램제공부(112)는 적어도 하나의 프로그래밍언어로 작성된 프로그램을 CPU모듈(12)에 제공한다. 이에, 프로그래밍 언어 상태의 프로그램이 CPU모듈(12)의 메모리부(122) 중 업로드영역(122c)에 배치될 수 있다.
여기서, 프로그램영역(122b) 및 업로드영역(112c) 각각에 전달되는 프로그램은 적어도 하나의 프로그램블록을 포함하고, 적어도 하나의 프로그램블록 중 적어도 어느 하나는 서브루틴코드영역(도 4의 SCA)을 포함한다. 즉, 프로그래밍 언어 상태의 서브루틴코드는, 메인코드와 마찬가지로, 프로그램영역(122b) 및 업로드영역(112c) 각각에 보유된다.
또한, 프로그램 제공 장치(11')의 서브루틴리스트제공부(113)는 서브루틴리스트를 CPU모듈(12)에 제공한다. 이에, 서브루틴리스트가 CPU모듈(12)의 메모리부(122) 중 OS ROM영역(122a)에 배치될 수 있다. 이로써, 시스템 관리자 및 CPU모듈(12)은 해당 프로그램이 서브루틴코드를 포함하는 형태임을 용이하게 감지할 수 있다.
즉, 메인코드 및 서브루틴코드를 포함하는 형태의 프로그램이 CPU모듈(12)에 전달된 경우, CPU부(121)는 OS ROM영역(122a)에 보유된 서브루틴리스트에 기초하여 메모리부(122)의 프로그램 영역(122b)에 보유된 프로그램이 서브루틴코드를 포함하는 형태임을 감지할 수 있다.
그리고, CPU부(121)는 메모리부(122)의 프로그램 영역(122b)에 보유된 프로그램에 포함되는 적어도 하나의 프로그램블록을 실행한다. 이와 같이 각 프로그램블록의 메인코드를 실행하는 중에 서브루틴코드를 호출하는 명령어를 감지하면, CPU부(121)는 메모리부(122)의 프로그램 영역(122b)에 보유된 프로그램 중 명령어에 대응하는 어느 하나의 서브루틴코드를 실행한다.
또한, 프로그래밍 언어 상태의 프로그램이 CPU모듈(12)의 메모리부(122) 중 업로드영역(122c)에 보유되고, 서브루틴리스트제공부(113)에 의한 서브루틴리스트가 메모리부(122) 중 OS ROM영역(122a)에 보유됨으로써, 시스템 관리자가 프로그램을 수정 또는 재편집하거나 프로그램의 코드를 재활용하는 것이 용이해질 수 있다.
도 5에 도시된 바와 같이, LD프로그래밍 언어로 작성된 프로그램의 메인코드(LD 프로그램; 도 5의 좌측)가 사용자 펑션(CC; 도 5의 우측)을 호출하는 명령어를 포함할 수 있다. 이 경우,사용자 펑션(CC)은 규격에 따라 LD 프로그램과 상이하게 선언된 변수로 작성되어 있으므로, LD 프로그램의 실행 시, 사용자 펑션(CC)에 입력 파라미터를 전달하고, 사용자 펑션(CC)의 연산에 따른 출력 파라미터를 수신하는 과정이 필수적이다.그로 인해, 파라미터의 전달에 따른 지연시간이 필수불가결하므로, 프로그램의 실행 기간을 단축시키기 어려운 문제점이 있다.
반면, 본 발명의 일 실시예에 따른 프로그램블록의 메인코드는 그와 동일하게 선언된 변수로 작성된 서브루틴코드를 호출한다. 이에 따라, 프로그램의 실행 시, 메인코드와 호출된 서브루틴코드 간에 파라미터의 전달이 불필요하므로, 사용자 펑션을 이용하는 경우에 비해 프로그램의 실행 기간이 단축될 수 있다.
도 6에 도시된 바와 같이, LD 프로그래밍 언어로 작성된 프로그램블록에 있어서, 메인코드의 종료점을 지칭하는 명령어(END) 이후에, 서브루틴코드의 개시점과 명칭(name)을 지칭하는 명령어(SBRT서브루틴명칭)가 배치될 수 있다. 이어서, 서브루틴코드의 연산이 작성된다음, 서브루틴코드의 종료점을 지칭하는 명령어(RET)가 배치될 수 있다.
그리고, 메인코드는 소정의 서브루틴코드를 호출하기 위해 "CALL 서브루틴 명칭"의 명령어를 포함할 수 있다. 이때, 서브루틴 명칭은 서브루틴리스트제공부(113)에 의한 서브루틴리스트에 기초하여 선택될 수 있다.
또는, 도 7에 도시된 바와 같이, IL 프로그래밍 언어로 작성된 프로그램 블록에 있어서, 메인코드의 종료점을 지칭하는 명령어(END) 이후에 서브루틴코드의 개시점과 명칭을 지칭하는 명령어(SBRT 서브루틴명칭)가 배치될 수 있다. 이어서, 서브루틴코드의 연산이 작성된 다음, 서브루틴코드의 종료점을 지칭하는 명령어(RET)가 배치될 수 있다.
그리고, 메인코드는 소정의 서브루틴코드를 호출하기 위해 "CALL 서브루틴 명칭"의 명령어를 포함할 수 있다.
또는, 도 8에 도시된 바와 같이, ST 프로그래밍 언어로 작성된 프로그램 블록에 있어서, 메인코드의 종료점을 지칭하는 명령어(END_PROGRAM) 이후에, 서브루틴코드의 개시점과 명칭을 지칭하는 명령어(SBRT 서브루틴명칭)이 배치될 수 있다. 이어서, 서브루틴코드의 연산이 작성된 다음, 서브루틴코드의 종료점을 지칭하는 명령어(END_SBRT)가 배치될 수 있다.
그리고, 메인코드는 소정의 서브루틴코드를 호출하기 위해 "CALL 서브루틴 명칭"의 명령어를 포함할 수 있다.
전술한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
10: PLC시스템
11': 프로그램 제공 장치
PB: 프로그램블록
MCA: 메인코드영역
SCA: 서브루틴코드영역
11': 프로그램 제공 장치
PB: 프로그램블록
MCA: 메인코드영역
SCA: 서브루틴코드영역
Claims (13)
- PLC시스템의 프로그램 제공 장치에 있어서,
서로 다른 프로그래밍 언어에 대응하는 복수의 편집부;
상기 복수의 편집부 중 어느 하나에 의한 메인코드와 적어도 하나의 서브루틴코드로 이루어진 프로그램블록이 하나 이상 조합된 프로그램을 제공하는 프로그램제공부; 및
상기 적어도 하나의 서브루틴코드에 대한 서브루틴리스트를 제공하는 서브루틴리스트제공부를 포함하는 프로그램 제공 장치.
- 제 1 항에 있어서,
상기 각 서브루틴코드는 소정의 명령어에 기초하여 상기 각 프로그램블록의 메인코드에 2회 이상 호출되는 프로그램 제공 장치.
- 제 1 항에 있어서,
상기 각 프로그램블록의 메인코드는 상기 메인코드와 동일한 프로그램블록에 배치되는 적어도 하나의 서브루틴코드 중 적어도 어느 하나를 호출하는 명령어를 포함하는 프로그램 제공 장치.
- 제 1 항에 있어서,
상기 각 프로그램블록의 메인코드는 상기 메인코드와 상이한 프로그램블록에 배치되는 적어도 하나의 서브루틴코드 중 적어도 어느 하나를 호출하는 명령어를 포함하는 프로그램 제공 장치.
- 제 1 항에 있어서,
상기 서브루틴리스트제공부는 상기 복수의 편집부 중 어느 하나에 의해 상기 메인코드가 작성되는 동안 상기 서브루틴리스트를 제공하는 프로그램 제공 장치.
- 제 1 항에 있어서,
상기 복수의 편집부 중 어느 하나에 의해 새로운 서브루틴코드가 작성되면, 상기 서브루틴리스트제공부는 상기 어느 하나의 편집부의 알림에 기초하여 상기 서브루틴리스트를 갱신하는 프로그램 제공 장치.
- 제 1 항에 있어서,
상기 복수의 편집부는
LD(Ladder Diagram) 언어 기반의 코드 편집기능을 제공하는 LD편집부;
ST(Structures Text) 언어 기반의 코드 편집기능을 제공하는 ST편집부; 및
IL(Instruction List) 언어 기반의 코드 편집기능을 제공하는 IL편집부를 포함하는 프로그램 제공 장치.
- 제 5 항에 있어서,
상기 복수의 편집부는
FBD(Function Block Diagram) 언어 기반의 코드 편집기능을 제공하는 FBD편집부; 및
SFC(Sequential Function Chart) 언어 기반의 코드 편집기능을 제공하는 SFC편집부를 더 포함하는 프로그램 제공 장치.
- 제 6 항에 있어서,
상기 프로그램제공부의 프로그램을 기계어로 변환하는 컴파일부를 더 포함하는 프로그램 제공 장치.
- 제 7 항에 있어서,
상기 컴파일부는 상기 기계어로 변환된 프로그램을 상기 PLC시스템에 구비된 CPU모듈의 메모리부의 프로그램영역에 제공하고,
상기 프로그램제공부는 상기 프로그램을 상기 CPU모듈의 메모리부의 업로드영역에 제공하며,
상기 서브루틴리스트제공부는 상기 서브루틴리스트를 상기 CPU모듈의 메모리부의 OS ROM 영역에 제공하는 프로그램 제공 장치.
- 제 1 항 내지 제 9 항 중 어느 한 항에 따른 프로그램 제공 장치에 의한 프로그램의 실행을 처리하는 CPU부; 및
상기 CPU부의 처리에 필요한 데이터들을 보유하는 메모리부를 포함하는 CPU모듈.
- 제 11 항에 있어서,
상기 메모리부는
운영 프로그램과 연산 및 제어 기능에 관한 라이브러리를 보유하는 OS ROM 영역;
상기 프로그램 제공 장치에 의해 제공되는 기계어 상태의 프로그램을 보유하는 프로그램 영역;
상기 프로그램 제공 장치에 의해 제공되는 프로그래밍 언어 상태의 프로그램을 보유하는 업로드 영역; 및
상기 CPU부의 입출력 데이터와 상기 CPU부에 의한 연산 결과를 보유하는 데이터 영역을 포함하고,
상기 OS ROM 영역은 상기 프로그램 제공 장치의 상기 서브루틴리스트제공부에 의한 상기 서브루틴리스트를 보유하는 CPU모듈.
- 제 12 항에 있어서,
상기 CPU부는
상기 메모리부의 상기 OS ROM 영역에 보유된 서브루틴리스트에 기초하여, 상기 메모리부의 상기 프로그램 영역에 보유된 프로그램이 서브루틴코드를 포함하는 형태임을 감지하고,
상기 메모리부의 상기 프로그램 영역에 보유된 프로그램에 포함되는 각 프로그램 블록의 메인코드를 실행하는 중에 상기 서브루틴코드를 호출하는 명령어를 감지하면, 상기 메모리부의 상기 프로그램 영역에 보유된 프로그램 중 상기 명령어에 대응하는 어느 하나의 서브루틴코드를 실행하는 CPU모듈.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180016030A KR102095224B1 (ko) | 2018-02-09 | 2018-02-09 | 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180016030A KR102095224B1 (ko) | 2018-02-09 | 2018-02-09 | 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190096499A true KR20190096499A (ko) | 2019-08-20 |
KR102095224B1 KR102095224B1 (ko) | 2020-03-31 |
Family
ID=67807453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180016030A KR102095224B1 (ko) | 2018-02-09 | 2018-02-09 | 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102095224B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR950006585B1 (ko) * | 1986-02-19 | 1995-06-19 | 가부시키가이샤 히타치세이사쿠쇼 | 마이크로프로그램 제어장치 및 그 제어방법 |
JP2004005389A (ja) * | 2002-01-10 | 2004-01-08 | Omron Corp | ユニット及びplc並びにユーザプログラムの処理方法 |
JP2005141564A (ja) * | 2003-11-07 | 2005-06-02 | Digital Electronics Corp | エディタ装置、コンピュータをエディタ装置として機能させるためのプログラムおよび記録媒体 |
JP2009009314A (ja) * | 2007-06-27 | 2009-01-15 | Digital Electronics Corp | エディタ装置、エディタプログラムおよびそれを記録した記録媒体 |
-
2018
- 2018-02-09 KR KR1020180016030A patent/KR102095224B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR950006585B1 (ko) * | 1986-02-19 | 1995-06-19 | 가부시키가이샤 히타치세이사쿠쇼 | 마이크로프로그램 제어장치 및 그 제어방법 |
JP2004005389A (ja) * | 2002-01-10 | 2004-01-08 | Omron Corp | ユニット及びplc並びにユーザプログラムの処理方法 |
JP2005141564A (ja) * | 2003-11-07 | 2005-06-02 | Digital Electronics Corp | エディタ装置、コンピュータをエディタ装置として機能させるためのプログラムおよび記録媒体 |
JP2009009314A (ja) * | 2007-06-27 | 2009-01-15 | Digital Electronics Corp | エディタ装置、エディタプログラムおよびそれを記録した記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
KR102095224B1 (ko) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112416318B (zh) | 微服务开发方法、装置、存储介质及电子设备 | |
CN111078265B (zh) | 一种基于jenkins的web项目更新补丁生成方法 | |
CN107203401A (zh) | 一种前端项目构建方法、装置及系统 | |
US20090013313A1 (en) | Debug device, debug method, and program | |
EP3540536B1 (en) | Development support device, development support method, and development support program | |
US20190196798A1 (en) | Executable program creation device, executable program creation method, and executable program creation program | |
KR101350798B1 (ko) | 오프로스 플랫폼에 기반하여 제어되는 로봇 시스템 및 그 로봇 제어방법 | |
CN111142466B (zh) | 工程装置、工程装置的控制方法和存储介质 | |
CN104391754A (zh) | 一种任务异常的处理方法及装置 | |
KR102091134B1 (ko) | Plc의 브랜치 명령어 처리 방법 | |
JP2009157533A (ja) | プログラマブルコントローラシステム | |
WO2018096717A1 (ja) | コントロールシステム及びコントロール方法 | |
KR102095224B1 (ko) | 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 | |
CN112486492A (zh) | 页面生成方法、装置、存储介质及电子设备 | |
CN107341024B (zh) | 系统升级方法和系统升级装置 | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
CN114281404B (zh) | 一种工控机算法代码的移植方法及装置 | |
CN111624933B (zh) | 用于顺控程序的追踪的顺控程序处理装置 | |
JP6318214B2 (ja) | 汎用マイクロプロセッサを用いたplcのデバッグ方法 | |
CN105893238A (zh) | 一种代码调试方法及装置 | |
CN114461225A (zh) | 编译方法及装置、电子设备和存储介质 | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
JP2005310056A (ja) | プログラム実行制御方式 | |
JP7241989B1 (ja) | プログラム作成装置、プログラム作成方法及びプログラム | |
WO2022185670A1 (ja) | 開発支援装置、開発支援装置の制御方法、情報処理プログラム、および記録媒体 |
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 |