KR20210049302A - 모션 제어기의 오류 추적방법 - Google Patents

모션 제어기의 오류 추적방법 Download PDF

Info

Publication number
KR20210049302A
KR20210049302A KR1020190133432A KR20190133432A KR20210049302A KR 20210049302 A KR20210049302 A KR 20210049302A KR 1020190133432 A KR1020190133432 A KR 1020190133432A KR 20190133432 A KR20190133432 A KR 20190133432A KR 20210049302 A KR20210049302 A KR 20210049302A
Authority
KR
South Korea
Prior art keywords
motion
error
program
history
command
Prior art date
Application number
KR1020190133432A
Other languages
English (en)
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 KR1020190133432A priority Critical patent/KR20210049302A/ko
Publication of KR20210049302A publication Critical patent/KR20210049302A/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
    • 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/13142Debugging, tracing
    • 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/14Plc safety
    • G05B2219/14107Recovery, after detection or reconfiguration, effect an error eliminati

Abstract

본 발명은 모션 제어기의 오류 추적 방법에 관한 것으로, 엔지니어링 툴을 구동하는 사용자의 컴퓨터에서 모션 명령을 포함하는 사용자 프로그램을 작성하여, 컴파일 후 모션 제어기에 업로드하고, 모션 제어기에서 제어대상 기기를 제어할 때 발생하는 오류를 사용자 컴퓨터에서 구동되는 엔지니어링 툴로 추적하는 방법에 있어서, a) 상기 사용자 프로그램의 작성시 변수 테이블에 변수, 타입, 프로그램 번호를 작성함과 아울러 모션 명령들 마다 모션 명령 변수 ID를 지정하는 단계와, b) 상기 모션 제어기에서 모션 명령에 따라 제어대상 기기를 제어하여, 메모리에 모션 실행 이력을 저장하되, 상기 모션 명령 변수 ID를 함께 저장하는 단계와, c) 상기 b) 단계의 수행 중 오류가 발생한 경우 모션 오류 이력을 메모리에 저장하되, 상기 모션 명령 변수 ID를 함께 저장하는 단계와, d) 사용자의 컴퓨터에서 상기 메모리에 저장된 모션 실행 이력 및 모션 오류 이력을 다운로드하고, 모션 명령 변수 ID를 확인하여 오류가 발생한 프로그램과 제어대상 기기를 추적하는 단계를 포함한다.

Description

