KR101743836B1 - 범용 마이크로 프로세서를 이용한 plc의 디버깅 방법 - Google Patents

범용 마이크로 프로세서를 이용한 plc의 디버깅 방법 Download PDF

Info

Publication number
KR101743836B1
KR101743836B1 KR1020150147155A KR20150147155A KR101743836B1 KR 101743836 B1 KR101743836 B1 KR 101743836B1 KR 1020150147155 A KR1020150147155 A KR 1020150147155A KR 20150147155 A KR20150147155 A KR 20150147155A KR 101743836 B1 KR101743836 B1 KR 101743836B1
Authority
KR
South Korea
Prior art keywords
debugging
mpu
plc
code
stop
Prior art date
Application number
KR1020150147155A
Other languages
English (en)
Other versions
KR20170047435A (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 KR1020150147155A priority Critical patent/KR101743836B1/ko
Priority to EP16192825.4A priority patent/EP3159756B1/en
Priority to ES16192825T priority patent/ES2776445T3/es
Priority to CN201610919617.2A priority patent/CN107065737B/zh
Priority to JP2016206596A priority patent/JP6318214B2/ja
Priority to US15/331,623 priority patent/US10041998B2/en
Publication of KR20170047435A publication Critical patent/KR20170047435A/ko
Application granted granted Critical
Publication of KR101743836B1 publication Critical patent/KR101743836B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31705Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • 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/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • 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
    • 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/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25252Microprocessor

Abstract

PLC의 MPU가 사용자 프로그램에 포함된 스텝중에서 정지 스텝의 식별정보 및 파일 정보를 데이터 저장부에 백업하고, 해당 정지 스텝의 컴파일 코드 영역에 예외 인터럽트 코드를 치환하여 디버깅을 위한 정지 스텝을 설정하는 단계; 및 상기 MPU가 PLC 운전중에 상기 사용자 프로그램을 스텝별로 실행하다가 예외 인터럽트 코드가 있는 스텝에서는 PLC 운전을 정지하는 단계를 포함하는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법이 제공된다.

Description

범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법{debugging method of programmable logic controller which uses general purpose microprocessor}
본 발명은 범용 마이크로 프로세서를 이용한 PLC(Programmable Logic Controller)의 디버깅 방법에 관한 것으로, 상세하게는 전용 ASIC와 다르게 별도의 트레이스 기능을 가지고 있지 않은 범용 MPU를 이용해서 사용자가 설정한 스텝에서 운전을 일시 정지할 수 있도록 하여 효과적인 디버깅 기능이 가능한 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법에 관한 것이다.
PLC(Programmable Logic Controller)의 디버깅 기능은 사용자가 작성한 시퀀스 프로그램을 실행하는 도중에 사용자가 원하는 프로그램 스텝에서 PLC의 동작을 일시 정지하고 그 때까지의 운전 정보를 사용자가 확인할 수 있도록 해서 사용자 프로그램의 오류, 또는 특정 시점에서의 데이터를 손쉽게 확인할 수 있는 기능이다.
PC는 사용자가 임의로 선택할 수 있는 디버깅 정지 스텝을 포함한 디버그 명령을 통신을 통해 PLC에 전달하고 PLC로부터 각종 데이터를 읽는 동작을 수행한다.
PLC는 PLC의 동작 자체에 필요한 기본 처리를 수행하고 컴파일 코드를 실행하는 동작을 반복해서 수행하다가 PC로부터 전달받은 운전스텝이 되면 운전을 일시 정지하고 역시 PC의 지령에 따라 운전을 재개하는 동작을 수행한다.
PLC는 PC로부터 디버깅 정지할 정지스텝을 전달받으면 해당 정지할 스텝번호를 PLC내부의 버퍼에 저장한다. PLC는 사용자 프로그램을 수행할 때 매 스텝마다 디버그 체크 함수를 수행한다. 디버그 체크 함수에서는 현재의 운전 스텝과 버퍼에 저장된 정지 스텝을 비교해서 정지 스텝인 경우 운전을 일시 정지한다. 임의의 함수에서 일시 정지한 경우 PLC는 PC로부터 운전재개 지령을 받을 때까지 대기하다가 운전 재개 지령을 받으면 정지했던 스텝부터 운전을 재개한다.
일반적으로 PLC 전용의 ASIC을 설계하는 경우는 사용자 프로그램의 특정 스텝에서 연산을 중지하고 PLC 에게 이를 통지하는 TRACE 기능을 H/W적으로 포함시킬 수도 있지만, 범용 MPU를 사용하는 경우는 이러한 기능이 없기 때문에 PLC는 매 번의 스텝마다 디버깅 체크 루틴을 수행하도록 알고리듬을 설계한다.
따라서, 종래의 경우 디버깅 처리 루틴에서는 현재의 PLC 운전 모드가 디버깅 모드인지 확인한 후 현재 스텝이 설정한 디버그 스텝과 일치하면 운전을 일시 정지하고 PC로부터 다음 지령이 올 때 까지 대기한다. PLC는 PC로부터 운전 재개 지령을 받으면 현재 정지했던 스텝의 다음 스텝부터 운전을 재개한다.
이와 같이 종래에는 사용자 프로그램의 운전 스탭마다 디버깅 정지 처리 조건을 확인하는 디버깅 처리 루틴을 수행하기 때문에 분기와 디버그 처리 동작의 수행을 위해 PLC의 처리시간이 길어지게 된다.
또한 PLC가 디버깅 모드로 운전할 때 정상 운전모드에서는 수행하지 않는 디버깅 체크 루틴이 반복해서 실행되기 때문에 이로 인해 예측하지 못한 부수효과가 발생해서 PLC가 운전모드에서 동작할 때와 동일한 동작을 하지 않을 수 있는 가능성이 있다.
본 발명이 해결하고자 하는 과제는, 범용 MPU를 이용한 PLC의 디버그 동작을 수행할 때 운전 스텝마다 디버깅 처리 루틴을 실행하지 않고 사용자가 지정한 운전스텝에서만 디버깅 처리 동작을 수행할 수 있도록 함으로써 PLC의 디버깅 처리를 단순화하고 성능을 향상시킬 수 있는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법을 제공하는데 있다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 제안되는 실시 예가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일측면에 의하면, PLC의 MPU가 사용자 프로그램에 포함된 스텝중에서 정지 스텝의 식별정보 및 파일 정보를 데이터 저장부에 백업하고, 해당 정지 스텝의 컴파일 코드 영역에 예외 인터럽트 코드를 치환하여 디버깅을 위한 정지 스텝을 설정하는 단계; 및 상기 MPU가 PLC 운전중에 상기 사용자 프로그램을 스텝별로 실행하다가 예외 인터럽트 코드가 있는 스텝에서는 PLC 운전을 정지하는 단계를 포함하는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법이 제공된다.
상기 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법은 상기 MPU가, 상기 디버깅이 완료되면 PLC 운전을 다시 재개하는 단계를 더 포함할 수 있다.
상기 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법은 상기 MPU가 PLC 운전을 다시 재개하기 위해 PC로부터 PLC 운전 재개 명령을 수신하는 단계를 더 포함할 수 있다.
상기 디버깅을 위한 정지 스텝을 설정하는 단계는, 상기 MPU가 PC로부터 정지 스텝의 설정 지령을 수신하면 정지 스텝의 번호와, 해당 정지 스텝의 컴파일 코드를 데이터 저장부의 임시 저장 영역에 백업하는 단계; 및 상기 MPU가 컴파일 코드 영역에서 해당 정지스텝의 컴파일 코드를 인터럽트 코드로 치환하는 단계를 포함할 수 있다.
상기 PLC 운전을 정지하는 단계는, 디버깅을 위한 인터럽트 처리 루틴을 수행하되, 상기 MPU가 PLC 운전중에 상기 사용자 프로그램을 스텝별로 처리하는 단계; 상기 MPU가 상기 각 스텝에 해당하는 컴파일 코드 영역을 읽어 예외 인터럽트 코드가 포함되어 있는지에 따라 예외 인터럽트 발생여부를 판단하는 단계; 상기 MPU가 예외 인터럽트가 발생된 경우 현재 모드가 디버깅 모드인지를 판단하는 단계; 및 상기 MPU가 판단 결과 디버깅 모드이면 디버깅을 위해 PLC 운전을 정지하는 단계를 포함할 수 있다.
상기 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법은 상기 MPU가, 디버깅이 완료되면 운전을 재개하고, 해당 정지 스텝에 상응하여 상기 데이터 저장부의 임시 저장 영역에 백업된 상기 컴파일 코드를 복원하는 단계를 더 포함할 수 있다.
상기 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법은 상기 MPU가, 상기 현재 모드가 디버깅 모드인지를 판단한 결과, 디버깅 모드가 아니면 일반 예외 인터럽트 처리를 수행하는 단계를 더 포함할 수 있다.
본 발명에 의하면, PLC 운전 중에 디버깅을 위한 정지 스텝이 설정된 임의의 스텝에 도달하면 해당 컴파일 코드가 MPU의 예외 인터럽트를 발생시키는 코드로 치환되어 있기 때문에 MPU 예외 인터럽트를 발생하고 인터럽트 처리 루틴으로 분기할 수 있다. 따라서, 현재 스텝이 디버그 설정 스텝인지를 확인할 필요 없이 디버깅 모드인지만 확인한 후 무조건 PLC의 운전을 일시 정지시키게 된다.
이렇게 함으로써, 종래에 디버깅 모드에서 매 스텝을 운전할 때마다 디버그 스텝인지를 확인하는 함수를 수행함으로 인해 PLC의 처리 속도가 느려지거나 디버그 스텝 확인 함수의 실행에 따른 부수효과로 인한 문제점을 해결할 수 있다.
본 발명에 의하면 예외 인터럽트가 발생하기 전까지는 일반적인 운전 모드와 동일한 동작을 수행하기 때문에 PLC 디버깅의 속도와 정확성을 개선할 수 있다.
도 1은 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법을 수행하기 위한 시스템 구성 블록도이다.
도 2는 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법에서 정지 스텝을 설정하는 것을 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법에서 컴파일 코드를 백업하고 예외 인터럽트 코드로 치환하는 것을 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법에서 인터럽트 처리 루틴을 수행하는 것을 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
도 1은 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법을 수행하기 위한 시스템 구성 블록도이다.
도 1을 참조하면, PC(100)는 PLC(200)와 통신을 수행하여 사용자가 임의로 선택할 수 있는 디버깅 정지 스텝을 포함한 디버그 명령을 통신(USB,시리얼 등)을 통해 MPU(210)에 전달하고 MPU(210)로부터 상태 정보를 수신하여 PLC(200)의 각종 데이터를 읽는 동작을 수행한다.
PC(100)는 사용자 프로그램의 오류, 또는 특정 시점에서의 데이터를 확인하기 위해 PLC 디버깅을 수행할 수 있다. PC(100)는 이를 위해서는 PLC(200)내에서 사용자에 의해 작성된 시퀀스 프로그램을 실행하는 도중에 사용자가 원하는 프로그램 스텝에서 PLC(200)의 동작을 일시정지시키고 그 때까지의 운전 정보를 사용자가 확인할 수 있다.
PLC(200)는 MPU(210)와 데이터 저장부(220)를 구비하고 있다. MPU(210)는 PC(100)와 통신을 수행하여 정지 스텝의 번호와 컴파일 코드를 데이터 저장부(220)에 백업하고, 해당 정지 스텝의 컴파일 코드에 예외 인터럽트 코드를 치환하여 디버깅을 위한 정지 스텝을 설정한다.
MPU(210)는 PLC 운전중에 사용자 프로그램을 스텝별로 실행하다가 예외 인터럽트 코드가 포함되어 있는 스텝에서는 인터럽트 처리 루틴을 수행하여 디버깅을 위해 PLC 운전을 정지한다. MPU(210)는 PC(100)와의 통신을 통해 디버깅이 완료되면 PLC 운전을 다시 재개한다.
데이터 저장부(220)는 사용자가 입력한 시퀀스 프로그램을 MPU(210)에서 동작하기 위한 기계어로 번역한 컴파일코드와 운전 데이터를 저장하고 있다. 데이터 저장부(200)를 RAM을 포함할 수 있다. 데이터 저장부(220)는 각 스텝별 컴파일 코드를 저장하고 있는 컴파일 코드 영역과, 임시 저장 영역을 포함할 수 있다.
도 2는 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법을 설명하기 위한 흐름도이다.
도 2를 참조하면, PLC(200)는 PC(100)와 통신을 수행하여 정지 스텝의 설정 지령이 있는 경우에 정지 스텝의 번호와 컴파일 코드를 데이터 저장부(220)의 임시 저장 영역에 백업하고, 정지 스텝에 예외 인터럽트 코드를 치환하여 디버깅을 위한 정지 스텝을 설정한다(S10).
디버깅을 위한 정지 스텝이 설정된 상태에서, PLC(200)는 PLC 운전중에 사용자 프로그램을 스텝별로 실행하다가 예외 인터럽트 코드가 포함되어 있는 스텝에서는 인터럽트 처리 루틴을 수행하여 디버깅을 위해 PLC 운전을 정지하고, 디버깅을 완료하면 PLC 운전을 다시 재개한다(S20).
도 3은 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법에서 정지 스텝을 설정하는 것을 설명하기 위한 도면이다. 도 4는 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법에서 컴파일 코드를 백업하고 예외 인터럽트 코드로 치환하는 것을 설명하기 위한 도면이다.
도 3을 참조하면, PLC(200)의 MPU(210)는 PC(100)와 통신을 수행한다(S11). 이에 따라, MPU(210)는 PC(100)로부터 정지 스텝을 설정받을 수 있다.
따라서, MPU(210)는 PC(100)로부터 정지 스텝의 설정을 위한 정지 스텝 설정 지령이 수신되었는지 여부를 판단한다(S12).
판단 결과, PC(100)로부터 정지 스텝 설정 지령이 수신된 경우 MPU(210)는 해당 정지 스텝의 번호와 정지 스텝의 위치에 해당하는 컴파일 코드를 데이터 저장부(220)의 임시 저장 영역(222)에 백업한다(S13).
MPU(210)는 정지 스텝요청을 받은 정지 스텝의 번호만 임시 저장 영역(222)에 저장하지 않고, 정지할 스텝에 위치한 컴파일 코드 자체도 함께 임시 저장 영역(222)에 저장한다.
예를 들어, 도 4에서는 2번째 스텝에 디버깅 정지 설정지령을 받은 예이므로 2번째 스텝의 컴파일 코드인 ‘SUB’를 데이터 저장부(220)의 임시 저장 영역(222)에 저장한다.
그리고, MPU(210)는 데이터 저장부(220)의 컴파일 코드 영역(221)에서 정지 스텝의 위치에 해당하는 컴파일 코드를 예외 인터럽트 코드로 치환한다(S14). 즉, 정지 스텝의 위치에 해당하는 컴파일 코드는 MPU(210)의 예외 인터럽트를 발생시키는 예외 인터럽트 코드로 치환한다. 예를 들어, 예외 인터럽트 코드는 NMI(Non Maskable Interrupt), 또는 Instruction Exception을 발생시키는 기계어 코드를 포함할 수 있다. 그러나 본 발명은 이에 제한되지 않으며 각 범용 MPU에서 사용되는 예외 인터럽트 코드들이 사용될 수 있다.
도 4에서는 2번째 스텝에 대하여 디버깅을 위한 정지 설정지령을 받은 예이므로, MPU(210)는 데이터 저장부(220)의 컴파일 코드 영역(221)에서 2번째 스텝의 컴파일 코드인 ‘SUB’를 EXCEPTION 코드로 치환한다. 이후 MPU(210)는 정상적인 PLC 운전을 수행한다.
도 5는 본 발명의 일실시예에 따른 범용 마이크로 프로세서를 이용한 프로그래머블 로직 컨트롤러의 디버깅 방법에서 인터럽트 처리 루틴을 수행하는 것을 설명하기 위한 도면이다.
도 5를 참조하면, PLC(200)의 MPU(210)는 사용자 프로그램을 스텝별로 처리한다(S21). PLC(200)는 매 스텝을 실행하면서 매 스텝의 컴파일 코드를 읽어서 예외 인터럽트가 발생했는지 여부를 판단한다(S22).
판단 결과, 임의의 스탭에서 예외 인터럽트가 발생된 경우, MPU(210)는 디버깅 모드인지 여부를 판단한다(S23). 여기에서 디버깅 모드인지 여부를 판단하는 것은 예외 인터럽트에 대하여 임시 저장 영역(222)에 저장되어 있는 정지 스텝의 번호와 그에 해당하는 컴파일 코드가 있는지 여부에 따라 가능하다. 예를 들어, 예외 인터럽트가 발생된 상태에서 임시 저장 영역(222)에 정지 스텝의 번호와 그에 해당하는 컴파일 코드가 저장된 경우에는 디버깅 모드라고 판단할 수 있다.
판단 결과, 디버깅 모드인 경우에는 MPU(210)는 운전 일시 정지하고 디버깅을 위해 PC(100)와 통신을 수행한다. 이에 따라, PC(100)는 PLC(200)가 운전 정지 상태에서 해당 스텝에서의 디버깅 작업을 수행하게 된다.
MPU(210)는 PC(100)로부터 운전 재개 지령이 수신되었는지를 판단한다(S25).
판단 결과 PC(100)로부터 운전 재개 지령이 수신되면 임시 저장 영역(222)에 저장되어 있는 컴파일 코드를 복원하고(S26), 다음 스텝으로 이동한다.
한편, S23의 판단 결과 디버깅 모드가 아닌 경우에는 일반 예외 인터럽트가 발생된 것으로 간주하여 일반 예외 인터럽트로 처리한다(S28). 즉, 임시 저장 영역(222)에 정지 스텝의 번호와 그에 해당하는 컴파일 코드가 저장되어 있지 않은 경우에는 일반 예외 인터럽트가 발생된 것으로 간주하여 일반 예외 인터럽트 처리를 수행한다.
이와 같이 운전 중 두 번째 스텝에 도달하면 해당 컴파일 코드가 MPU(210)의 예외 인터럽트를 발생시키는 코드로 치환되었기 때문에 MPU 예외 인터럽트를 발생하고 인터럽트 처리 루틴으로 분기하게 된다.
따라서, 현재 스텝이 디버그 설정 스텝인지를 확인할 필요 없이 디버깅 모드인지만 확인한 후 무조건 PLC(100)의 운전을 일시 정지시킨다. 이후 MPU(210)는 PC(100)와의 통신처리를 수행하면서 대기하다가 운전재개 지령이 수신되면 해당 스텝의 컴파일 코드를 백업했던 원래의 명령어 코드로 복원시킨 후 운전을 재개한다.
이와 같이, 종래에는 디버깅 모드에서 매 스텝을 운전할 때마다 디버그 스텝인지를 확인하는 함수를 수행하기 때문에 PLC의 처리 속도가 느려지거나 디버그 스텝 확인 함수의 실행에 따른 부수효과로 인한 문제점이 발생할 수 있지만, 본 발명에 의하면 예외 인터럽트가 발생하기 전까지는 일반적인 운전 모드와 동일한 동작을 수행하기 때문에 이러한 문제점을 개선할 수 있다.
이상에서 본 발명에 따른 실시예들이 설명되었으나, 이는 예시적인 것에 불과하며, 당해 분야에서 통상적 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 범위의 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 다음의 특허청구범위에 의해서 정해져야 할 것이다.

Claims (7)

  1. PLC의 MPU가 사용자 프로그램에 포함된 스텝중에서 정지 스텝의 식별정보 및 파일 정보를 데이터 저장부에 백업하고, 해당 정지 스텝의 컴파일 코드 영역에 예외 인터럽트 코드를 치환하여 디버깅을 위한 정지 스텝을 설정하는 단계; 및
    상기 MPU가 PLC 운전중에 상기 사용자 프로그램을 스텝별로 실행하다가 예외 인터럽트 코드가 있는 스텝에서는 PLC 운전을 정지하는 단계를 포함하고,
    상기 PLC 운전을 정지하는 단계는,
    디버깅을 위한 인터럽트 처리 루틴을 수행하되,
    상기 MPU가 PLC 운전중에 상기 사용자 프로그램을 스텝별로 처리하는 단계;
    상기 MPU가 상기 각 스텝에 해당하는 컴파일 코드 영역을 읽어 예외 인터럽트 코드가 포함되어 있는지에 따라 예외 인터럽트 발생여부를 판단하는 단계;
    상기 MPU가 예외 인터럽트가 발생된 경우 현재 모드가 디버깅 모드인지를 판단하는 단계; 및
    상기 MPU가 판단 결과 디버깅 모드이면 디버깅을 위해 PLC 운전을 정지하는 단계를 포함하되,
    상기 현재 모드가 디버깅 모드인지를 판단하는 단계는, 상기 데이터 저장부의 임시 저장 영역에 정지 스텝의 번호와 그에 해당하는 컴파일 코드가 저장되어 있는지 여부를 기초로 판단하는 것을 포함하는
    범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법.
  2. 제1 항에 있어서,
    상기 MPU가, 상기 디버깅이 완료되면 PLC 운전을 다시 재개하는 단계를 더 포함하는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법.
  3. 제2 항에 있어서,
    상기 MPU가 PLC 운전을 다시 재개하기 위해 PC로부터 PLC 운전 재개 명령을 수신하는 단계를 더 포함하는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법.
  4. 제1 항에 있어서, 상기 디버깅을 위한 정지 스텝을 설정하는 단계는,
    상기 MPU가 PC로부터 정지 스텝의 설정 지령을 수신하면 정지 스텝의 번호와, 해당 정지 스텝의 컴파일 코드를 상기 데이터 저장부의 상기 임시 저장 영역에 백업하는 단계; 및
    상기 MPU가 컴파일 코드 영역에서 해당 정지스텝의 컴파일 코드를 인터럽트 코드로 치환하는 단계를 포함하는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법.
  5. 삭제
  6. 제1 항에 있어서,
    상기 MPU가, 디버깅이 완료되면 운전을 재개하고, 해당 정지 스텝에 상응하여 상기 데이터 저장부의 상기 임시 저장 영역에 백업된 상기 컴파일 코드를 복원하는 단계를 더 포함하는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법.
  7. 제1 항에 있어서,
    상기 MPU가, 상기 현재 모드가 디버깅 모드인지를 판단한 결과, 디버깅 모드가 아니면 일반 예외 인터럽트 처리를 수행하는 단계를 더 포함하는 범용 마이크로 프로세서를 이용한 PLC의 디버깅 방법.
KR1020150147155A 2015-10-22 2015-10-22 범용 마이크로 프로세서를 이용한 plc의 디버깅 방법 KR101743836B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020150147155A KR101743836B1 (ko) 2015-10-22 2015-10-22 범용 마이크로 프로세서를 이용한 plc의 디버깅 방법
EP16192825.4A EP3159756B1 (en) 2015-10-22 2016-10-07 Method of debugging a plc program
ES16192825T ES2776445T3 (es) 2015-10-22 2016-10-07 Método para depurar un programa PLC
CN201610919617.2A CN107065737B (zh) 2015-10-22 2016-10-19 通过使用通用微处理器来调试plc的方法
JP2016206596A JP6318214B2 (ja) 2015-10-22 2016-10-21 汎用マイクロプロセッサを用いたplcのデバッグ方法
US15/331,623 US10041998B2 (en) 2015-10-22 2016-10-21 Method of debugging PLC by using general-purpose microprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150147155A KR101743836B1 (ko) 2015-10-22 2015-10-22 범용 마이크로 프로세서를 이용한 plc의 디버깅 방법

Publications (2)

Publication Number Publication Date
KR20170047435A KR20170047435A (ko) 2017-05-08
KR101743836B1 true KR101743836B1 (ko) 2017-06-07

Family

ID=57113192

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150147155A KR101743836B1 (ko) 2015-10-22 2015-10-22 범용 마이크로 프로세서를 이용한 plc의 디버깅 방법

Country Status (6)

Country Link
US (1) US10041998B2 (ko)
EP (1) EP3159756B1 (ko)
JP (1) JP6318214B2 (ko)
KR (1) KR101743836B1 (ko)
CN (1) CN107065737B (ko)
ES (1) ES2776445T3 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897301A (zh) * 2018-06-06 2018-11-27 北京铂阳顶荣光伏科技有限公司 一种专用设备的调试方法、装置及系统
CN109375576B (zh) * 2018-12-05 2021-07-20 广州奇芯机器人技术有限公司 一种plc程序信号在线分析和诊断方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215079A (ja) * 1999-01-22 2000-08-04 Nec Radio Equipment Eng Ltd Cpuデバッガ
JP2013084112A (ja) * 2011-10-07 2013-05-09 Fuji Electric Co Ltd プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4303990A (en) * 1976-07-01 1981-12-01 Gulf & Western Industries, Inc. Programmable controller using microprocessor
EP0218979B1 (en) * 1985-10-03 1991-04-24 Mitsubishi Denki Kabushiki Kaisha Computer program debugging system
US5802389A (en) * 1994-12-29 1998-09-01 Siemens Energy & Automation, Inc. Expansion module address method and apparatus for a programmable logic controller
JPH1165886A (ja) 1997-08-19 1999-03-09 Hitachi Ltd 計算機のプログラムデバック方式
DE60028379T2 (de) * 1999-03-30 2007-03-08 Siemens Energy & Automation, Inc. Speicherprogrammierbare steuerung
US6839785B2 (en) * 2001-03-21 2005-01-04 Siemens Energy & Automation, Inc. System for and method of interfacing expansion modules with programmable logic controllers (PLC)
JP4784355B2 (ja) 2006-03-17 2011-10-05 富士電機株式会社 プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法、プログラミング支援プログラム、プログラマブルコントローラのデバッグ制御プログラム
JP2008204023A (ja) 2007-02-19 2008-09-04 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
CN101082819A (zh) * 2007-07-10 2007-12-05 张家港市万科信息技术有限公司 可视化可编程逻辑控制器
KR101426983B1 (ko) * 2010-07-07 2014-08-06 엘에스산전 주식회사 Plc의 통신장치 및 방법
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
JP5800135B2 (ja) 2011-07-15 2015-10-28 富士電機株式会社 プログラマブルコントローラ
CN104898546B (zh) * 2015-05-06 2017-07-14 浙江中控研究院有限公司 一种基于soc的plc在线调试系统和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215079A (ja) * 1999-01-22 2000-08-04 Nec Radio Equipment Eng Ltd Cpuデバッガ
JP2013084112A (ja) * 2011-10-07 2013-05-09 Fuji Electric Co Ltd プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法

Also Published As

Publication number Publication date
EP3159756B1 (en) 2019-12-25
JP6318214B2 (ja) 2018-04-25
JP2017084361A (ja) 2017-05-18
US10041998B2 (en) 2018-08-07
CN107065737B (zh) 2019-08-13
US20170115349A1 (en) 2017-04-27
CN107065737A (zh) 2017-08-18
ES2776445T3 (es) 2020-07-30
EP3159756A1 (en) 2017-04-26
KR20170047435A (ko) 2017-05-08

Similar Documents

Publication Publication Date Title
KR101903805B1 (ko) 프로그램 상태를 체크포인팅하며 복원하기 위한 방법
US8601445B2 (en) Detaching profilers
EP1855205A1 (en) Debug supporting device, and program for causing computer to execute debug processing method
US8423970B2 (en) Method, computer program product, and hardware product for handling breakpoints in an asynchronous debug model
CN113127248B (zh) 面向机器人ros程序的自动崩溃恢复方法和系统
KR101743836B1 (ko) 범용 마이크로 프로세서를 이용한 plc의 디버깅 방법
CN107179982B (zh) 一种跨进程调试方法和装置
CN104391754A (zh) 一种任务异常的处理方法及装置
US10783027B2 (en) Preemptive crash data capture
CN111984524A (zh) 故障注入方法、故障模拟方法、故障注入装置及存储介质
CN114168389A (zh) Cad文件的恢复方法、装置、存储介质及处理器
WO2009055119A2 (en) Methods and systems for operating an automated system
JP2013109652A (ja) コンパイラ、そのコンパイラによって作成されたプログラムモジュールの制御方法、及び、その制御方法を実現する制御装置
CN110727577A (zh) 嵌入式系统软件中概率复现问题的调试方法、系统及介质
KR101550652B1 (ko) 프로그램 개발 환경 제공 장치 및 방법
CN106021041B (zh) 基于有限状态机的多周期非流水线cpu调试方法
JP4114632B2 (ja) チェックポインティング方式及びプログラム
CN116089164A (zh) 故障点前滚恢复方法、装置及存储介质
CN113986321A (zh) 一种plc设备的升级方法、装置、设备及存储介质
US9542188B2 (en) Hardware debugging apparatus and method for software pipelined program
JP2007213396A (ja) デバッグシステム、オペレーションシステム、デバッグ方法、プログラム
CN114546456A (zh) 一种升级方法、装置及电子设备
CN117149246A (zh) 嵌入式系统应用程序升级方法和装置、挖掘机和存储介质
CN111737056A (zh) 文件断点重入方法及装置
JPH05233367A (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