모션 제어기의 오류 추적방법{Error tracking method for motion controller}
본 발명은 모션 제어기의 오류 추적방법에 관한 것으로, 더 상세하게는 피엘씨 변수의 메모리 할당 방법에 관한 것으로, 더 상세하게는 오류가 발생한 프로그램과 오류 발생시점까지 정확하게 추적할 수 있는 모션 제어기의 오류 추적방법에 관한 것이다.
일반적으로 모션 제어기는 사용자의 프로그램을 수행하면서, 제어 대상 시스템의 시퀀스 제어(sequence control)와 모션 제어(motion control)를 수행하는 장치를 일반화한 것이다.
모션 제어기로 대표적인 것은 PLC(Programmable Logic Controller)를 예로 들 수 있다. PLC는 공장 자동화를 위한 무접점 순차 제어 회로 시스템에 주로 사용되며, 계전기, 타이머, 카운터 등의 요소를 하드웨어적으로 연결하여 제어 시스템을 구성하거나, 프로그램을 변경할 수 있는 무접점 시퀀스의 제어에 사용된다.
통상 모션 제어기는 제어중에 발생하는 다양한 오류를 추적하여 사용자가 확인 및 수정할 수 있도록 하는 기능이 포함되어 있다.
모션 제어기의 장점은 고속, 내환경성, 취급용이성, 경제성의 장점이 있으며, 단순한 순차 제어기가 아닌 수많은 제어 요소를 갖추고 프로그램이 가능한 실시간 복합 제어가 가능하다는 점에 있다.
모션 제어기는 사용자가 작성한 프로그램을 순차적으로 반복해서 수행하는 제어기기로서, EC 61131-3에 정의된 LD(Ladder Diagram), ST(Structured Text, Pascal type language), IL(Instruction List), FBD(Function Block Diagram), SFC(Sequential Function Chart) 언어들을 사용하는 엔지니어링 툴로 작성된 프로그램을 수행하게 된다.
LD 편집기는 래더 다이어그램 프로그램을 할 수 있으며, IL 편집기는 명령어 리스트 프로그래밍을 하는 편집기이고, ST 편집기는 구조화된 텍스트 프로그래밍을 할 수 있으며, SFC 편집기는 시퀀스 함수 차트 프로그래밍을 할 수 있고, FBD 편집기는 펑션 블록 다이어그램 프로그래밍을 할 수 있다.
이와 같은 종래 모션 제어기 및 오류 추적에 대하여 구체적인 예를 들어 설명하면 다음과 같다.
도 1은 일반적인 모션 제어 시스템의 구성도이다.
컴퓨터(200)에서 엔지니어링 툴을 이용하여 작성된 프로그램들은 로더(240)를 통해 모션 제어기(100)의 메모리에 업로드된다.
통상 컴퓨터(200)와 모션 제어기(100)는 동기화된 프로그램을 저장하지만, 컴퓨터(200)에서는 엔지니어링 툴로 확인 및 작성이 가능한 프로그램이고 모션 제어기(100)의 프로그램은 기계어로 컴파일된 것이 보통이다.
모션 제어기(100)는 프로그램을 실행하는 중앙처리장치(110)와, 변수를 포함하는 데이터와 프로그램을 저장하는 메모리(도면 미도시), 중앙처리장치(110)의 프로그램 수행 후 결과를 송신하거나 제어대상 기기(300)의 신호를 수신하여 중앙처리장치(110)에 입력하는 통신처리부(130)와, 상기 중앙처리장치(110)의 모션 명령에 따라 구체적인 모션 제어를 수행하는 모션 제어부(120)를 포함한다.
도면에는 생략되었으나, 제어대상 기기(300)는 다수의 스위치를 포함할 수 있으며, 시퀀스 제어를 통해 스위치의 동작 순서를 제어하여 제어대상 기기(300)의 전체 동작 순서를 결정한다.
또한, 모션 제어기(100)는 통신라인(310)을 통해 제어대상 기기(300)에 포함된 서보 드라이브(320)를 제어하여 모터(330)를 제어하며, 이를 모션 제어라 한다.
상기 컴퓨터(200)에서 엔지니어링 툴을 이용하여 작성한 사용자 프로그램은 앞서 설명한 모션 명령(211)을 포함하며, 로더(240)를 통해 모션 제어기(100)의 메모리에 저장된 프로그램은 중앙처리장치(110)에 의해 실행된다. 이때 모션 명령(211)에 따라 모션 제어부(120)에서 처리된다.
모션 명령(211)은 PLCopen 규약을 따른다.
모션 제어기(100)는 제어 주기라 불리는 일정한 주기마다 프로그램과 모션 제어부(120)를 반복적으로 실행하게 된다.
모션 제어부(120)에서는 사용자 프로그램에서 실행된 모션 명령(211)에 대하여 제어 주기마다 제어 데이터를 생성하고, 통신처리부(130)와 통신라인(310)를 통해 제어 데이터를 서보 드라이브(320)에 전송하여 서보 드라이브(320)가 모터(330)를 구동하도록 한다.
이때, 모션 제어부(120)에서 모션 명령(211)에 해당하는 동작을 시킬 때 구동 조건이 맞지 않거나 동작 중에 더이상 모션 동작을 수행할 수 없을 때는 오류를 발생시킨다.
도 2는 모션 명령(211)의 구체적인 예시도이다.
도 2를 참조하면 모션 명령(211)은 오류와 오류ID(Error ID) 출력으로 동작 상태를 확인할 수 있다.
좀 더 구체적으로 상기 모션 제어기(100)의 중앙처리장치(110)는 모터(330)의 상태를 검출한 센서(340)의 검출상태를 통신 처리부(130)를 통해 수신하여, 모션 제어시 오류가 발생했는지를 확인한다.
오류가 발생하면 메모리에 저장된 모션 명령(211)의 오류ID(212)에 오류코드를 설정한다.
또한, 특정한 모터(330)에서 오류가 발생한 이력을 메모리에 저장한다.
즉, 모션 제어기(100)는 모션 명령(211)과 센서(340)의 검출 결과를 비교하여 특정한 모터(330)의 오류 발생여부 및 이력을 메모리에 저장하게 된다. 또한 중앙처리장치(110)는 자체 또는 모션 제어기(100) 구성요소의 오류 검출 모듈을 포함하며, 자체 또는 모션 제어부(120)의 오류를 검출한다.
이러한 오류 발생 및 이력 정보는 컴퓨터(200)에서 다운로드 가능하며, 사용자가 필요시 오류 발생 및 이력 정보를 확인할 수 있다.
이는 컴퓨터(200)의 중앙처리장치(210)에 의해 수행되는 엔지니어링 툴에 의해 다운로드된 데이터를 해석하여, 모니터에 표시함으로써 가능하게 된다.
도 3은 컴퓨터(200)를 통해 확인할 수 있는 모션 상태(220)와 모션 오류 이력(230)이다.
모션 상태(220)에서 '축'은 '모터(330)'를 뜻하며, '축그룹'은 동시 제어되는 '모터(330) 그룹'을 뜻한다.
모션 오류 이력(230)은 테이블 형태로 확인이 가능하며, 종류, 인덱스, 코드, 날짜, 시간, 오류 내용을 확인할 수 있다.
앞서 설명한 바와 같이 컴퓨터(200)에서 확인할 수 있는 정보와 기계어로 처리되는 모션 제어기(100)의 내부 메모리에 저장되는 정보는 내용은 동일하나 형식에 차이가 있다.
도 4는 모션 제어기(100)의 내부 메모리(140)에 저장되는 모션 상태 구성 정보(141), 모션 오류 이력 구성 정보(142) 및 오류 이력 구성 정보(143)을 나타낸다.
모션 오류 이력 구성 정보(142)는 이력 번호, 이력 오버 플래그와 다수의 이력을 저장하며, 다수의 이력은 원형 버퍼를 이룬다. 다수의 이력 각각은 오류 이력 구성 정보(143)를 포함한다.
이력 번호는 이력의 수를 나타내고, 이력 오버 플래그는 원형 버퍼가 전부 채워졌는지 확인할 수 있다.
앞서 설명한 바와 같이 모션 제어기(100)의 중앙처리장치(110)는 모션 명령을 실행하거나 실행 중 모션 오류가 발생하면, 내부 메모리(140)에 특정 축(모터)의 오류 발생여부를 기록하고, 별도로 그 이력을 저장하여 관리한다.
따라서 특정한 모션 명령에 대한 오류 발생 여부의 확인이 가능하게 된다.
그러나 사용자 프로그램은 복수이며, 동일한 모션 명령(211)이라고 하더라도 하나의 프로그램 안에서 복수로 사용함이 가능하므로 어떤 모션 명령(211)에서 오류가 발생했는지 확인하기 위해서는 프로그램 마다 사용된 모션 명령(211)의 ㅇ오류ID 출력을 확인해야만 한다.
이러한 디버깅 방법은 엔지니어링 시간을 길게 하여 전체 TCO를 증가시키게 된다.
또한, 오류가 발생한 시점이 사용자가 작성한 전체 시퀀스 중 어떤 부분인지는 현재 제공하는 모션 오류 이력(230)만으로는 확인이 불가능하다.
그리고 모션 제어는 모션 명령(211)이 하나의 모션 동작을 수행하므로, 모션 명령(211)이 실행된 순서를 확인할 수 있으면 사용자가 구현하고자 하는 기능이 정상적으로 시퀀스 프로그램 되었는지 확인 가능하다. 하지만, 모션 상태(220) 및 모션 오류 이력(230)을 통하여 오류가 발생한 축(또는 축그룹)과 오류가 발생한 전체 이력은 확인할 수 있지만 사용자가 구현하고자 하는 기능이 설계한 것과 같이 동일하게 동작이 되는지는 확인할 수 없다.
물론, 사용자 프로그램이 실행되면서 모션 명령(211)을 기동시키는 디바이스 및 모션 제어 관련 상태 정보 등을 매 제어 주기마다 트레이스 할 수 있지만, 사용자가 별도로 트레이스 할 정보를 설정해야 하고, 트레이스한 결과값이 직관적이지 않기 때문에 분석이 용이하지 않다.
상기와 같은 문제점을 감안한 본 발명이 해결하고자 하는 과제는, 특정 모션 명령에서 오류가 발생한 경우, 그 모션 명령을 포함하는 프로그램이 어느 것이며, 그 프로그램의 어느 모션 명령에서 오류가 발생한 것인지 추적할 수 있는 방법을 제공함에 있다.
또한, 본 발명이 해결하고자 하는 다른 과제는, 프로그램의 모션 명령들이 실행될 때 어떤 시점에서 오류가 발생하였는지 실행 이력을 추적할 수 있는 방법을 제공함에 있다.
상기와 같은 기술적 과제를 해결하기 위한 본 발명 모션 제어기의 오류 추적방법은, 엔지니어링 툴을 구동하는 사용자의 컴퓨터에서 모션 명령을 포함하는 사용자 프로그램을 작성하여, 컴파일 후 모션 제어기에 업로드하고, 모션 제어기에서 제어대상 기기를 제어할 때 발생하는 오류를 사용자 컴퓨터에서 구동되는 엔지니어링 툴로 추적하는 방법에 있어서, a) 상기 사용자 프로그램의 작성시 변수 테이블에 변수, 타입, 프로그램 번호를 작성함과 아울러 모션 명령들 마다 모션 명령 변수 ID를 지정하는 단계와, b) 상기 모션 제어기에서 모션 명령에 따라 제어대상 기기를 제어하여, 메모리에 모션 실행 이력을 저장하되, 상기 모션 명령 변수 ID를 함께 저장하는 단계와, c) 상기 b) 단계의 수행 중 오류가 발생한 경우 모션 오류 이력을 메모리에 저장하되, 상기 모션 명령 변수 ID를 함께 저장하는 단계와, d) 사용자의 컴퓨터에서 상기 메모리에 저장된 모션 실행 이력 및 모션 오류 이력을 다운로드하고, 모션 명령 변수 ID를 확인하여 오류가 발생한 프로그램과 제어대상 기기를 추적하는 단계를 포함할 수 있다.
본 발명의 실시예에서, 상기 a) 단계에서 프로그램 테이블을 작성하고 프로그램마다 프로그램 변경 식별 번호를 부여하고, b) 단계와 c) 단계에서 각각 모션 실행 이력과 모션 오류 이력을 저장할 때 프로그램 변경 식별 번호를 함께 저장하여, 상기 d) 단계에서 모션 실행 이력 및 모션 오류 이력의 프로그램 변경 식별 번호가 컴퓨터의 프로그램 테이블의 프로그램 변경 식별 번호와 동일한지 확인하여, 동일한 경우에만 오류 추적을 수행할 수 있다.
본 발명의 실시예에서, 상기 b) 단계와 c) 단계 각각에서 모션 명령의 실행 횟수인 명령 실행 이력 번호를 모션 실행 이력 및 모션 오류 이력에 함께 저장하고, 상기 d) 단계에서 모션 실행 이력 또는 모션 오류 이력에서 이력 위치를 표시할 수 있다.
본 발명의 실시예에서, 상기 a) 단계에서 상기 사용자 프로그램은 실행 코드와 펑션 코드로 컴파일되며, 실행 코드의 모션 명령은 펑션 코드 주소, 상기 모션 명령 변수 ID, 프로그램 변경 식별 번호를 포함할 수 있다.
본 발명의 실시예에서, 상기 컴퓨터에서 구동되는 엔지니어링 툴에 의해 특정 프로그램이 수정된 경우, 상기 프로그램 변경 식별 번호를 증가시킬 수 있다.
본 발명의 실시예에서, 상기 펑션 코드 주소는, 모션 명령에서 참조할 상기 펑션 코드의 주소인 것으로 한다.
본 발명의 실시예에서, 모션 제어기는, 모션 명령에 의해 제어되는 제어대상 기기들 또는 제어대상 기기 그룹별로, 모션 상태를 메모리에 저장할 수 있다.
본 발명의 실시예에서, 상기 모션 상태는, 정상 또는 오류 상태를 나타내는 상태정보, 모션 명령 변수 ID, 프로그램 변경 식별 번호 및 명령 실행 이력 번호를 포함할 수 있다.
본 발명은 오류가 어떤 프로그램의 어떤 모션 명령에서 발생했는지 정확하게 확인할 수 있도록 하되, 추적이 매우 용이하며, 메모리 사용 및 추적에 사용되는 시간을 단축할 수 있는 효과가 있다.
또한, 본 발명은 프로그램이 수정되더라도, 어느 프로그램의 모션 명령의 어느 시점에서 오류가 발생하였는지 쉽게 확인할 수 있는 효과가 있다.
도 1은 일반적인 모션 제어기의 구성도이다.
도 2는 종래 모션 명령의 예시도이다.
도 3은 종래 확인할 수 있는 모션 상태와 모션 오류 이력의 예시도이다.
도 4는 종래 모션 제어기의 메모리에 저장되는 모션 상태와 모션 오류 이력의 예시도이다.
도 5는 본 발명의 모션 제어기의 오류 추적방법을 설명하기 위한 사용자 프로그램 구성도이다.
도 6은 본 발명 모션 제어기의 오류 추적방법의 흐름도이다.
도 7은 본 발명 모션 제어기의 오류 추적 방법에서 엔지니어링 툴을 이용하여 오류를 추적하는 방법의 흐름도이다.
본 발명의 구성 및 효과를 충분히 이해하기 위하여, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예들을 설명한다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라, 여러가지 형태로 구현될 수 있고 다양한 변경을 가할 수 있다. 단지, 본 실시예에 대한 설명은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위하여 제공되는 것이다. 첨부된 도면에서 구성요소는 설명의 편의를 위하여 그 크기를 실제보다 확대하여 도시한 것이며, 각 구성요소의 비율은 과장되거나 축소될 수 있다.
'제1', '제2' 등의 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 상기 구성요소는 위 용어에 의해 한정되어서는 안 된다. 위 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 수 있다. 예를 들어, 본 발명의 권리범위를 벗어나지 않으면서 '제1구성요소'는 '제2구성요소'로 명명될 수 있고, 유사하게 '제2구성요소'도 '제1구성요소'로 명명될 수 있다. 또한, 단수의 표현은 문맥상 명백하게 다르게 표현하지 않는 한, 복수의 표현을 포함한다. 본 발명의 실시예에서 사용되는 용어는 다르게 정의되지 않는 한, 해당 기술분야에서 통상의 지식을 가진 자에게 통상적으로 알려진 의미로 해석될 수 있다.
이하에서는, 도면을 참조하여 본 발명의 일실시예에 따른 모션 제어기의 오류 추적방법에 대하여 상세히 설명한다.
도 5는 본 발명의 모션 제어기의 오류 추적방법을 설명하기 위한 사용자 프로그램 구성도이고, 도 6은 본 발명 모션 제어기의 오류 추적방법의 흐름도이다.
도 5와 도 6을 각각 참조하면 본 발명 모션 제어기의 오류 추적방법은, 컴퓨터(20)에서 수행되는 엔지니어링 툴에 의해 작성된 프로그램(21)에 포함되는 모션 명령(22)은 각각 모션 명령 변수 ID(23)가 부여된다.
컴퓨터(20)는 엔지니어링 툴을 구동할 수 있는 중앙처리장치, 메모리, 저장매체를 포함하며, 엔지니어링 툴을 통해 작성된 프로그램을 컴파일하여 모션 제어기(10)의 메모리에 저장할 수 있는 통신수단을 포함한다. 사용자 인터페이스로서 디스플레이, 입력장치를 포함한다.
사용자는 컴퓨터(20)를 이용하여 엔지니어링 툴을 구동하고, 엔지니어링 툴을 이용하여 사용자 프로그램(21)을 작성한다. 이때 사용자 프로그램(21)은 다수이며, 프로그램(21)들을 컴파일하여 메모리에 저장한 모션 제어기(10)는 순차적으로 프로그램들을 수행하면서 제어대상 기기(도면 미도시)를 제어한다.
도 5에서 상기 사용자 프로그램(21)은 제어대상 기기 중 모터 등의 모션 장치를 제어하는 모션 명령(22)을 포함하고 있다. 도 5에는 이러한 사용자 프로그램(21)을 엔지니어링 툴을 이용하여 컴파일하여 모션 제어기(10)에 업로드할 수 있는 데이터로 변환하는 과정을 도시하였다.
사용자 프로그램(21)에 포함된 접점, 코일, 일반 명령, 모션 명령 등은 모두 내부적으로는 개별 펑션으로 컴파일된다.
사용자 프로그램(21)을 컴파일한 프로그램 코드(30)는 실행 코드(31)와 펑션 코드(32)로 구분된다. 펑션 코드(32)는 영역은 사용자 프로그램(21)에서 작성한 각각의 접점, 코일, 일반 명령, 모션 명령 등이 컴파일되어 저장된 영역이다.
실행 코드(31)는 해당하는 명령을 만날 때마다 평선 코드 영역에서 해당하는 펑션을 호출해서 실행하게 된다.
실행 코드(31)에서 명령을 만날 때 펑션 코드 영역에서 해당하는 펑션을 호출하기 위해서는 '펑션 코드 주소'가 필요하다. 따라서 프로그램에서 명령어가 실행 코드로 컴파일될 때 펑션 코드 주소(34)가 들어가게 된다.
본 발명에서는 모션 명령(22)에서 오류가 발생하는 경우 어떤 프로그램의 어떤 모션 명령(22)에서 오류가 발생하였는지 정확하게 오류를 추적할 수 있도록 하기 위하여, 모션 명령(22)이 실행될 때 어떠한 명령이 실행되었는지를 확인 가능하게 설정한다.
동일한 모션 명령(22)이라고 하더라도 프로그램(21) 안에서 복수 개를 사용 가능하므로 이를 구분하기 위하여 모션 명령(22)은 내부적으로 변수 형태로 등록되고 사용된다.
따라서, 각각의 모션 명령(22)은 유일한 변수 이름을 갖게 되고 일반적으로 이러한 정보들은 변수 테이블(40)에 기록하여 관리한다. 사용자 프로그램(21)에서 각각의 모션 명령(22)이 실행될 때 어떤 명령인지를 구분하기 위해서는 이 변수 이름을 확인하면 되지만, 일반적으로 변수 이름은 크기가 크므로 실행 코드 영역에 저장하기에는 메모리 용량이 커지고, 이를 처리하는 시간이 오래 걸린다.
따라서, 본 발명에서는 모션 명령(22)에 해당하는 변수를 고유한 '모션 명령 변수 ID(41)'로 변환하여 사용함으로써 메모리 및 처리시간 오버로드를 줄일 수 있게 한다.
사용자 프로그램(21)은 사용자가 필요에 따라 컴퓨터(20)에서 구동되는 엔지니어링 툴을 사용하여 수시로 변경할 수 있기 때문에, 모션 제어기(10)에서 사용자 프로그램(21)이 실행되면서 오류가 발생한 시점의 프로그램과 현재 다운로드 되어 동작하는 프로그램이 다를 수 있다.
따라서, 본 발명에서는 프로그램이 수정되었는지를 확인할 수 있도록 프로그램의 실행 정보를 가지고 있는 프로그램 테이블(50)에 각 프로그램 마다 '프로그램 변경 식별 번호'(51) 정보를 저장한다.
사용자 프로그램(21)은 모션 제어기(10)에서 실행 중 개별로 변경될 수 있으므로 각각의 프로그램이 변경되어 모션 제어기(10)에 업로드 될 때마다 변경 리비전을 증가시켜서 프로그램 변경 식별 번호(51)로 사용한다.
본 발명에서는 앞에서 설명한 것과 같이 사용자 프로그램(21)에서 모션 명령(22)이 실행 코드(31)로 컴파일될 때 모션 명령 컴파일 정보(37)에 기존 펑션 코드 주소와 오류를 추적할 수 있는 기능을 위하여 '모션 명령 변수 ID(35)', '프로그램 변경 식별 번호(36)'를 추가로 삽입한다.
이처럼, 변수 테이블(40)에 모션 명령 변수 ID(41)를 포함하고, 프로그램 테이블(50)에 프로그램의 수정여부를 확인할 수 있는 프로그램 변경 식별번호(51)를 삽입하고, 실행 코드(31)에 모션 명령 변수 ID(35)와 프로그램 변경 식별번호(36)를 저장한 상태로 컴파일 한 후, 도 6과 같이 모션 제어기(10)에 업로드한다.
상기 모션 제어기(10)의 중앙처리장치(11) 등의 프로그램 실행부는 메모리에 저장된 사용자 프로그램을 실행한다.
다시 말해서, 도면 상의 컴파일된 프로그램 코드(30)는 메모리에 저장된 것이며, 메모리에 저장된 컴파일된 프로그램 코드(30)의 실행 코드(31)를 순차적으로 실행한다.
실행 코드(31)를 실행하는 과정에서, 모션 명령(22)이 있으면, 모션 명령 컴파일 정보(37)의 펑션 코드 주소(34)를 읽어온다(S61).
그 다음, 읽어온 펑션 코드 주소(34)에 해당하는 펑션 코드(32)를 찾아 호출하고(S62), 모션 명령을 실행할 수 있도록 호출된 모션 명령을 모션 제어부(12)로 제공한다(S63).
이때, 모션 제어부(12)는 모션 명령 컴파일 정보(37)에 포함된 모션 명령 변수 ID(35)와, 프로그램 변경 식별 번호(36)를 모션 명령과 함께 수신한다(S64).
그 다음, 모션 제어부(12)에서는 실행된 모션 명령의 정보를 해석하여 모션 제어 동작을 실행한다.
도면에서는 명확하게 도시하지 않았으나, 모션 명령은 통신처리부(13)를 통해 제어대상 기기의 서보 드라이버에 송신되는 것으로 이해할 수 있다.
그 다음, 모션 제어부(12)는 실행된 모션 명령을 모션 실행 이력(16) 테이블에 저장된다. 이 모션 실행 이력(16) 테이블은 앞서 프로그램 코드(30)가 저장된 메모리이거나 별도의 메모리일 수 있다.
모션 실행 이력(16) 테이블에는 실행된 모션 명령의 이력이 저장된다(S65).
구체적으로 원형 버퍼에 이력이 순차적으로 저장되며, 이때의 이력들은 각각 명령 종류, 인덱스, 오류 코드, 날짜 시간을 포함하며, 이에 더하여 모션 명령 변수 ID(35)와 프로그램 변경 식별 번호(36), 명령 실행 이력 번호(38)가 함께 저장된다.
명령 실행 이력 번호(38)는 모션 명령의 실행에 따라 순차 부여하는 양의 정수 값일 수 있다.
상기와 같이 모션 실행 이력(16)을 저장함과 아울러 모션 상태(14) 테이블에도 이력을 저장한다. 모션 상태(14) 테이블은 모터(축) 등 구동장치를 개별 또는 그룹별로 정상동작 또는 오류발생을 쉽게 확인할 수 있도록 하기 위한 것이다.
즉, 모션 명령에 의해 제어되는 대상의 상태를 직접 확인할 수 있다.
도면 부호 17은 저장되는 이력의 구체적인 예를 나타낸 것으로, 모션 실행 이력(16)과 모션 오류 이력(15) 테이블에 저장되는 이력의 정보를 동시에 나타내기 위하여 '(오류) 종류 (명령)'으로 기재하였다.
이처럼 모션 명령을 실행할 때 또는 실행하는 중 오류가 발생하는 경우, 모션 제어부(12)는 모션 오류 이력(15)에 이력을 저장한다(S67). 이때 모션 오류 이력(15)은 메모리에 저장된다.
모션 오류 이력(15)은 원형 버퍼에 이력을 발생 순서에 따라 순차 저장하며, 저장되는 이력들은 구체적으로 오류 종류, 인덱스, 오류 코드, 날짜, 시간을 포함하고, 더하여 모션 명령 변수 ID(35)와 프로그램 변경 식별 번호(36)를 포함한다. 또한 오류가 발생한 시점을 추적할 수 있도록 명령 실행 이력 번호(38)을 저장한다.
앞서, 모션 실행 이력(16)에 저장되는 명령 실행 이력 번호(38)는 모션 명령의 실행 순서에 따라 1, 2, 3.. 등 연속적인 번호로 부여되며, 상기 모션 오류 이력(15)에 저장되는 명령 실행 이력 번호(38)는 연속적인 번호 중 오류가 발생한 모션 명령의 순번을 저장하는 것으로, 연속적 또는 불연속적인 양의 정수로 저장된다.
그 다음, 모션 제어 동작을 실행할 때 또는 실행하는 중 오류가 발생하는 경우 상기 모션 오류 이력(15)에 오류 이력을 저장함과 아울러 모션 상태(14) 테이블에도 이력을 저장한다(S67).
모션 상태(14) 테이블 역시 메모리에 저장되며, 모터(축) 등의 구동장치들 마다의 상태를 쉽게 확인할 수 있도록 한다.
모션 상태(14)에는 정상 또는 오류 상태, 모션 명령 변수 ID(35), 프로그램 변경 식별 번호(36), 명령 실행 이력 번호(38)가 저장된다.
위와 같이 모션 제어기(10)의 중앙처리장치(11)에서 프로그램 코드(30) 영역에 저장된 실행코드를 순차적으로 실행하면서 모션 실행 이력(16)에는 모션 명령이 실행될 때마다 정보를 기록 및 모션 상태(14)에 기록하고, 실행된 모션 명령에서 오류가 발생하면 모션 상태(14)와 모션 오류 이력(15)에 오류 정보를 기록하는 동작을 반복적으로 수행한다.
이와 같이 기록된 모션 상태(14), 모션 오류 이력(15), 명령 실행 이력(16)은 기계어로 작성된 것으로, 사용자가 직접 확인할 수 없는 정보이며, 이력을 확인하기 위해서는 다시 컴퓨터(20)의 엔지니어링 툴을 사용해야 한다.
도 7은 본 발명 모션 제어기의 오류 추적 방법에서 엔지니어링 툴을 이용하여 오류를 추적하는 방법의 흐름도이다.
도 7을 참조하면, 앞서 언급한 바와 같이 오류 이력을 추적하기 위해서는 모션 제어기(10)의 메모리에 저장된 데이터를 컴퓨터(20)의 엔지니어링 툴을 이용하여 읽어야 한다.
이를 위해 로더를 통해 모션 제어기(10) 메모리에 저장된 데이터의 압축을 해제하고 변환하여 컴퓨터(20)의 엔지니어링 툴을 이용하여 확인할 수 있다.
이때 읽어들인 데이터는 앞서 도 6을 참조하여 설명한 모션 상태(14), 모션 오류 이력(15), 모션 실행 이력(16)이며, 모션 상태(14), 모션 오류 이력(15) 및 모션 실행 이력(16)에서 오류를 추적하는 과정은 모두 동일하다.
따라서, 아래의 추적 방법은 모션 상태(14), 모션 오류 이력(15) 및 모션 실행 이력(16) 모두에 해당하는 것이며, 설명에서 일부만을 지칭하여 설명하더라도 모션 상태(14), 모션 오류 이력(15) 및 모션 실행 이력(16) 모두에서 동일한 방법을 사용하는 것으로 이해되어야 한다.
먼저, 모션 상태(14) 또는 모션 오류 이력(15) 또는 모션 실행 이력(16)에서 원하는 오류가 발생한 축(또는 축 그룹)을 선택하고, '모션 명령 변수 ID(35)'를 확인한 후, 모션 명령 변수 ID(35)에 부합하는 변수를 변수 테이블(40)에서 찾는다(S71). 이때 프로그램 변경 식별 번호(36)와 명령 실행 이력 번호(38)도 함께 읽어들인다.
그 다음, 모션 명령의 변수가 사용된 프로그램 번호를 확인한다. 프로그램 테이블(50)에서 모션 명령이 사용된 프로그램 번호를 찾아 프로그램 식별 번호(51)를 확인한다.
즉, 읽어들인 모션 상태(14)에 있는 '프로그램 변경 식별 번호(36)' 값과 프로그램 테이블(50)의 프로그램 변경 식별 번호(51)가 일치하는지 확인한다(S72).
이때 확인결과 값이 일치하면, 오류가 발생한 시점의 프로그램과 현재 프로그램이 일치하므로 오류 추적이 가능하다.
그 다음, 변수 테이블(40)의 모션 명령 변수 이름을 확인하여 모션 명령(22)에서 해당 모션 명령이 사용된 위치를 검출한다(S73). 이는 엔지니어링 툴에서 찾기 기능을 이용할 수 있다.
모션 오류 이력(15)(또는 모션 실행 이력(16))에서 오류가 발생된 모션 명령을 찾아가는 과정도 이와 동일하다.
엔지니어링 툴의 모션 오류 이력(15)(또는 모션 실행 이력(16))을 보여주는 컴퓨터(20) 화면에서 추적하기를 원하는 이력 항목을 선택한 후 이력 구성 정보(17) 중 '모션 명령 변수 ID(35)'를 확인하여 위의 S71 내지 S73 과정을 수행한다.
반대로 사용자 프로그램(21)에서 오류가 발생한 모션 명령(22)으로부터 모션 실행 이력(16)에서의 위치를 확인할 수도 있다. 이 기능을 사용하면 해당 모션 명령(22)이 어떤 실행 시퀀스로 동작하다가 오류가 발생하였는지 확인이 가능하므로 엔지니어링 시간을 감소시킬 수 있다.
그 다음, 프로그램(21)에서 오류가 발생한 모션 명령(22)을 선택하면 변수 테이블(40)에서 변수 이름에 맞는 '모션 명령 변수 ID(41)'를 검색한다(S74).
그 다음, '모션 명령 변수 ID(41)'를 확인한 후 모션 오류 이력(15)에서 이력 번호를 확인하여 마지막에 발생한 오류의 위치를 확인한다(S75).
그 다음, '이력 번호'로 마지막에 발생한 오류이력의 위치를 확인한 후 그 위치에서부터 이전에 발생한 오류 이력들 중 상기 S74단계에서 찾은 '모션 명령 변수 ID(35)'와 동일한 값을 가지는 이력을 찾는다(S76).
그 다음, 해당 이력을 찾은 후 이력 구성 정보(17)에서 명령 실행 이력 번호(38)를 확인한다(S77).
그 다음, 명령 실행 이력 번호를 확인한 후 모션 실행 이력(16)에서 해당하는 번호의 이력 위치를 검출하여 컴퓨터(20)의 모니터를 통해 사용자에게 보여줄 수 있다(S78).
이처럼 본 발명은 모션 명령(22)의 변수 이름에 해당하는 고유의 '모션 명령 변수 ID(41)를 만들어 프로그램 코드(30)의 모션 명령 컴파일 정보에 사용함으로써, 오류 추적시 메모리 및 데이터 처리의 오버로드를 줄일 수 있게 된다.
또한, 프로그램의 변경(수정) 여부를 확인하여 오류의 추적이 현재 프로그램에 대한 것인지 검증할 수 있어 신뢰성을 확보할 수 있으며, 모션 실행의 이력 번호를 기록하여 모션 명령이 사용된 프로그램의 위치를 확인할 수 있게 된다.
이상에서 본 발명에 따른 실시예들이 설명되었으나, 이는 예시적인 것에 불과하며, 당해 분야에서 통상적 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 범위의 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 다음의 청구범위에 의해서 정해져야 할 것이다.
10:모션 제어기 20:컴퓨터

Claims (8)

  1. 엔지니어링 툴을 구동하는 사용자의 컴퓨터에서 모션 명령을 포함하는 사용자 프로그램을 작성하여, 컴파일 후 모션 제어기에 업로드하고, 모션 제어기에서 제어대상 기기를 제어할 때 발생하는 오류를 사용자 컴퓨터에서 구동되는 엔지니어링 툴로 추적하는 방법에 있어서,
    a) 상기 사용자 프로그램의 작성시 변수 테이블에 변수, 타입, 프로그램 번호를 작성함과 아울러 모션 명령들 마다 모션 명령 변수 ID를 지정하는 단계;
    b) 상기 모션 제어기에서 모션 명령에 따라 제어대상 기기를 제어하여, 메모리에 모션 실행 이력을 저장하되, 상기 모션 명령 변수 ID를 함께 저장하는 단계;
    c) 상기 b) 단계의 수행 중 오류가 발생한 경우 모션 오류 이력을 메모리에 저장하되, 상기 모션 명령 변수 ID를 함께 저장하는 단계; 및
    d) 사용자의 컴퓨터에서 상기 메모리에 저장된 모션 실행 이력 및 모션 오류 이력을 다운로드하고, 모션 명령 변수 ID를 확인하여 오류가 발생한 프로그램과 제어대상 기기를 추적하는 단계를 포함하는 모션 제어기의 오류 추적방법.
  2. 제1항에 있어서,
    상기 a) 단계에서 프로그램 테이블을 작성하고 프로그램마다 프로그램 변경 식별 번호를 부여하고,
    b) 단계와 c) 단계에서 각각 모션 실행 이력과 모션 오류 이력을 저장할 때 프로그램 변경 식별 번호를 함께 저장하여,
    상기 d) 단계에서 모션 실행 이력 및 모션 오류 이력의 프로그램 변경 식별 번호가 컴퓨터의 프로그램 테이블의 프로그램 변경 식별 번호와 동일한지 확인하여, 동일한 경우에만 오류 추적을 수행하는 모션 제어기의 오류 추적 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 b) 단계와 c) 단계 각각에서 모션 명령의 실행 횟수인 명령 실행 이력 번호를 모션 실행 이력 및 모션 오류 이력에 함께 저장하고,
    상기 d) 단계에서 모션 실행 이력 또는 모션 오류 이력에서 이력 위치를 표시하는 모션 제어기의 오류 추적 방법.
  4. 제3항에 있어서,
    상기 a) 단계에서,
    상기 사용자 프로그램은 실행 코드와 펑션 코드로 컴파일되며,
    실행 코드의 모션 명령은 펑션 코드 주소, 상기 모션 명령 변수 ID, 프로그램 변경 식별 번호를 포함하는 것을 특징으로 하는 모션 제어기의 오류 추적 방법.
  5. 제4항에 있어서,
    상기 컴퓨터에서 구동되는 엔지니어링 툴에 의해 특정 프로그램이 수정된 경우, 상기 프로그램 변경 식별 번호를 증가시키는 것을 특징으로 하는 모션 제어기의 오류 추적 방법.
  6. 제4항에 있어서,
    상기 펑션 코드 주소는,
    모션 명령에서 참조할 상기 펑션 코드의 주소인 것을 특징으로 하는 모션 제어기의 오류 추적 방법.
  7. 제4항에 있어서,
    모션 제어기는,
    모션 명령에 의해 제어되는 제어대상 기기들 또는 제어대상 기기 그룹별로, 모션 상태를 메모리에 저장하는 것을 특징으로 하는 모션 제어기의 오류 추적 방법.
  8. 제7항에 있어서,
    상기 모션 상태는,
    정상 또는 오류 상태를 나타내는 상태정보, 모션 명령 변수 ID, 프로그램 변경 식별 번호 및 명령 실행 이력 번호를 포함하는 모션 제어기의 오류 추적 방법.
KR1020190133432A 2019-10-25 2019-10-25 모션 제어기의 오류 추적방법 KR20210049302A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190133432A KR20210049302A (ko) 2019-10-25 2019-10-25 모션 제어기의 오류 추적방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190133432A KR20210049302A (ko) 2019-10-25 2019-10-25 모션 제어기의 오류 추적방법

Publications (1)

Publication Number Publication Date
KR20210049302A true KR20210049302A (ko) 2021-05-06

Family

ID=75916131

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190133432A KR20210049302A (ko) 2019-10-25 2019-10-25 모션 제어기의 오류 추적방법

Country Status (1)

Country Link
KR (1) KR20210049302A (ko)

Similar Documents

Publication Publication Date Title
US5485620A (en) Integrated control system for industrial automation applications
US8910121B2 (en) Method and device for programming an industrial controller
US8688258B2 (en) Method of controlling a machine tool
US20100313128A1 (en) System and method for free form comments for a programmable logic controller
CN101669077B (zh) 可编程控制器的线图的调试系统、其编程装置及其调试方法
EP3839671A1 (en) Program generating device, program generating method, and program
US20190012168A1 (en) Program generating apparatus
JP5994862B2 (ja) 開発支援装置及び開発支援プログラム
JP4556787B2 (ja) プログラマブルコントローラの編集装置
KR20210049302A (ko) 모션 제어기의 오류 추적방법
US11215974B2 (en) Factory automation (FA) system, controller, and control method
KR100642182B1 (ko) 단일씨피유를 이용한 씨앤씨시스템
CN110637263B (zh) 监视辅助装置、监视辅助方法及记录介质
JP2021144284A (ja) 加工プログラムの管理装置、管理システム、管理方法
CN100367233C (zh) 程序执行控制方式
KR102315227B1 (ko) Plc 제어를 위한 데이터 관리장치 및 방법
JP7404645B2 (ja) プログラマブルコントローラの動作履歴記録方法及びシーケンスプログラム
JP7044086B2 (ja) 制御システム、制御方法、および制御プログラム
EP3933523A1 (en) Engineering device, engineering method, and program
Scott Learning RSLogix 5000 Programming: Build robust PLC solutions with ControlLogix, CompactLogix, and Studio 5000/RSLogix 5000
KR100423742B1 (ko) 순차기능챠트에 의한 전용 제어 시스템
CN117940907A (en) Application program monitoring method and device and readable storage medium
US20040049622A1 (en) Programming tool
CN117148779A (zh) 基于集成开发环境的自动控制系统设计方法和系统
CN115951605A (zh) 控制器系统

Legal Events

Date Code Title Description
A201 Request for examination