KR20120130420A - Programming block assembly, robot system operated by program using the same, and programming method thereof - Google Patents

Programming block assembly, robot system operated by program using the same, and programming method thereof Download PDF

Info

Publication number
KR20120130420A
KR20120130420A KR1020110048328A KR20110048328A KR20120130420A KR 20120130420 A KR20120130420 A KR 20120130420A KR 1020110048328 A KR1020110048328 A KR 1020110048328A KR 20110048328 A KR20110048328 A KR 20110048328A KR 20120130420 A KR20120130420 A KR 20120130420A
Authority
KR
South Korea
Prior art keywords
programming
block
program
block assembly
unit
Prior art date
Application number
KR1020110048328A
Other languages
Korean (ko)
Other versions
KR101284910B1 (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 KR1020110048328A priority Critical patent/KR101284910B1/en
Publication of KR20120130420A publication Critical patent/KR20120130420A/en
Application granted granted Critical
Publication of KR101284910B1 publication Critical patent/KR101284910B1/en

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1658Programme controls characterised by programming, planning systems for manipulators characterised by programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Abstract

PURPOSE: A programming block assembly, a robot system driven by program using the same, and a programming method thereof are provided to compose a complex programming language into an assembled block type of real puzzle blocks or lego blocks by the unit of each command or parameter. CONSTITUTION: A robot system comprises a programming block assembly(200) and a robot(100). The programming block assembly assembles unit programming blocks corresponding to program language through hardware. The robot recognizes the overall shape of the programming block assembly, composes and stores program corresponding to the recognized programming block assembly, and is driven according to the composed program. [Reference numerals] (110) Micro-controller; (120) Power supply unit; (130) Program driving unit(Robot mechanism unit); (140) Sensor; (150) Program storage unit; (201) Function block; (202) Sensor variable block; (203) Common variable block; (AA) Robot; (BB) Program Read/Write; (CC) Program execution; (DD) Program generation; (EE, FF) Combination(RS-485 communication); (GG) Infrared sensor variables; (HH) Ultrasonic sensor variables; (II) Encoder variables; (JJ) Starting block; (KK) Program execution block; (LL) Conditional function block; (MM) Numeric variables; (NN) Character variables; (OO) ON/OFF; (PP) Programming block assembly

Description

프로그래밍 블록 조립체, 이를 이용한 프로그램에 의해 구동되는 로봇 시스템 및 그 프로그래밍 방법 {Programming block assembly, robot system operated by program using the same, and programming method thereof}Programming block assembly, robot system driven by program using same and programming method thereof {Programming block assembly, robot system operated by program using the same, and programming method}

본 발명은 프로그래밍 블록 조립체에 관한 것으로, 보다 구체적으로, 퍼즐블록(Puzzle Block) 또는 레고블록(Lego Block) 등을 조합하거나 조립한 조립블록에 의해 로봇(Robot)을 구동할 수 있는 프로그램 명령어를 작성하는 프로그래밍 블록 조립체(Programming Block Assembly) 및 이를 이용한 프로그램에 의해 구동되는 로봇 시스템에 관한 것이다.
The present invention relates to a programming block assembly, and more particularly, to create a program instruction capable of driving a robot by an assembly block that combines or assembles a puzzle block or a lego block. The present invention relates to a programming block assembly and a robot system driven by a program using the same.

산업과 기술이 발전함에 따라 매우 다양한 형태의 로봇들이 제안되고 만들어지고 있을 뿐만 아니라, 사회의 모든 분야에서 다양하게 사용되고 있다. 이러한 로봇으로는 사용 목적에 따라 산업현장에서 생산을 하기 위한 산업용 로봇과 사용자들에게 로봇의 동작 원리 등을 이해시키기 위한 교육용 로봇이 있다.As the industry and technology develop, not only various types of robots are proposed and made, but also variously used in all fields of society. Such robots include industrial robots for production in industrial sites and educational robots for users to understand the operation principle of the robots according to the purpose of use.

특히, 근래에는 기술의 발전에 따라 컴퓨터를 이용해 작성한 제어프로그램에 따라 사용자가 리모컨으로 로봇의 동작을 제어할 수 있게 되었다. 따라서 로봇이 특정 동작을 구현하도록 하기 위해서는 통상적으로 컴퓨터를 이용하여 로봇을 제어하기 위한 프로그램을 미리 작성하고, 로봇 제어프로그램을 로봇의 중앙처리장치 보드에 전송하여야 한다.In particular, in recent years, according to the development of technology, a user can control the operation of the robot with a remote control according to a control program written using a computer. Therefore, in order for the robot to implement a specific operation, a program for controlling the robot is typically prepared in advance by using a computer, and the robot control program must be transmitted to the CPU board of the robot.

한편, 관련 기술로서, 대한민국 등록특허번호 제10-746156호에는 "로봇 트레이닝 장치 및 상기 로봇 트레이닝 장치를 이용한 로봇 교육 시스템"이라는 명칭의 발명이 개시되어 있는데, 도 1을 참조하여 설명하기로 한다.On the other hand, as a related technology, Korean Patent No. 10-746156 discloses an invention named "robot training device and robot training system using the robot training device", which will be described with reference to FIG.

도 1은 종래의 기술에 따른 로봇 교육 시스템의 구성도이다.1 is a block diagram of a robot training system according to the prior art.

도 1을 참조하면, 종래의 기술에 따른 로봇 교육 시스템(10)은, 로봇 트레이닝 장치(11) 및 상기 로봇 트레이닝 장치로 제어 프로그램을 제공하는 제어장치(12)를 포함한다.Referring to FIG. 1, the robot training system 10 according to the related art includes a robot training apparatus 11 and a controller 12 for providing a control program to the robot training apparatus.

로봇 트레이닝 장치(11)는 주 제어모듈(11a), 다수의 단위 모듈들(11b~11d), 및 주 제어모듈과 단위 모듈들을 선택적으로 탈부착시킬 수 있는 베이스부재로 이루어지며, 이때, 단위 모듈(11b~11d)은 센서 모듈(11b), 메커니즘 모듈(11c), 모터 모듈들(11d)로부터 선택된 적어도 하나 이상의 모듈들로 이루어진다.The robot training apparatus 11 includes a main control module 11a, a plurality of unit modules 11b to 11d, and a base member to selectively detach the main control module and the unit modules. 11b to 11d consist of at least one module selected from the sensor module 11b, the mechanism module 11c and the motor modules 11d.

제어 장치(12)는 로봇 제어 프로그램 제작 모듈 및 통신 인터페이스부를 구비하여, 프로그램 제작 모듈을 이용하여 제작된 제어 프로그램을 로봇 트레이닝 장치(11)의 주 제어모듈(11a)로 다운로드시킨다. 제어 프로그램을 다운로드받은 로봇 트레이닝 장치(11)의 주 제어모듈(11a)은 제어 프로그램에 따라 단위 모듈들(11b~11d)의 동작을 제어하게 된다.The control device 12 includes a robot control program production module and a communication interface, and downloads a control program produced using the program production module to the main control module 11a of the robot training device 11. The main control module 11a of the robot training apparatus 11 having downloaded the control program controls the operations of the unit modules 11b to 11d according to the control program.

종래의 기술에 따른 로봇 교육 시스템에 따르면, 로봇을 직접 구성하고, 이에 대한 제어 프로그램을 직접 작성할 수 있도록 하여 로봇의 구성 및 제어를 효과적으로 학습시킬 수 있다. 즉, 전술한 구성을 갖는 로봇 교육 시스템을 이용하여, 로봇의 구성, 로봇을 구성하는 각 단위 모듈들의 동작 및 그 제어 방법들뿐만 아니라, 다양한 형태의 로봇에 대한 제어 프로그램의 작성 등을 체계적으로 교육시킬 수 있다. According to the robot training system according to the related art, it is possible to directly configure the robot, and to directly write a control program thereof, thereby effectively learning the configuration and control of the robot. That is, by using the robot training system having the above-described configuration, systematically training not only the configuration of the robot, the operation of each unit module constituting the robot, and the control methods thereof, but also the preparation of a control program for various types of robots. You can.

그러나 로봇 제어프로그램을 입력하기 위해서는 먼저 컴퓨터를 이용하여 로봇 제어프로그램을 작성하여야 했으므로 어린이와 같이 컴퓨터를 능숙하게 다룰 수 없는 사용자는 로봇 제어프로그램을 작성할 수 없었고, 컴퓨터가 없는 환경에서는 로봇 제어프로그램을 로봇에 전송할 수 없는 문제점이 있었다.However, in order to input the robot control program, the robot control program had to be written using a computer first. Therefore, a user who could not handle the computer skillfully, such as a child, could not write a robot control program. There was a problem that could not be transferred to.

한편, 전술한 문제점을 해결하기 위한 관련 기술로서, 대한민국 공개특허번호 제2010-53797호에는 "아동용 교육 로봇 장치 및 이의 작동방법"이라는 명칭의 발명이 개시되어 있는데, 도 2a 및 도 2b를 참조하여 설명하기로 한다.On the other hand, as a related technology for solving the above-described problems, Korean Patent Publication No. 2010-53797 discloses the invention named "Children's educational robot device and its operation method", with reference to Figures 2a and 2b. Let's explain.

도 2a는 종래의 기술에 따른 아동용 교육 로봇 장치를 나타내는 사시도이고, 도 2b는 도 2a에 도시된 로봇 제어프로그램 입력장치를 나타내는 구성도이다.Figure 2a is a perspective view showing a children's educational robot device according to the prior art, Figure 2b is a block diagram showing the robot control program input device shown in Figure 2a.

도 2a를 참조하면, 종래의 기술에 따른 아동용 교육 로봇 장치는, 로봇 제어프로그램 입력장치(20), 로봇(30), 인터페이스(40) 및 입력카드(50)를 포함한다. 또한, 도 2b를 참조하면, 종래의 기술에 따른 아동용 교육 로봇 장치에서 로봇 제어프로그램 입력장치(20)는 판독부(26), 저장부(27), 제어부(28) 및 통신부(29)를 포함한다.Referring to FIG. 2A, the children's educational robot device according to the related art includes a robot control program input device 20, a robot 30, an interface 40, and an input card 50. In addition, referring to Figure 2b, in the children's educational robot apparatus according to the prior art, the robot control program input device 20 includes a reader 26, a storage unit 27, a control unit 28 and a communication unit 29. do.

로봇 제어프로그램 입력장치(20)로부터 특정 동작에 대응하는 로봇 제어프로그램이 인터페이스(40)를 통해 상기 로봇(30)에 전달된다. 이때, 로봇(30)은 특정 동작을 실질적으로 수행한다.The robot control program corresponding to a specific operation is transmitted from the robot control program input device 20 to the robot 30 through the interface 40. At this time, the robot 30 substantially performs a specific operation.

로봇 제어프로그램 입력장치(20)는 슬라이딩 홈(21), 디스플레이부(23) 및 스위치(25)를 포함한다.The robot control program input device 20 includes a sliding groove 21, a display unit 23, and a switch 25.

로봇 제어프로그램 입력장치(20)는 슬라이딩 홈(21)을 통해 코드정보가 기록된 입력카드(50)를 스캐닝한다. 여기서, 슬라이딩 홈(21)의 양 끝단이 오픈되도록 형성된다. 입력카드(50)가 슬라이딩 홈(21)의 양 끝단을 순차적으로 슬라이딩 되면서 지나면, 입력카드(50)는 스캐닝되어 로봇 제어프로그램 입력장치(20)에 코드정보가 기록될 수 있다.The robot control program input device 20 scans the input card 50 in which code information is recorded through the sliding groove 21. Here, both ends of the sliding groove 21 are formed to be open. When the input card 50 slides through both ends of the sliding groove 21 sequentially, the input card 50 may be scanned and code information may be recorded in the robot control program input device 20.

입력카드(50)는 제1 내지 제5 입력카드(IC1~IC5)를 포함할 수 있다. 제1 내지 제5 입력카드들(IC1~IC5) 각각은 로봇(30)의 특정한 동작을 구현하도록 명령문에 대응하는 정보코드를 가질 수 있다. 예를 들어, 제1 내지 제5 입력카드들(IC1~IC5)에 각각에 대응하는 명령문에 의해 로봇(30)은 직진, 좌회전, 우회전, 후진 및 정지한다.The input card 50 may include first to fifth input cards IC1 to IC5. Each of the first to fifth input cards IC1 to IC5 may have an information code corresponding to a statement to implement a specific operation of the robot 30. For example, by the statements corresponding to each of the first to fifth input cards IC1 to IC5, the robot 30 moves straight ahead, left turns, right turns, backwards, and stops.

이러한 제1 내지 제5 입력카드들(IC1~IC5)은 슬라이딩 홈(21)에 순차적으로 스캐닝될 수 있으며, 필요한 동작에 따라 다양한 순서로 슬라이딩 홈(21)에 스캐닝될 수 있다. 그리하여, 로봇(30)은 입력카드들의 조합으로 다양한 동작으로 작동할 수 있다. 여기서, 제1 내지 제5 입력카드들(IC1~IC5) 각각은 고유의 입력카드 번호를 갖는다.The first to fifth input cards IC1 to IC5 may be sequentially scanned in the sliding groove 21, and may be scanned in the sliding groove 21 in various orders according to a required operation. Thus, the robot 30 can operate in various operations with a combination of input cards. Here, each of the first to fifth input cards IC1 to IC5 has a unique input card number.

디스플레이부(23)는 로봇 제어프로그램 입력장치(20)가 입력카드(50)의 정보코드를 판독할 때, 판독이 정상적으로 이루어지는지, 비정상적으로 이루어지는지 여부를 표시한다. 즉, 정상적으로 판독되는 입력카드 번호 및 비정상적으로 판독되는 입력카드 번호를 표시한다.When the robot control program input device 20 reads the information code of the input card 50, the display unit 23 displays whether the reading is normal or abnormal. That is, the input card number read normally and the input card number read abnormally are displayed.

로봇 제어프로그램 입력장치(20)의 판독부(26)는 입력카드(50)로부터 로봇 제어프로그램을 구성하는 명령문에 대한 코드정보를 판독한다. 또한, 판독부(26)는 제1 포토인터럽트(26a) 및 제2 포토인터럽트(26b)를 포함한다.The reading unit 26 of the robot control program input device 20 reads code information for a statement constituting the robot control program from the input card 50. In addition, the reading unit 26 includes a first photo interrupt 26a and a second photo interrupt 26b.

로봇 제어프로그램 입력장치(20)의 저장부(27)는 판독부(26)에 의해 판독된 코드정보에 대응하는 명령문을 저장하는 역할을 수행한다. 이때, 저장부(27)는 코드정보에 대응하는 명령문 집합을 저장할 수 있다.The storage unit 27 of the robot control program input device 20 serves to store a statement corresponding to the code information read by the reading unit 26. In this case, the storage unit 27 may store a statement set corresponding to the code information.

로봇 제어프로그램 입력장치(20)의 제어부(28)는 판독부(26)에 의해 판독된 코드정보를 이용하여 저장부(27)에 저장된 해당 명령문을 읽는다. 이어서, 명령문을 이용하여 로봇 제어프로그램을 작성한다.The control unit 28 of the robot control program input device 20 reads the corresponding statement stored in the storage unit 27 using the code information read by the reading unit 26. Next, the robot control program is created using the statement.

종래의 기술에 따른 아동용 교육 로봇 장치에 따르면, 컴퓨터를 다룰 수 있는 능력이 없는 사용자라 하더라도 컴퓨터를 이용하지 않고도 로봇 제어프로그램을 용이하게 입력할 수 있다.According to the children's educational robot apparatus according to the related art, even a user who does not have the ability to handle the computer can easily input the robot control program without using the computer.

그러나 종래의 기술에 따른 아동용 교육 로봇 장치의 경우, 로봇(30)의 특정한 동작을 구현하도록 바코드 형태의 정보코드를 갖는 입력카드들(50)을 사용하는데, 이러한 입력카드(50)는 별도의 로봇 제어프로그램 입력장치(20)를 사용하여 로봇 제어프로그램을 단순하게 입력하는 기능만을 제공한다. 즉, 입력카드는 제조사에 의해 제공된 형태만을 사용할 수 있으므로, 사용자가 실제 프로그램 언어로 활용할 수 없다는 문제점이 있다.
However, in the case of the children's educational robot device according to the prior art, using the input card 50 having an information code in the form of a barcode to implement a specific operation of the robot 30, such input card 50 is a separate robot The control program input device 20 provides only a function of simply inputting a robot control program. That is, since the input card can only use the form provided by the manufacturer, there is a problem that the user can not utilize the actual programming language.

1) 대한민국 등록특허번호 제10-0746156호(출원일: 2006년 12월 28일), 발명의 명칭: "로봇 트레이닝 장치 및 상기 로봇 트레이닝 장치를 이용한 로봇 교육 시스템"1) Republic of Korea Patent No. 10-0746156 (application date: December 28, 2006), the title of the invention: "Robot training device and robot training system using the robot training device" 2) 대한민국 등록특허번호 제10-0897879호(출원일: 2007년 07월 18일), 발명의 명칭: "학습용 게임장치"2) Republic of Korea Patent No. 10-0897879 (Application Date: July 18, 2007), the title of the invention: "Learning game device" 3) 대한민국 등록특허번호 제10-0938166호(출원일: 2008년 02월 28일), 발명의 명칭: "점등 블록, 이를 포함하는 블록 유닛 및 이의 점등방법"3) Republic of Korea Patent No. 10-0938166 (Application Date: February 28, 2008), the name of the invention: "Lighting block, a block unit comprising the same and a method of lighting thereof" 4) 대한민국 공개특허번호 제2010-0053797호(공개일: 2010년 05월 24일), 발명의 명칭: "아동용 교육 로봇 장치 및 이의 작동방법"4) Republic of Korea Patent Publication No. 2010-0053797 (published: May 24, 2010), the title of the invention: "Children's educational robot device and its operation method"

전술한 문제점을 해결하기 위한 본 발명이 이루고자 하는 기술적 과제는, 복잡한 로봇 프로그램 언어를 각각의 명령어 또는 변수 단위로 실제 퍼즐블록 또는 레고블록의 조립블록 형태로 작성함으로써, 사용자의 언플러그드 프로그래밍(Unplugged programming)이 가능한 프로그래밍 블록 조립체, 이를 이용한 프로그램에 의해 구동되는 로봇 시스템 및 그 프로그래밍 방법을 제공하기 위한 것이다.The technical problem to be solved by the present invention to solve the above-mentioned problems, by creating a complex robot programming language in the form of an assembly block of the actual puzzle block or lego block for each instruction or variable unit, the user's unplugged programming (Unplugged programming) The present invention provides a possible programming block assembly, a robot system driven by a program using the same, and a programming method thereof.

본 발명이 이루고자 하는 다른 기술적 과제는, 각각의 퍼즐블록 또는 레고블록을 하드웨어적으로 상호 유기적으로 연결하여 프로그래밍함으로써 보다 직관적이고 흥미를 유발할 수 있도록 프로그래밍할 수 있는, 프로그래밍 블록 조립체, 이를 이용한 프로그램에 의해 구동되는 로봇 시스템 및 그 프로그래밍 방법을 제공하기 위한 것이다.
Another technical problem to be achieved by the present invention is by programming block assembly, a program using the same, which can be programmed to be more intuitive and interesting by programming each puzzle block or Lego block organically connected to each other It is to provide a robot system that is driven and a programming method thereof.

상기의 과제를 해결하기 위하여 본 발명은 로봇 시스템에 있어서, 원하는 프로그램 형태가 되도록 프로그램 언어에 각각 대응하는 프로그래밍 단위 블록들을 조립 또는 조합하여 구성하는 프로그래밍 블록 조립체; 및 상기 프로그래밍 블록 조립체의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체의 형태에 맞게 프로그램을 작성 및 저장하며, 상기 작성된 프로그램에 따라 구동되는 로봇 ; 을 포함하여 이루어지되, 상기 프로그래밍 블록 조립체의 프로그래밍 단위 블록들은 하드웨어적으로 상호 통신하도록 연결된 것을 특징으로 한다.In order to solve the above problems, the present invention provides a robot system comprising: a programming block assembly configured to assemble or combine programming unit blocks corresponding to a programming language so as to have a desired program form; And a robot which recognizes the overall form of the programming block assembly, creates and stores a program in accordance with the recognized programming block assembly, and is driven according to the created program. The programming unit blocks of the programming block assembly may be connected to each other in hardware.

상기에 있어서, 상기 프로그래밍 단위 블록들은 함수블록, 센서 변수블록 및 일반 변수블록을 포함하며, 상기 프로그래밍 블록 조립체는 프로그램 언어의 함수 및 변수에 각각 대응하는 프로그래밍 단위 블록들을 조립 또는 조합하여 구성되는 것을 특징으로 한다.In the above, the programming unit blocks include a function block, a sensor variable block, and a general variable block, wherein the programming block assembly is configured by assembling or combining programming unit blocks corresponding to functions and variables of a programming language, respectively. It is done.

상기에 있어서, 상기 프로그래밍 단위 블록들은 각각 ID가 할당되어 구분되며, RS-485 직렬 통신 방식으로 서로 통신하는 것이 바람직하다.In the above description, the programming unit blocks are each assigned with an ID, and are preferably communicated with each other by an RS-485 serial communication method.

상기에 있어서, 상기 로봇은, 상기 프로그래밍 블록 조립체의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체의 형태에 맞게 프로그램을 작성하는 마이크로컨트롤러, 상기 마이크로컨트롤러에 의해 작성된 프로그램을 저장하는 프로그램 저장부, 로봇 기구부로서 상기 프로그램 저장부에 저장된 프로그램에 따라 구동되는 프로그램 구동부를 포함하여 이루어지는 것이 바람직하다.In the above, the robot, a microcontroller for recognizing the overall shape of the programming block assembly, and writing a program in accordance with the type of the recognized programming block assembly, a program storage unit for storing a program created by the microcontroller, a robot Preferably, the mechanism includes a program driver driven according to a program stored in the program storage.

상기에 있어서, 상기 로봇의 마이크로컨트롤러는 RS-485 직렬 통신 방식으로 상기 프로그래밍 블록 조립체와 통신하는 것이 바람직하다.
In the above, the robot's microcontroller preferably communicates with the programming block assembly in an RS-485 serial communication manner.

본 발명의 다른 사상으로, 프로그램 언어에 각각 대응하는 프로그래밍 단위 블록을 조립 또는 조합하여 구성하는 프로그래밍 블록 조립체로서, 상기 프로그래밍 단위 블록이, 단위 블록 몸체, 상기 단위 블록 몸체에 내장되되 다른 프로그래밍 단위 블록과 구분되기 위한 ID가 할당되는 MCU, 상기 단위 블록 몸체에 내장되되 상기 MCU에 연결되며 다른 프로그래밍 단위 블록과 서로 통신하는 통신모듈, 상기 단위 블록 몸체에 마련되되 상기 통신모듈에 연결되며 다른 프로그래밍 단위 블록과 하드웨어적으로 연결되기 위한 연결용 포트를 포함하여 이루어지는 것이다.According to another aspect of the present invention, a programming block assembly configured to assemble or combine a programming unit block corresponding to a programming language, wherein the programming unit block is embedded in a unit block body and the unit block body, MCU which is assigned an ID for identification, a communication module built in the unit block body and connected to the MCU and communicating with other programming unit blocks, provided in the unit block body and connected to the communication module and connected with another programming unit block. It includes a connection port to be connected in hardware.

상기에 있어서, 상기 프로그래밍 단위 블록은, 상기 단위 블록 몸체에 마련되며 상기 MCU에 연결되어 다른 프로그래밍 단위 블록과의 연결 상태를 표시하는 발광다이오드(LED)가 부가되는 것이 바람직하다.In the above description, the programming unit block may include a light emitting diode (LED) provided in the unit block body and connected to the MCU to indicate a connection state with another programming unit block.

상기에 있어서, 상기 프로그래밍 단위 블록들은 프로그램 언어에 각각 대응하는 함수블록, 센서 변수블록, 또는 일반 변수블록으로 구분되며, 상기 연결용 포트는, 다른 프로그래밍 단위 블록의 함수블록과 서로 연결하기 위한 메인함수간 연결용 포트 및 다른 프로그래밍 단위 블록의 센서 변수블록이나 일반 변수블록과 연결하기 위한 서브변수 연결용 포트를 포함하는 것이 바람직하다.In the above description, the programming unit blocks are classified into a function block, a sensor variable block, or a general variable block respectively corresponding to a programming language, and the connection port is a main function for connecting with a function block of another programming unit block. It is preferable to include a port for inter-connection and a sub variable connection port for connecting with a sensor variable block or a general variable block of another programming unit block.

상기에 있어서, 상기 통신모듈은 RS-485 직렬 통신 모듈일 수 있다.
In the above, the communication module may be an RS-485 serial communication module.

본 발명의 또다른 사상으로, 로봇제어 프로그램을 생성 및 저장하는 마이크로컨트롤러를 구비한 로봇 시스템의 프로그래밍 블록 조립체를 이용한 프로그래밍 방법으로서, a) 상기 로봇제어 프로그램을 작성하기 위한 명령어에 대응하도록 프로그래밍 단위 블록들을 조립하거나 조합하여 프로그래밍 블록 조립체를 구성하는 단계; b) 상기 프로그래밍 블록 조립체를 상기 마이크로컨트롤러에 연결하는 단계; c) 상기 마이크로컨트롤러가 상기 프로그래밍 블록 조립체의 조합된 명령어에 따른 언플러그드 프로그래밍(Unplugged Programming)을 수행하고, 프로그래밍된 프로그램을 프로그램 저장부에 저장하는 단계 ; 를 포함하는 프로그래밍 블록 조립체를 이용한 프로그래밍 방법이 제공된다.In still another aspect of the present invention, a programming method using a programming block assembly of a robot system having a microcontroller for generating and storing a robot control program, the method comprising: a) a programming unit block to correspond to an instruction for writing the robot control program; Assembling or combining them to form a programming block assembly; b) connecting the programming block assembly to the microcontroller; c) the microcontroller performing Unplugged Programming according to the combined instructions of the programming block assembly and storing the programmed program in a program storage; A programming method using a programming block assembly is provided.

상기에 있어서, 상기 b) 단계와 상기 c) 단계 사이에, b-1) 상기 마이크로컨트롤러가 상기 프로그래밍 블록 조립체의 연결 상태를 확인하는 단계; b-2) 상기 프로그래밍 블록 조립체에 조합 오류가 있는 경우, 오류 메시지를 표시하는 단계; 가 부가되며, 상기 c) 단계는 상기 프로그래밍 블록 조립체에 조합 오류가 없는 경우 수행되는 것이 바람직하다.The method of claim 1, wherein between step b) and step c), b-1) the microcontroller checking the connection state of the programming block assembly; b-2) if there is a combination error in the programming block assembly, displaying an error message; Is added, and step c) is preferably performed if there is no combination error in the programming block assembly.

상기에 있어서, 상기 c) 단계에서 상기 마이크로컨트롤러는 상기 프로그래밍 블록 조립체의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체의 형태에 맞게 프로그램을 작성 및 저장하는 것이 바람직하다.In the above, in the step c), the microcontroller recognizes the overall shape of the programming block assembly, and writes and stores a program according to the recognized shape of the programming block assembly.

본 발명에 따르면, 복잡한 로봇 프로그램 언어를 각각의 명령어 또는 변수 단위로 실제 퍼즐블록 또는 레고블록의 조립블록 형태로 작성할 수 있다. 기존의 프로그래밍은 컴퓨터로 실시하는 반면에, 본 발명에 따르면, 컴퓨터 없이 사용자 자신의 언플러그드 프로그래밍(Unplugged programming)이 가능하다.According to the present invention, a complex robot programming language can be written in the form of an assembly block of an actual puzzle block or lego block in units of instructions or variables. Conventional programming is performed by a computer, while the present invention allows for user's own unplugged programming without a computer.

본 발명에 따르면, 각각의 퍼즐블록 또는 레고블록을 하드웨어적으로 상호 유기적으로 연결하여 프로그래밍함으로써 보다 직관적이고 흥미를 유발할 수 있도록 프로그래밍할 수 있으므로, 특히, 어린이 로봇 프로그래밍 교육용으로 적합하다.
According to the present invention, each puzzle block or lego block can be programmed to be more intuitive and intriguing by programming by connecting with each other organically in hardware, and is particularly suitable for children robot programming education.

도 1은 종래의 기술에 따른 로봇 교육 시스템의 구성도이다.
도 2a는 종래의 기술에 따른 아동용 교육 로봇 장치를 나타내는 사시도이고, 도 2b는 도 2a에 도시된 로봇 제어프로그램 입력장치를 나타내는 구성도이다.
도 3은 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템의 구성도이다.
도 4a 및 도 4b는 각각 본 발명의 실시예에 따른 프로그래밍 블록 조립체에 의해 프로그램이 작성되는 개념을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그래밍 방법의 동작흐름도이다.
도 6은 본 발명의 실시예에 따른 프로그래밍 단위 블록의 구성도이다.
도 7은 본 발명의 실시예에 따른 프로그래밍 단위 블록으로 이루어진 프로그래밍 단위 블록 간의 조합을 설명하기 위한 입체도이다.
도 8은 본 발명의 실시예에 따른 프로그래밍 블록 조립체에 적용되는 통신 인터페이스 방식을 설명하기 위한 도면이다.
도 9는 본 발명의 실시예에 따른 프로그래밍 블록 조립체에 적용되는 RS-485 통신 방식을 설명하기 위한 도면이다.
도 10은 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램 입력을 예시하는 도면이다.
도 11은 도 10에 도시된 프로그램 입력의 조합 후 형태 및 프로그램 순서를 예시하는 도면이다.
도 12는 도 10에 도시된 프로그램에 의해 구동되는 로봇 시스템을 예시하는 도면이다.
1 is a block diagram of a robot training system according to the prior art.
Figure 2a is a perspective view showing a children's educational robot device according to the prior art, Figure 2b is a block diagram showing the robot control program input device shown in Figure 2a.
3 is a block diagram of a robot system driven by a program using a programming block assembly according to an exemplary embodiment of the present invention.
4A and 4B are diagrams for explaining a concept of writing a program by a programming block assembly according to an exemplary embodiment of the present invention.
5 is a flowchart of a programming method using a programming block assembly according to an exemplary embodiment of the present invention.
6 is a block diagram of a programming unit block according to an embodiment of the present invention.
7 is a three-dimensional view for explaining a combination between programming unit blocks consisting of a programming unit block according to an embodiment of the present invention.
8 is a view for explaining a communication interface method applied to a programming block assembly according to an embodiment of the present invention.
9 is a view for explaining the RS-485 communication method applied to the programming block assembly according to an embodiment of the present invention.
10 is a diagram illustrating program input using a programming block assembly in accordance with an embodiment of the present invention.
FIG. 11 is a diagram illustrating a form and a program order after the combination of the program inputs shown in FIG. 10.
12 is a diagram illustrating a robot system driven by the program shown in FIG. 10.

아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.

명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part is said to "include" a certain component, it means that it can further include other components, without excluding other components unless specifically stated otherwise.

먼저, 본 발명의 실시예에 따른 프로그래밍 블록 조립체는 프로그램 언어에 각각 대응하는 프로그래밍 단위 블록을 조립하거나 조합함으로써 구성되며, 이때, 프로그램 언어의 명령어에 대응하는 프로그래밍 명령어 블록 조합은 적어도 하나 이상의 프로그래밍 단위 블록으로 이루어지며, 각각의 프로그래밍 단위 블록은 서로 통신이 가능하도록 하드웨어적으로 연결된다. 또한, 상기 프로그래밍 단위 블록은 함수블록, 센서 변수블록 또는 일반 변수블록일 수 있다.First, a programming block assembly according to an embodiment of the present invention is configured by assembling or combining programming unit blocks respectively corresponding to a programming language, wherein a programming instruction block combination corresponding to an instruction of a programming language is at least one programming unit block. Each programming unit block is hardware-connected to communicate with each other. In addition, the programming unit block may be a function block, a sensor variable block, or a general variable block.

본 발명의 실시예에 따른 프로그래밍 블록 조립체는 조립블록으로서, 예를 들면, 블록완구일 수 있다. 여기서, 블록완구는 플라스틱제의 작은 블록들을 조립하여 건물, 승용차, 로봇 등을 만들어 즐기는 완구를 말한다. 이러한 블록은 정교하게 제조되며, 각각 따로 성형된 요부(凹部)와 철부(凸部)가 대응하여 조립된다.The programming block assembly according to the embodiment of the present invention may be an assembly block, for example, a block toy. Here, the block toy refers to a toy that enjoys making a building, a car, a robot, etc. by assembling small blocks made of plastic. These blocks are manufactured exquisitely, and separately formed recesses and convex portions are correspondingly assembled.

도 3은 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템의 구성도이고, 도 4a 및 도 4b는 각각 본 발명의 실시예에 따른 프로그래밍 블록 조립체에 의해 프로그램이 작성되는 개념을 설명하기 위한 도면이다.3 is a configuration diagram of a robot system driven by a program using a programming block assembly according to an embodiment of the present invention, and FIGS. 4A and 4B are diagrams illustrating a program created by a programming block assembly according to an embodiment of the present invention. It is a figure for demonstrating a concept.

도 3을 참조하면, 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템은, 로봇(100) 및 프로그래밍 블록 조립체(200)를 포함하며, 상기 로봇(100)은 마이크로컨트롤러(110), 전원공급부(120), 프로그램 구동부(130), 센서(140) 및 프로그램 저장부(150)를 포함할 수 있지만, 이에 국한되는 것은 아니다.Referring to FIG. 3, a robot system driven by a program using a programming block assembly according to an embodiment of the present invention includes a robot 100 and a programming block assembly 200, and the robot 100 is a microcontroller. 110, the power supply unit 120, the program driver 130, the sensor 140, and the program storage unit 150 may be included, but are not limited thereto.

프로그래밍 블록 조립체(200)는 다수의 프로그래밍 단위 블록이 조립 또는 조합되며, 각각의 프로그래밍 단위 블록은 로봇 시스템을 제어 및 구동하기 위한 프로그램 언어의 명령어에 각각 대응한다. 즉, 상기 프로그래밍 단위 블록들을 조립하여 프로그래밍 블록 조립체(200)를 형성함으로써 원하는 프로그램 형태와 동일한 형태가 되도록 한다. 이때, 프로그래밍 블록 조립체(200)는 프로그램 자체가 아니며, 다만, 프로그래밍 블록 조립체(200)를 통하여 상기 로봇(100) 내의 마이크로컨트롤러(110)가 프로그램을 작성할 수 있다.The programming block assembly 200 includes a plurality of programming unit blocks assembled or combined, each programming unit block corresponding to instructions of a programming language for controlling and driving a robotic system, respectively. That is, the programming unit blocks are assembled to form the programming block assembly 200 so as to have the same shape as the desired program form. In this case, the programming block assembly 200 is not a program itself, but the microcontroller 110 in the robot 100 may write a program through the programming block assembly 200.

또한, 각각의 프로그래밍 단위 블록은 함수블록(201), 센서 변수블록(202) 또는 일반 변수블록(203)일 수 있고, 적어도 하나 이상의 프로그래밍 단위 블록에 의하여 프로그래밍 명령어 블록이 이루어진다. 즉, 프로그래밍 명령어 블록은 적어도 하나 이상의 프로그래밍 단위 블록을 결합하여 형성되며, 그 형태가 상이할 수 있다.In addition, each programming unit block may be a function block 201, a sensor variable block 202, or a general variable block 203, and a programming instruction block is formed by at least one programming unit block. That is, the programming instruction block is formed by combining at least one or more programming unit blocks, and may have a different shape.

예를 들면, 상기 함수블록(201)은 프로그램 언어의 start()에 대응하는 시작블록, run()에 대응하는 프로그램 실행블록, 또는 If(), While(), For() 등의 조건 함수블록일 수 있고, 상기 센서 변수블록(202)은 적외선 센서변수, 초음파센서 변수, 인코더 변수일 수 있으며, 상기 일반 변수블록(203)은 숫자변수, 문자 변수 또는 On/Off 변수일 수 있지만, 이에 국한되는 것은 아니다.For example, the function block 201 may be a start block corresponding to start () of a programming language, a program execution block corresponding to run (), or a condition function block such as If (), While (), or For (). The sensor variable block 202 may be an infrared sensor variable, an ultrasonic sensor variable, or an encoder variable, and the general variable block 203 may be a numeric variable, a text variable, or an on / off variable, but is not limited thereto. It doesn't happen.

로봇(100)은 상기 프로그래밍 블록 조립체(200)의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체(200)의 형태에 맞게 프로그램을 작성 및 저장하며, 상기 작성된 프로그램에 따라 구동된다.The robot 100 recognizes the overall shape of the programming block assembly 200, creates and stores a program according to the recognized shape of the programming block assembly 200, and is driven according to the created program.

구체적으로, 상기 로봇(100)의 마이크로컨트롤러(110)는 상기 프로그래밍 블록 조립체(200)의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체(200)의 형태에 맞게 프로그램을 작성하여 상기 프로그램 저장부(150)에 저장한다.In detail, the microcontroller 110 of the robot 100 recognizes the overall shape of the programming block assembly 200, creates a program in accordance with the recognized shape of the programming block assembly 200, and generates a program. 150).

예를 들면, 마이크로컨트롤러(Micro Controller Unit: MCU)는 연산, 제어 및 레지스터 이외에도 ROM(Read Only Memory), RAM(Random Access Memory)과 같은 메모리와 입출력(Input/Output) 장치로 구성된 집적회로 소자로서, 특수한 목적의 기기를 제어하는 역할을 수행한다. 이때, 상기 메모리는 상기 로봇(100)의 프로그램 저장부(150)로서, 상기 마이크로컨트롤러(110)에 의해 작성된 프로그램을 저장하며, 상기 마이크로컨트롤러(110) 내에 구현되거나 외부에 별도로 구성될 수도 있다. For example, a microcontroller unit (MCU) is an integrated circuit device composed of an input / output device and a memory such as a read only memory (ROM) and a random access memory (RAM), in addition to operation, control, and registers. It controls the special purpose devices. In this case, the memory is a program storage unit 150 of the robot 100, stores a program created by the microcontroller 110, may be implemented in the microcontroller 110 or configured separately from the outside.

상기 로봇(100)의 전원공급부(120)는 상기 로봇(100) 내의 전자소자에 전원을 공급하기 위한 것으로, 예를 들면, 배터리일 수 있다.The power supply unit 120 of the robot 100 is for supplying power to the electronic device in the robot 100 and may be, for example, a battery.

상기 로봇(100)의 프로그램 구동부(130)는 로봇 기구부에 해당하며, 또는 DC 모터, 스텝 모터, RC 모터 등의 모터일 수도 있고, 또한, 양방향 구동 모듈, 슬라이드 모듈 등을 포함할 수 있다. 로봇(100)의 프로그램 구동부(130)는 마이크로컨트롤러(110)에 의하여 읽혀진 프로그램 저장부(150)에 저장된 프로그램에 따라 구동하게 된다.The program driver 130 of the robot 100 may correspond to a robot mechanism, or may be a motor such as a DC motor, a step motor, an RC motor, or the like, and may include a bidirectional drive module, a slide module, and the like. The program driver 130 of the robot 100 is driven according to a program stored in the program storage unit 150 read by the microcontroller 110.

상기 로봇(100)의 센서(140)는 상기 프로그램 구동부(150)에 의해 동작하는 상기 로봇의 동작과 상태를 감지하며, 예를 들면, 초음파 센서, 조도 센서, 광원 센서, 적외선 센서, 방위 센서, 초전 센서, 음성 탐지 센서, 경도 센서, 음성 인식 센서 등을 선택적으로 포함하며, 이들을 각각 분리하여 개별 센서로 제작할 수도 있으며, 한 개 또는 다수개의 센서들을 물리적으로 하나의 센서 모듈로 제작할 수 도 있다. 여기에 기재되지 아니한 센서들이라 하더라도 로봇에 사용되는 센서라면 무엇이든지 포함될 수 있다.The sensor 140 of the robot 100 detects an operation and a state of the robot operated by the program driver 150, and includes, for example, an ultrasonic sensor, an illuminance sensor, a light source sensor, an infrared sensor, an orientation sensor, A pyroelectric sensor, a voice detection sensor, a hardness sensor, a voice recognition sensor, and the like may be selectively included, and each of these may be separately manufactured as an individual sensor, or one or a plurality of sensors may be physically produced as a single sensor module. Even if the sensors are not described here, any sensor used in the robot may be included.

본 발명의 실시예에 따른 프로그래밍 명령어 블록은, 적어도 하나 이상의 프로그래밍 단위 블록으로 이루어지며, 각각의 프로그래밍 단위 블록은 ID가 저장된 MCU, 통신모듈, 연결용 포트 및 LED로 구성될 수 있다.The programming command block according to the embodiment of the present invention may include at least one programming unit block, and each programming unit block may include an MCU in which an ID is stored, a communication module, a connection port, and an LED.

이때, 상기 프로그래밍 단위 블록은 센서 변수블록, 일반 변수블록 또는 함수블록인지에 따라 다른 프로그래밍 단위 블록과 통신하기 위한 연결용 포트의 숫자가 달라질 수 있다. 예를 들면, 도 4a 및 도 4b를 참조하면, 시작블록 밑의 IF 블록에서 확인되는 바와 같이, IF 블록은 선행블록(시작블록)과 연결되기 위한 연결용 포트, 후행 블록(실행문)과 연결되기 위한 연결용 포트 및 조건문(적외선 센서 블록)과 연결되기 위한 연결용 포트를 포함하여 3개의 연결용 포트를 가질 수 있다. 이때, 적외선 센서 블록은 2개의 연결용 포트를 가질 수 있다.In this case, the number of connection ports for communicating with other programming unit blocks may vary depending on whether the programming unit block is a sensor variable block, a general variable block, or a function block. For example, referring to FIGS. 4A and 4B, as identified in the IF block below the start block, the IF block is connected to a preceding block (starting block) and a connection block for connecting to a preceding block (starting block). It may have three ports for connection, including a port for connection and a port for connection with a conditional statement (infrared sensor block). In this case, the infrared sensor block may have two connection ports.

따라서 상기 마이크로컨트롤러(110)가 프로그램 블록 조립체(200)의 전체적인 형태를 인식하고, 상기 마이크로컨트롤러(110)는 인식된 프로그램 블록 조립체(200)의 형태에 맞게 프로그래밍을 작성 및 저장한다. 이때, 프로그래밍 단위 블록들의 ID와 이들 간의 위치 관계를 통하여 프로그래밍 블록 조립체의 전체적인 형태가 인식되며, 이에 맞게 프로그래밍이 작성 및 저장된다. 이때, 상기 마이크로컨트롤러(110)는 저장된 프로그래밍에 따라 로봇(100)의 프로그램 구동부(130)를 구동시킬 수 있다.Accordingly, the microcontroller 110 recognizes the overall shape of the program block assembly 200, and the microcontroller 110 writes and stores the programming according to the recognized shape of the program block assembly 200. At this time, the overall shape of the programming block assembly is recognized through the ID of the programming unit blocks and the positional relationship therebetween, and the programming is created and stored accordingly. In this case, the microcontroller 110 may drive the program driver 130 of the robot 100 according to the stored programming.

본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템에 따르면, 복잡한 로봇 프로그램 언어를 각각의 명령어 또는 변수 단위로 실제 퍼즐블록 또는 레고블록의 조립블록 형태로 작성할 수 있으므로, 컴퓨터 없이 언플러그드 프로그래밍이 가능하다. 또한, 각각의 퍼즐블록 또는 레고블록의 블록완구는 하드웨어적으로 상호 유기적으로 연결하여 프로그래밍함으로써 보다 직관적이고 흥미를 유발할 수 있도록 프로그래밍할 수 있다.According to a robot system driven by a program using a programming block assembly according to an embodiment of the present invention, a complex robot programming language can be written in the form of an assembly block of an actual puzzle block or lego block in units of instructions or variables. Unplugged programming is possible without In addition, the block toys of each puzzle block or lego block can be programmed to be more intuitive and intriguing by programming the hardware connected to each other organically.

한편, 도 5는 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그래밍 방법의 동작흐름도이다.5 is a flowchart illustrating a programming method using a programming block assembly according to an exemplary embodiment of the present invention.

도 5를 참조하면, 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그래밍 방법은, 먼저, 로봇제어 프로그램을 생성 및 저장하는 마이크로컨트롤러를 구비한 로봇 시스템의 프로그래밍 블록 조립체를 이용한 프로그래밍 방법으로서, 상기 로봇제어 프로그램을 작성하기 위한 명령어에 대응하도록 프로그래밍 단위 블록들을 조립하거나 조합하여 프로그래밍 블록 조립체를 구성한다(S110). 여기서, 상기 프로그래밍 단위 블록들은 함수블록, 센서 변수블록 및 일반 변수블록을 포함하며, 상기 프로그래밍 단위 블록들은 각각 ID가 할당되고 서로 통신이 가능하도록 조합 또는 조립된다.Referring to FIG. 5, a programming method using a programming block assembly according to an exemplary embodiment of the present invention is a programming method using a programming block assembly of a robot system having a microcontroller for generating and storing a robot control program. The programming block assembly is configured by assembling or combining the programming unit blocks to correspond to the instructions for creating the robot control program (S110). Here, the programming unit blocks include a function block, a sensor variable block, and a general variable block, and each of the programming unit blocks is combined or assembled to be assigned an ID and to communicate with each other.

다음으로, 로봇 내에 구비된 마이크로컨트롤러에 상기 프로그래밍 블록 조립체를 연결한다(S120). 이때, 상기 마이크로컨트롤러는 RS-485 통신 방식으로 상기 프로그래밍 블록 조립체와 직렬 통신하는 것이 바람직하다.Next, the programming block assembly is connected to the microcontroller provided in the robot (S120). At this time, the microcontroller is preferably in serial communication with the programming block assembly in the RS-485 communication method.

다음으로, 로봇 내에 구비된 시작 버튼이 작동되는지 여부를 확인한다(S130).Next, it is checked whether the start button provided in the robot is operated (S130).

다음으로, 상기 마이크로컨트롤러는 상기 프로그래밍 블록 조립체의 연결 상태를 확인한다(S140).Next, the microcontroller checks the connection state of the programming block assembly (S140).

다음으로, 상기 마이크로컨트롤러는 상기 프로그래밍 블록 조립체에 조합 오류가 있는지 여부를 판단하고(S150), 조합 오류가 있는 경우, 오류 메시지를 표시한다(S160). 이때, 오류 메시지는 부저에 의해 음향으로 표시되거나 또는 LED에 의해 점등되어 표시될 수 있다.Next, the microcontroller determines whether there is a combination error in the programming block assembly (S150), and if there is a combination error, displays the error message (S160). In this case, the error message may be displayed acoustically by the buzzer or may be lit by the LED.

다음으로, 상기 프로그래밍 블록 조립체의 조합 오류가 없는 경우, 상기 마이크로컨트롤러가 상기 프로그래밍 블록 조립체의 조합된 명령어에 따른 언플러그드 프로그래밍(Unplugged Programming)을 수행하고, 프로그래밍된 프로그램을 저장한다(S170). 이때, 상기 마이크로컨트롤러는 상기 프로그래밍 블록 조립체의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체의 형태에 맞게 프로그램을 작성 및 저장할 수 있다. 또한, 상기 마이크로컨트롤러에 의해 프로그램이 생성된 이후 상기 프로그래밍 블록 조립체는 상기 마이크로컨트롤러로부터 분리되어도 무관하다.Next, when there is no combination error of the programming block assembly, the microcontroller performs unplugged programming according to the combined instruction of the programming block assembly and stores the programmed program (S170). In this case, the microcontroller may recognize the overall shape of the programming block assembly, and may create and store a program in accordance with the recognized programming block assembly. In addition, the programming block assembly may be separated from the microcontroller after the program is generated by the microcontroller.

후속적으로, 상기 저장된 프로그램에 따라 로봇이 구동될 수 있다(S180). 즉, 프로그램 구동부인 로봇 기구부가 상기 프로그램 저장부에 저장된 프로그램에 따라 구동된다.Subsequently, the robot may be driven according to the stored program (S180). That is, the robot mechanism part which is a program drive part is driven according to the program stored in the said program storage part.

한편, 도 6은 본 발명의 실시예에 따른 프로그래밍 단위 블록의 구성도이고, 도 7은 본 발명의 실시예에 따른 프로그래밍 단위 블록으로 이루어진 프로그래밍 단위 블록 간의 조합을 설명하기 위한 입체도이다.6 is a block diagram of a programming unit block according to an exemplary embodiment of the present invention, and FIG. 7 is a three-dimensional view illustrating a combination between programming unit blocks including a programming unit block according to an exemplary embodiment of the present invention.

도 6 및 도 7을 참조하면, 본 발명의 실시예에 따른 프로그래밍 단위 블록(210)은 외형적으로는 단위 블록 몸체(211), LED(214)와, 연결용 포트로서의 메인함수간 연결용 포트(212a, 212b) 및 서브변수 연결용 포트(213a, 213b)를 포함한다. 즉 단위 블록 몸체(211)의 표면에 LED(214)와 메인함수간 연결용 포트(212a, 212b) 및 서브변수 연결용 포트(213a, 213b)가 노출된다.6 and 7, the programming unit block 210 according to the embodiment of the present invention is a port for connection between a unit block body 211, an LED 214, and a main function as a connection port. 212a and 212b and subvariable connection ports 213a and 213b. That is, the ports 212a and 212b for connection between the LED 214 and the main function and the ports 213a and 213b for the sub variable connection are exposed on the surface of the unit block body 211.

아울러 단위 블록 몸체(211)의 내부에는 MCU(215) 및 RS-485 통신모듈(216)이 내장되어 있다.In addition, the MCU 215 and the RS-485 communication module 216 are built in the unit block body 211.

본 발명의 실시예에 따른 프로그래밍 단위 블록(210)은 단위 블록 몸체(211)의 일측에 메인함수간 연결용 포트(212a, 212b) 또는 서브변수 연결용 포트(213a, 213b)가 선택적으로 형성됨으로써, 다른 프로그래밍 단위 블록(210)과 조합 또는 조립될 수 있다.The programming unit block 210 according to an embodiment of the present invention is formed by selectively forming ports 212a and 212b or subvariable connection ports 213a and 213b between main functions on one side of the unit block body 211. May be combined or assembled with another programming unit block 210.

MCU(215)는 다른 프로그래밍 단위 블록과 구분하기 위한 각각의 ID가 저장되며, 각각의 프로그래밍 단위 블록(210) 내에 구비될 수 있고, 이때, 각 프로그래밍 단위 블록(210)이 서로 연결이 잘되었으면 확인용으로 이에 연결된 LED(214)를 점등한다. 즉, LED(214)는 다른 프로그래밍 단위 블록과의 연결 상태를 표시할 수 있다.The MCU 215 stores each ID for distinguishing it from other programming unit blocks, and may be provided in each programming unit block 210. At this time, if each programming unit block 210 is well connected to each other, it is checked. The LED 214 connected to it. That is, the LED 214 may indicate a connection state with another programming unit block.

RS-485 통신모듈(216)은 MCU(215)에 연결되어 각각의 프로그래밍 단위 블록들(210) 사이의 통신을 위한 것으로, 이에 연결된 메인함수간 연결용 포트(212) 또는 서브변수 연결용 포트(213)를 통해서 각각의 프로그래밍 단위 블록(210)과 통신을 수행하게 된다.RS-485 communication module 216 is connected to the MCU 215 for communication between the respective programming unit blocks 210, the port for connection between the main function 212 or the sub-variable connection ( Communication with each programming unit block 210 is performed through 213.

상기 메인함수간 연결용 포트(212)는 다른 프로그래밍 명령어 블록의 함수블록과 서로 연결되며, 또한, 상기 서브변수 연결용 포트(213)는 다른 프로그래밍 단위 블록의 센서 변수블록이나 일반 변수블록과 연결한다.The port 212 for connection between the main functions is connected to a function block of another programming instruction block, and the sub variable connection port 213 is connected to a sensor variable block or a general variable block of another programming unit block. .

이때, 프로그래밍 단위 블록(210)은 센서 변수블록, 일반 변수블록 또는 함수블록인지에 따라 다른 프로그래밍 단위 블록과 통신하기 위한 연결용 포트의 숫자가 달라질 수 있다.In this case, the number of connection ports for communicating with other programming unit blocks may vary depending on whether the programming unit block 210 is a sensor variable block, a general variable block, or a function block.

도 7을 참조하면, 본 발명의 실시예에 따른 프로그래밍 단위 블록의 조합은, B1과 B2로 이루어진 프로그래밍 단위 블록(210), B3, B4, B5로 이루어진 프로그래밍 단위 블록(210), B6, B7로 이루어진 프로그래밍 단위 블록(210), B8, B9, B10으로 이루어진 프로그래밍 단위 블록(210)으로 이루어진다.Referring to FIG. 7, a combination of a programming unit block according to an embodiment of the present invention may be a programming unit block 210 consisting of B1 and B2, a programming unit block 210 consisting of B3, B4, and B5, and B6 and B7. The programming unit block 210 is composed of a programming unit block 210 consisting of, B8, B9, B10.

또한 B1과 B2로 이루어진 프로그래밍 단위 블록(210)은, START()와 같이 그 자체로서 하나의 프로그래밍 명령어 블록이 될 수 있다.In addition, the programming unit block 210 consisting of B1 and B2 may be a programming instruction block as such as START ().

B3, B4, B5로 이루어진 프로그래밍 단위 블록(210)은, B6, B7로 이루어진 프로그래밍 단위 블록(210), B8, B9, B10으로 이루어진 프로그래밍 단위 블록(210)과 함께 하나의 프로그래밍 명령어 블록을 구성하게 된다.The programming unit block 210 consisting of B3, B4, and B5 constitutes one programming instruction block together with the programming unit block 210 consisting of B6 and B7, and the programming unit block 210 consisting of B8, B9, and B10. do.

B6과 B7은 각각이 하나의 프로그래밍 단위 블록(210)이거나, 하나의 프로그래밍 단위 블록(210)이 B6과 B7이 합쳐진 형태를 구성할 수도 있다.Each of B6 and B7 may be one programming unit block 210 or one programming unit block 210 may be configured to combine B6 and B7.

B8, B9, B10은 그 각각이 하나의 프로그래밍 단위 블록(210)이거나, 하나의 프로그래밍 단위 블록(210)이 B8, B9, B10이 합쳐진 형태를 구성할 수도 있다.Each of B8, B9, and B10 may be one programming unit block 210, or one programming unit block 210 may be configured to combine B8, B9, and B10.

각각의 프로그래밍 단위 블록(210)은 전술한 메인함수간 연결용 포트(212a, 212b) 또는 서브변수 연결용 포트(213a, 213b)를 통해 서로 조립 또는 조합된다. 다시 말하면, 각 프로그램과 변수를 블록화하여 규칙에 따라 서로 연결하면서 프로그래밍을 하게 되며, 이때, 각 프로그래밍 단위 블록(210) 간의 통신은 RS-485 통신 방식으로 각각 ID를 부여하여 구분한다. 이후, 전술한 로봇 내의 마이크로컨트롤러(110)에 의해 다운로드되어 프로그램되고, 프로그램된 순서에 따라 유선 또는 무선으로 로봇(100)이 동작하게 된다.Each programming unit block 210 is assembled or combined with each other through the above-described main function connection ports 212a and 212b or subvariable connection ports 213a and 213b. In other words, each program and variable are blocked and connected to each other according to a rule to be programmed. In this case, communication between each programming unit block 210 is distinguished by giving an ID in the RS-485 communication method. Thereafter, the robot 100 is downloaded and programmed by the microcontroller 110 in the above-described robot, and the robot 100 operates in a wired or wireless manner according to the programmed order.

한편, 전술한 마이크로컨트롤러는 주변장치를 통해서 외부와 정보를 교환할 수 있으며, 일반적으로 정보를 외부와 교환하는 방법으로는 병렬통신과 직렬통신의 2가지로 나눌 수 있다. 일반적으로 컴퓨터 내의 장치와 정보 교환을 할 때는 통상적으로 고속의 통신속도를 필요로 하며, 한 번에 많은 정보를 처리할 수 있는 병렬통신 방식을 주로 사용한다. 이것은 대량의 정보를 빠른 시간에 한 번에 처리함으로써 컴퓨터의 성능을 향상시킬 수 있기 때문인데, 이러한 방법의 대표적인 것이 마이크로컨트롤러의 정보 처리량을 증가시키기 위해 데이터 비트수로 나타난다. 또한, 어플리케이션 자체가 고속의 통신속도를 필요하지 않은 경우도 많은데, 이러한 경우 컴퓨터가 외부와의 통신을 할 때는 직렬통신 방식을 많이 사용한다. 직렬통신 방식이란 데이터 비트를 1개의 비트단위로 외부로 송수신하는 방식으로서 구현하기가 쉽고, 멀리 전송할 수 있으며, 기존의 통신선로를 쉽게 활용할 수 있으므로 비용 절감이 크다는 장점이 있다. 직렬 통신의 대표적인 것으로 모뎀, RS-232 등이 있다. 하지만 직렬통신을 크게 구분하면 비동기식 방식과 동기식 방식의 2가지로 나누어진다.On the other hand, the above-described microcontroller can exchange information with the outside through a peripheral device, and generally can be divided into two methods, parallel communication and serial communication. Generally, when exchanging information with a device in a computer, a high speed communication speed is generally required, and a parallel communication method that can process a lot of information at a time is mainly used. This is because a computer's performance can be improved by processing a large amount of information at once in a short time. A typical example of this method is the number of data bits to increase the information throughput of a microcontroller. In addition, in many cases, the application itself does not require a high communication speed. In this case, the serial communication method is frequently used when the computer communicates with the outside. The serial communication method is a method of transmitting and receiving data bits to a single bit unit externally, which is easy to implement, can be transmitted far, and can easily utilize an existing communication line. Typical examples of serial communication include modem and RS-232. However, if the serial communication is largely divided into two types, asynchronous and synchronous.

구체적으로, 비동기식 통신 컨트롤러를 일반적으로 UART(Universal Asynchronous Receiver/Transmitter)라 부르는데, 이러한 UART에서 나오는 신호는 보통 TTL-신호레벨을 갖기 때문에 노이즈에 약하고 통신거리에 제약이 있다. 이러한 TTL 신호를 입력받아 노이즈에 강하고 멀리 전송될 수 있게 해주는 인터페이스 IC를 Line Driver/Receiver라 부르며, 이중 대표적인 것으로 RS-232C, RS-422 및 RS-485 등이 있다. 이러한 방식의 특성은 도 8에 도시된 바와 같고, 본 발명의 실시예에 사용되는 인터페이스 IC가 RS-485인 것이 바람직하지만, 이에 국한되는 것은 아니다.Specifically, an asynchronous communication controller is commonly called a UART (Universal Asynchronous Receiver / Transmitter). Since the signal coming out of such a UART usually has a TTL-signal level, it is weak to noise and has a limited communication distance. The interface IC that receives the TTL signal and is strong against noise and can be transmitted far away is called Line Driver / Receiver. Among them, RS-232C, RS-422, and RS-485 are representative. The characteristics of this scheme are as shown in Fig. 8, but the interface IC used in the embodiment of the present invention is preferably, but not limited to, RS-485.

도 8은 본 발명의 실시예에 따른 프로그래밍 블록 조립체에 적용되는 통신 인터페이스 방식을 설명하기 위한 도면이고, 도 9는 본 발명의 실시예에 따른 프로그래밍 블록 조립체에 적용되는 RS-485 통신 방식을 설명하기 위한 도면이다.8 is a diagram illustrating a communication interface method applied to a programming block assembly according to an embodiment of the present invention, and FIG. 9 is a diagram illustrating an RS-485 communication method applied to a programming block assembly according to an embodiment of the present invention. It is for the drawing.

도 8을 참조하면, RS-485는 RS-232, RS-422의 확장 버전으로, 홈 네트워크를 지원하는 일종의 직렬 통신의 프로토콜 표준 규격을 말한다. 예를 들면, 전송 속도가 늦고 전송 거리가 짧은 RS-232 통신 방식을 보완하기 위해서 RS-422 통신 방식을 채택하였는데, 이러한 RS-422가 1개의 마스터 장치와 슬레이브 장치 간에 데이터를 주고받는 방식으로 통신하는 반면에, RS-485는 모든 장치들이 같은 라인에서 데이터 전송 및 수신을 할 수 있다. 이러한 RS-485는 반이중 방식과 전이중 통신 방식을 모두 지원하며, 또한 최대 드라이버 및 리시버 수가 각각 32개에 이르고, 최대 속도 10MBps에 최장 거리 1.2km까지 네트워크 구축이 가능하다. RS-485는 멀티포인트 통신회선을 위한 TIA/EIA 표준이다. 이것은 DB-9이나 DB-37과 같은 커넥터들을 지원한다. RS-485는 RS-422와 비슷하지만, 낮은 임피던스 구동기와 수신기를 사용함으로써, RS-422보다 회선당 노드 수를 더 많이 허용한다.Referring to FIG. 8, RS-485 is an extended version of RS-232 and RS-422, and refers to a protocol standard specification of serial communication supporting home networks. For example, RS-422 communication method is adopted to complement the RS-232 communication method with a low transmission speed and a short transmission distance. The RS-422 communicates by exchanging data between one master device and a slave device. On the other hand, RS-485 allows all devices to send and receive data on the same line. The RS-485 supports both half-duplex and full-duplex communication. The maximum number of drivers and receivers is 32, and the network can be networked up to 1.2km at a maximum speed of 10MBps. RS-485 is a TIA / EIA standard for multipoint communication lines. It supports connectors such as DB-9 or DB-37. RS-485 is similar to RS-422, but by using a low impedance driver and receiver, it allows more nodes per line than RS-422.

이러한 RS-485는 EIA에 의해 전기적인 사양이 규정되어 있는데, EIA에 의해 물리적인 커넥터 및 핀에 대한 사양은 규정되어 있지 않지만, UTP(Unshielded Twisted Pair) 케이블 또는 STP(Shielded Twisted Pair) 케이블을 사용할 수 있고, 예를 들면, RS-485에서는 Data+, Data- 2가닥의 통신 라인을 사용하여 통신할 수 있다.The RS-485 has electrical specifications specified by the EIA. The physical connectors and pins are not specified by the EIA. However, unshielded twisted pair (UTP) cables or shielded twisted pair (STP) cables can be used. For example, in RS-485, communication lines of Data + and Data-2 may be used.

도 9를 참조하면, RS-485 통신으로 연결되는 일반적인 통신시스템의 경우, 하나의 마스터 통신개체에 RS-485 통신라인(A, B)을 통해 복수의 슬레이브 통신개체가 연결되는 1:1 통신방식으로 마스터-슬레이브 방식의 통신을 지원하고, 각 통신개체의 통신속도는 제품의 버전이나 특성에 따라 600, 2400 또는 9600Bps를 사용할 수 있다. 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템에서, 마스터 통신개체는 로봇 내에 구비된 마이크로컨트롤러(MCU)이고, 슬레이브 통신개체들은 프로그래밍 단위 블록들 내에 각각 구비된 마이크로컨트롤러(MCU)일 수 있다.Referring to FIG. 9, in the case of a general communication system connected by RS-485 communication, a 1: 1 communication method in which a plurality of slave communication objects are connected to one master communication object through an RS-485 communication line (A, B) It supports master-slave communication and the communication speed of each communication object can be 600, 2400 or 9600Bps depending on the product version or characteristics. In a robot system driven by a program using a programming block assembly according to an embodiment of the present invention, the master communication object is a microcontroller (MCU) provided in the robot, and the slave communication objects are microcontrollers respectively provided in the programming unit blocks. (MCU).

한편, 도 10은 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램 입력을 예시하는 도면이고, 도 11은 도 10에 도시된 프로그램 입력의 조합 후 형태 및 프로그램 순서를 예시하는 도면이며, 도 12는 도 10에 도시된 프로그램에 의해 구동되는 로봇 시스템을 예시하는 도면이다.10 is a diagram illustrating a program input using a programming block assembly according to an embodiment of the present invention, FIG. 11 is a diagram illustrating a form and a program sequence after the combination of the program inputs shown in FIG. 10, and FIG. 12. Is a diagram illustrating a robot system driven by the program shown in FIG.

도 10을 참조하면, 서로 다른 형태의 프로그래밍 단위 블록이 조합되기 직전의 상태를 알 수 있으며, 이러한 프로그래밍 단위 블록이 적어도 하나 이상 조합되어 프로그래밍 블록 조립체를 이루게 된다.Referring to FIG. 10, it is possible to know a state immediately before combining different types of programming unit blocks, and at least one of these programming unit blocks is combined to form a programming block assembly.

구체적으로, B1 및 B2 블록은 프로그램 언어의 start()에 대응하는 시작 블록을 나타내며, B3 내지 B5 블록은 프로그램 언어의 If()에 대응하는 IF 함수블록을 나타내고, B6 내지 B8 블록은 센서 변수블록 중에서 적외선 센서 변수를 나타내며, B9 블록은 일반 변수블록 중에서 =(Equal) 변수를 나타내며, B10 및 B11 블록은 일반 변수블록 중에서 ON 변수를 나타내고, B12 내지 B23 블록은 실행문 블록으로서 모터 구동을 나타낸다. 또한, B24 내지 B26 블록은 프로그램 언어의 If()에 대응하는 IF 함수블록을 나타내고, B27 내지 B29 블록은 센서 변수블록 중에서 적외선 센서 변수를 나타내며, B30 블록은 일반 변수블록 중에서 =(Equal) 변수를 나타내며, B31 및 B32 블록은 일반 변수블록 중에서 숫자변수 1을 나타내고, B33 내지 B44 블록은 실행문 블록으로서 모터 구동을 나타낸다. 또한, B45 및 B46 블록은 함수블록 중에서 지연함수블록을 나타내고, B47 내지 B52 블록은 실행문 블록으로서 모터 구동을 나타낸다. 마지막으로, B53 및 B54 블록은 프로그램 언어의 run()에 대응하는 프로그램 실행문을 나타낸다.Specifically, B1 and B2 blocks represent start blocks corresponding to start () of the programming language, B3 to B5 blocks represent IF function blocks corresponding to If () of the programming language, and B6 to B8 blocks represent sensor variable blocks. Among them, B9 blocks represent = (Equal) variables among general variable blocks, B10 and B11 blocks represent ON variables, and B12 to B23 blocks represent motor driving as execution statement blocks. Also, blocks B24 to B26 represent IF function blocks corresponding to If () of the programming language, blocks B27 to B29 represent infrared sensor variables among the sensor variable blocks, and block B30 represents = (Equal) variables among the general variable blocks. Blocks B31 and B32 represent numeric variable 1 among general variable blocks, and blocks B33 to B44 represent motor driving as execution statement blocks. In addition, blocks B45 and B46 represent delay function blocks among function blocks, and blocks B47 to B52 represent motor driving as execution statement blocks. Finally, blocks B53 and B54 represent program execution statements corresponding to run () of the programming language.

이러한 B1 내지 B54 블록으로 도시된 바와 같이, 각각의 프로그래밍 단위 블록은 자신만의 ID을 가지고 있으며, 서로 다른 모양으로 제작된다. 즉, 프로그래밍 단위 블록(210) 각각의 함수블록, 센서 변수블록, 또는 일반 변수블록은 그 형태가 달라질 수 있고, 이러한 프로그래밍 단위 블록(210)을 서로 연결하여 프로그래밍할 수 있다. 또한, 이러한 프로그래밍 단위 블록은 전술한 RS-485 직렬 통신 방식으로 서로 통신하게 된다.As shown by these B1 to B54 blocks, each programming unit block has its own ID and is manufactured in different shapes. That is, the function block, the sensor variable block, or the general variable block of each of the programming unit blocks 210 may have a different shape, and the programming unit blocks 210 may be connected to each other and programmed. In addition, these programming unit blocks are to communicate with each other in the RS-485 serial communication method described above.

도 11을 참조하면, 본 발명의 실시예에 따른 프로그래밍 블록 조립체를 이용한 프로그램 입력 순서는, 먼저, B1 및 B2의 시작 블록은 프로그램 시작을 나타내며, 이후, B3 내지 B23 블록들에 의해 적외선 센서가 ON인 경우의 모터를 구동하도록 설정하고(S210), 다음으로, B24 내지 B44 블록들에 의해 적외선 센서가 1회 이상 작동한 후 모터를 구동하도록 설정한다(S220). 다음으로, B45 및 B46의 지연함수 블록에 의해 10초간 정지시키도록 설정하고(S230), B47 내지 B52의 실행문 블록에 의해 모터를 구동시키도록 설정한다(S240). 다음으로, B53 및 B54의 프로그램 실행 블록은 프로그램 실행을 나타낸다(S250).Referring to FIG. 11, a program input order using a programming block assembly according to an embodiment of the present invention, first, a start block of B1 and B2 indicates a program start, and then an infrared sensor is turned on by B3 to B23 blocks. If it is set to drive the motor (S210), next, the infrared sensor is set to drive the motor after the operation of at least one time by the blocks B24 to B44 (S220). Next, the delay function blocks B45 and B46 are set to stop for 10 seconds (S230), and the motors are set to be driven by the execution statement blocks B47 to B52 (S240). Next, the program execution blocks B53 and B54 represent program execution (S250).

즉, 시작 블록(B1, B2) 및 프로그램 실행 블록(B53, B54) 사이에 조립되는 B3 내지 B52 블록들은 함수블록, 센서 변수블록 또는 일반 변수블록들을 나타내며, 전술한 S210 내지 S250 단계에 따라 로봇의 마이크로컨트롤러에 의해 프로그램된다. 또한, 이러한 프로그래밍 블록 조립체(200)는 상기 마이크로컨트롤러(110)에 의해 프로그램이 생성된 이후에 분리될 수 있다.That is, the blocks B3 to B52 assembled between the start blocks B1 and B2 and the program execution blocks B53 and B54 represent function blocks, sensor variable blocks, or general variable blocks. It is programmed by the microcontroller. In addition, the programming block assembly 200 may be separated after the program is generated by the microcontroller 110.

도 12를 참조하면, 본 발명의 실시예에 따른 프로그램에 의해 구동되는 로봇 시스템은, 도 11에 도시된 프로그래밍 블록 조립체(200)를 로봇(100)의 마이크로컨트롤러(110)에 RS-485 통신 방식으로 연결하면, 상기 마이크로컨트롤러(110)가 상기 프로그래밍 블록 조립체(200)에 대응하는 프로그램을 생성하여 저장하고, 이후, 저장된 프로그램에 따라 상기 로봇(100)의 로봇 기구부(130)를 구동할 수 있다.Referring to FIG. 12, a robot system driven by a program according to an embodiment of the present invention may include a programming block assembly 200 illustrated in FIG. 11 in an RS-485 communication scheme with a microcontroller 110 of a robot 100. In this connection, the microcontroller 110 may generate and store a program corresponding to the programming block assembly 200, and then drive the robot mechanism 130 of the robot 100 according to the stored program. .

결국, 본 발명의 실시예에 따른 프로그램에 의해 구동되는 로봇 시스템은, 복잡한 로봇 프로그램 언어를 각각의 명령어 또는 변수 단위로 실제 퍼즐블록 또는 레고블록의 조립블록 형태로 작성함으로써, 사용자의 언플러그드 프로그래밍(Unplugged programming)이 가능하게 된다.As a result, the robot system driven by the program according to the embodiment of the present invention, by creating a complex robot programming language in the form of an assembly block of the actual puzzle block or lego block in the unit of each instruction or variable, the user unplugged programming (Unplugged) programming becomes possible.

전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The foregoing description of the present invention is intended for illustration, and it will be understood by those skilled in the art that the present invention may be easily modified in other specific forms without changing the technical spirit or essential features of the present invention. will be. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.

본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is shown by the following claims rather than the above description, and all changes or modifications derived from the meaning and scope of the claims and their equivalents should be construed as being included in the scope of the present invention. do.

100: 로봇
200: 프로그래밍 블록 조립체(명령어 구성 블록)
110: 마이크로컨트롤러(MCU)
120: 전원공급부
130: 프로그램 구동부(로봇 기구부)
140: 센서
150: 프로그램 저장부
201: 함수블록
202: 센서 변수블록
203: 일반 변수블록
210: 프로그래밍 단위 블록
211: 단위 블록 몸체
212, 212a, 212b: 메인함수간 연결용 포트
213, 213a, 213b: 서브변수 연결용 포트
214: LED
215: MCU
216: RS-485 통신모듈
100: robot
200: programming block assembly (instruction building block)
110: microcontroller (MCU)
120: power supply
130: program driver (robot mechanism)
140: sensor
150: program storage unit
201: function block
202: sensor variable block
203: general variable block
210: programming unit block
211: unit block body
212, 212a, 212b: ports for connection between main functions
213, 213a, 213b: port for subvariable connection
214: LED
215: MCU
216: RS-485 communication module

Claims (12)

원하는 프로그램 형태가 되도록 프로그램 언어에 각각 대응하는 프로그래밍 단위 블록들을 조립 또는 조합하여 구성하는 프로그래밍 블록 조립체; 및
상기 프로그래밍 블록 조립체의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체의 형태에 맞게 프로그램을 작성 및 저장하며, 상기 작성된 프로그램에 따라 구동되는 로봇 ; 을 포함하여 이루어지되,
상기 프로그래밍 블록 조립체의 프로그래밍 단위 블록들은 하드웨어적으로 상호 통신하도록 연결된 것을 특징으로 하는 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템.
A programming block assembly for assembling or combining programming unit blocks corresponding to the programming language so as to have a desired program form; And
A robot that recognizes the overall shape of the programming block assembly, creates and stores a program in accordance with the recognized programming block assembly, and is driven according to the created program; Including but not limited to,
And the programming unit blocks of the programming block assembly are coupled to communicate with each other in hardware.
제 1 항에 있어서,
상기 프로그래밍 단위 블록들은 함수블록, 센서 변수블록 및 일반 변수블록을 포함하며, 상기 프로그래밍 블록 조립체는 프로그램 언어의 함수 및 변수에 각각 대응하는 프로그래밍 단위 블록들을 조립 또는 조합하여 구성되는 것을 특징으로 하는 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템.
The method of claim 1,
The programming unit blocks include a function block, a sensor variable block, and a general variable block, wherein the programming block assembly is configured by assembling or combining programming unit blocks corresponding to functions and variables of a programming language, respectively. A robotic system driven by a program using an assembly.
제 2 항에 있어서,
상기 프로그래밍 단위 블록들은 각각 ID가 할당되어 구분되며, RS-485 직렬 통신 방식으로 서로 통신하는 것을 특징으로 하는 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템.
The method of claim 2,
The programming unit blocks are each assigned an ID and distinguished from each other, and are driven by a program using a programming block assembly, wherein the programming unit blocks communicate with each other through an RS-485 serial communication method.
제 1 항에 있어서, 상기 로봇은, 상기 프로그래밍 블록 조립체의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체의 형태에 맞게 프로그램을 작성하는 마이크로컨트롤러, 상기 마이크로컨트롤러에 의해 작성된 프로그램을 저장하는 프로그램 저장부, 로봇 기구부로서 상기 프로그램 저장부에 저장된 프로그램에 따라 구동되는 프로그램 구동부를 포함하여 이루어지는 것을 특징으로 하는 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템.The apparatus of claim 1, wherein the robot recognizes an overall shape of the programming block assembly, and writes a program in accordance with the recognized programming block assembly, and a program storage unit to store a program created by the microcontroller. And a program driving unit driven according to a program stored in the program storage unit as a robot mechanism unit. 제 4 항에 있어서,
상기 로봇의 마이크로컨트롤러는 RS-485 직렬 통신 방식으로 상기 프로그래밍 블록 조립체와 통신하는 것을 특징으로 하는 프로그래밍 블록 조립체를 이용한 프로그램에 의해 구동되는 로봇 시스템.
The method of claim 4, wherein
And the microcontroller of the robot communicates with the programming block assembly in an RS-485 serial communication manner.
프로그램 언어에 각각 대응하는 프로그래밍 단위 블록을 조립 또는 조합하여 구성하는 프로그래밍 블록 조립체로서, 상기 프로그래밍 단위 블록이, 단위 블록 몸체, 상기 단위 블록 몸체에 내장되되 다른 프로그래밍 단위 블록과 구분되기 위한 ID가 할당되는 MCU, 상기 단위 블록 몸체에 내장되되 상기 MCU에 연결되며 다른 프로그래밍 단위 블록과 서로 통신하는 통신모듈, 상기 단위 블록 몸체에 마련되되 상기 통신모듈에 연결되며 다른 프로그래밍 단위 블록과 하드웨어적으로 연결되기 위한 연결용 포트를 포함하여 이루어지는 것인 것을 특징으로 하는 프로그래밍 블록 조립체.A programming block assembly for assembling or combining a programming unit block corresponding to a programming language, wherein the programming unit block is embedded in a unit block body and the unit block body, and is assigned an ID for distinguishing from another programming unit block. MCU, a communication module embedded in the unit block body and connected to the MCU and communicating with other programming unit blocks, provided in the unit block body, connected to the communication module and connected to other programming unit blocks in hardware Programming block assembly comprising a port for. 제 6 항에 있어서, 상기 프로그래밍 단위 블록은, 상기 단위 블록 몸체에 마련되며 상기 MCU에 연결되어 다른 프로그래밍 단위 블록과의 연결 상태를 표시하는 발광다이오드(LED)가 부가되는 것을 특징으로 하는 프로그래밍 블록 조립체.The programming block assembly of claim 6, wherein the programming unit block includes a light emitting diode (LED) provided in the unit block body and connected to the MCU to indicate a connection state with another programming unit block. . 제 6 항에 있어서,
상기 프로그래밍 단위 블록들은 프로그램 언어에 각각 대응하는 함수블록, 센서 변수블록, 또는 일반 변수블록으로 구분되며,
상기 연결용 포트는, 다른 프로그래밍 단위 블록의 함수블록과 서로 연결하기 위한 메인함수간 연결용 포트 및 다른 프로그래밍 단위 블록의 센서 변수블록이나 일반 변수블록과 연결하기 위한 서브변수 연결용 포트를 포함하는 것
을 특징으로 하는 프로그래밍 블록 조립체.
The method according to claim 6,
The programming unit blocks are divided into function blocks, sensor variable blocks, or general variable blocks respectively corresponding to a programming language.
The connection port includes a port for connection between main functions for connecting with a function block of another programming unit block and a sub variable connection port for connecting with a sensor variable block or a general variable block of another programming unit block.
Programming block assembly, characterized in that.
제 6 항에 있어서,
상기 통신모듈은 RS-485 직렬 통신 모듈인 것을 특징으로 하는 프로그래밍 블록 조립체.
The method according to claim 6,
And said communication module is an RS-485 serial communication module.
로봇제어 프로그램을 생성 및 저장하는 마이크로컨트롤러를 구비한 로봇 시스템의 프로그래밍 블록 조립체를 이용한 프로그래밍 방법으로서,
a) 상기 로봇제어 프로그램을 작성하기 위한 명령어에 대응하도록 프로그래밍 단위 블록들을 조립하거나 조합하여 프로그래밍 블록 조립체를 구성하는 단계;
b) 상기 프로그래밍 블록 조립체를 상기 마이크로컨트롤러에 연결하는 단계;
c) 상기 마이크로컨트롤러가 상기 프로그래밍 블록 조립체의 조합된 명령어에 따른 언플러그드 프로그래밍(Unplugged Programming)을 수행하고, 프로그래밍된 프로그램을 프로그램 저장부에 저장하는 단계 ;
를 포함하는 프로그래밍 블록 조립체를 이용한 프로그래밍 방법.
A programming method using a programming block assembly of a robot system having a microcontroller for generating and storing a robot control program,
a) constructing a programming block assembly by assembling or combining programming unit blocks to correspond to the instructions for creating the robot control program;
b) connecting the programming block assembly to the microcontroller;
c) the microcontroller performing Unplugged Programming according to the combined instructions of the programming block assembly and storing the programmed program in a program storage;
Programming method using a programming block assembly comprising a.
제 10 항에 있어서,
상기 b) 단계와 상기 c) 단계 사이에,
b-1) 상기 마이크로컨트롤러가 상기 프로그래밍 블록 조립체의 연결 상태를 확인하는 단계;
b-2) 상기 프로그래밍 블록 조립체에 조합 오류가 있는 경우, 오류 메시지를 표시하는 단계; 가 부가되며,
상기 c) 단계는 상기 프로그래밍 블록 조립체에 조합 오류가 없는 경우 수행되는 것
을 특징으로 하는 프로그래밍 블록 조립체를 이용한 프로그래밍 방법.
11. The method of claim 10,
Between step b) and step c),
b-1) the microcontroller checking the connection state of the programming block assembly;
b-2) if there is a combination error in the programming block assembly, displaying an error message; Is added,
Step c) is performed if there is no combination error in the programming block assembly.
Programming method using a programming block assembly, characterized in that.
제 10 항에 있어서,
상기 c) 단계에서 상기 마이크로컨트롤러는 상기 프로그래밍 블록 조립체의 전체적인 형태를 인식하고, 인식된 프로그래밍 블록 조립체의 형태에 맞게 프로그램을 작성 및 저장하는 것을 특징으로 하는 프로그래밍 블록 조립체를 이용한 프로그래밍 방법.
11. The method of claim 10,
And in step c), the microcontroller recognizes the overall shape of the programming block assembly, and writes and stores a program in accordance with the recognized programming block assembly.
KR1020110048328A 2011-05-23 2011-05-23 Programming block assembly, robot system operated by program using the same, and programming method thereof KR101284910B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110048328A KR101284910B1 (en) 2011-05-23 2011-05-23 Programming block assembly, robot system operated by program using the same, and programming method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110048328A KR101284910B1 (en) 2011-05-23 2011-05-23 Programming block assembly, robot system operated by program using the same, and programming method thereof

Publications (2)

Publication Number Publication Date
KR20120130420A true KR20120130420A (en) 2012-12-03
KR101284910B1 KR101284910B1 (en) 2013-07-12

Family

ID=47514489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110048328A KR101284910B1 (en) 2011-05-23 2011-05-23 Programming block assembly, robot system operated by program using the same, and programming method thereof

Country Status (1)

Country Link
KR (1) KR101284910B1 (en)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101521751B1 (en) * 2014-03-31 2015-05-20 광운대학교 산학협력단 Robot for Toy Block
WO2015178605A1 (en) * 2014-05-22 2015-11-26 황수진 Method and device for visually implementing software code
CN105632254A (en) * 2016-01-18 2016-06-01 北京助想教育科技有限公司 Novel teaching system
CN105652738A (en) * 2014-12-01 2016-06-08 斯平玛斯特有限公司 Reconfigurable robotic system
KR101696151B1 (en) * 2016-06-09 2017-01-12 신재광 MODULAR ROBOTICS SYSTEM BASED ON IoT
KR101715621B1 (en) 2015-10-14 2017-03-27 (주)비즈맘 System for educating programming and method for driving the same
KR101724230B1 (en) * 2016-03-03 2017-04-06 전석주 An electronic block kit system for scratch programming
WO2017150788A1 (en) * 2016-03-03 2017-09-08 전석주 Electronic block system for programming education
WO2018002913A1 (en) * 2016-06-30 2018-01-04 Algobrix Ltd 3d multi-threaded, parameter layered, physical programming interface
WO2018097502A1 (en) * 2016-11-23 2018-05-31 손승희 Block for program coding
WO2018147499A1 (en) * 2017-02-10 2018-08-16 주식회사 씨앤알테크 Unplugged coding blocks
KR101947160B1 (en) * 2018-06-20 2019-02-12 (주)코딩앤플레이 Coding education method using augmented reality
KR20190029635A (en) * 2016-07-06 2019-03-20 크리스토프 쿠롭스키 Computer program generating device and computer program generating method
KR102007493B1 (en) * 2019-01-31 2019-08-05 (주)코딩앤플레이 Method of providing learning content for coding
KR102007495B1 (en) * 2019-01-31 2019-08-05 (주)코딩앤플레이 Method for implementing educational contents using virtual robot
KR102007491B1 (en) * 2019-02-01 2019-08-05 (주)코딩앤플레이 Method for providing coding training using virtual robot
WO2019207583A1 (en) * 2018-04-24 2019-10-31 Algobrix Ltd Physical programming interfaces with a single command thread
KR20200086050A (en) * 2019-01-08 2020-07-16 주식회사 럭스로보 A system for providing assembly information and a module assembly
KR20210016931A (en) * 2019-08-06 2021-02-17 김영호 Method and system for learning coding using light emitting diode blocks
CN112764733A (en) * 2020-06-12 2021-05-07 杭州优必学科技有限公司 Programming device and method for controlling by adopting electromagnetic induction
KR20230032723A (en) * 2021-08-31 2023-03-07 강혜민 Apparatus for coding study and learning

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016205880A1 (en) * 2015-06-25 2016-12-29 Patently Good Pty Ltd Modular electronics system
KR101923557B1 (en) * 2017-07-10 2018-11-29 주식회사 바른앱 Robot control system using block toys
KR102434400B1 (en) 2022-03-03 2022-08-22 주식회사 에이아이컨트롤 Block coding apparatus and block coding method using same

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6175954B1 (en) * 1997-10-30 2001-01-16 Fuji Xerox Co., Ltd. Computer programming using tangible user interface where physical icons (phicons) indicate: beginning and end of statements and program constructs; statements generated with re-programmable phicons and stored
KR100434656B1 (en) * 2001-11-28 2004-06-07 (주)누리텔레콤 Integrated Automatic Meter Reading System using Wire/Wireless Multiple Communication
US7316567B2 (en) * 2003-08-01 2008-01-08 Jennifer Chia-Jen Hsieh Physical programming toy

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101521751B1 (en) * 2014-03-31 2015-05-20 광운대학교 산학협력단 Robot for Toy Block
US9904524B2 (en) 2014-05-22 2018-02-27 Soo-Jin Hwang Method and device for visually implementing software code
WO2015178605A1 (en) * 2014-05-22 2015-11-26 황수진 Method and device for visually implementing software code
KR20150134713A (en) * 2014-05-22 2015-12-02 황수진 Method and apparatus for visually implementing software code
CN105652738A (en) * 2014-12-01 2016-06-08 斯平玛斯特有限公司 Reconfigurable robotic system
CN105652738B (en) * 2014-12-01 2019-10-11 斯平玛斯特有限公司 Reconfigurable robot system
KR101715621B1 (en) 2015-10-14 2017-03-27 (주)비즈맘 System for educating programming and method for driving the same
CN105632254A (en) * 2016-01-18 2016-06-01 北京助想教育科技有限公司 Novel teaching system
WO2017150788A1 (en) * 2016-03-03 2017-09-08 전석주 Electronic block system for programming education
US10585649B2 (en) 2016-03-03 2020-03-10 Seok Ju CHUN Electronic block kit system for scratch programming
KR101724230B1 (en) * 2016-03-03 2017-04-06 전석주 An electronic block kit system for scratch programming
WO2017213312A1 (en) * 2016-06-09 2017-12-14 신재광 Iot-based modular robotics system
CN107925680A (en) * 2016-06-09 2018-04-17 申在光 Modularization robot system based on Internet of Things
US10456905B2 (en) 2016-06-09 2019-10-29 Cubroid, Inc. Modular robotics system based on IoT
KR101696151B1 (en) * 2016-06-09 2017-01-12 신재광 MODULAR ROBOTICS SYSTEM BASED ON IoT
WO2018002913A1 (en) * 2016-06-30 2018-01-04 Algobrix Ltd 3d multi-threaded, parameter layered, physical programming interface
CN109803732A (en) * 2016-06-30 2019-05-24 阿果布瑞克斯有限公司 3D multithreading parameter is layered tangible programming interface
KR20190029635A (en) * 2016-07-06 2019-03-20 크리스토프 쿠롭스키 Computer program generating device and computer program generating method
WO2018097502A1 (en) * 2016-11-23 2018-05-31 손승희 Block for program coding
WO2018147499A1 (en) * 2017-02-10 2018-08-16 주식회사 씨앤알테크 Unplugged coding blocks
WO2019207583A1 (en) * 2018-04-24 2019-10-31 Algobrix Ltd Physical programming interfaces with a single command thread
WO2019245166A1 (en) * 2018-06-20 2019-12-26 (주)코딩앤플레이 Method for teaching coding by using augmented reality
KR101947160B1 (en) * 2018-06-20 2019-02-12 (주)코딩앤플레이 Coding education method using augmented reality
US11334325B2 (en) 2018-06-20 2022-05-17 Coding & Play Inc. Coding training method using augmented reality
KR20200086050A (en) * 2019-01-08 2020-07-16 주식회사 럭스로보 A system for providing assembly information and a module assembly
KR102007493B1 (en) * 2019-01-31 2019-08-05 (주)코딩앤플레이 Method of providing learning content for coding
KR102007495B1 (en) * 2019-01-31 2019-08-05 (주)코딩앤플레이 Method for implementing educational contents using virtual robot
KR102007491B1 (en) * 2019-02-01 2019-08-05 (주)코딩앤플레이 Method for providing coding training using virtual robot
KR20210016931A (en) * 2019-08-06 2021-02-17 김영호 Method and system for learning coding using light emitting diode blocks
CN112764733A (en) * 2020-06-12 2021-05-07 杭州优必学科技有限公司 Programming device and method for controlling by adopting electromagnetic induction
KR20230032723A (en) * 2021-08-31 2023-03-07 강혜민 Apparatus for coding study and learning
KR20230143974A (en) * 2021-08-31 2023-10-13 강혜민 Apparatus for coding study and learning

Also Published As

Publication number Publication date
KR101284910B1 (en) 2013-07-12

Similar Documents

Publication Publication Date Title
KR101284910B1 (en) Programming block assembly, robot system operated by program using the same, and programming method thereof
JP5563464B2 (en) Toy construction system
US7555658B2 (en) Embedded electronics building blocks for user-configurable monitor/control networks
US20080091932A1 (en) Devices, systems, and methods for initializing a PLC module
KR20170053185A (en) Motion control system for block kits using motion cards, and thereof method
CN108777100B (en) Programming education system based on tangible programming instruction building blocks
KR102175316B1 (en) Device for coding training
CN111240242A (en) Materialized programming system and method
KR101676676B1 (en) Robot programing kit using card key and board having resistor and magnet and method thereof
CN109416891A (en) The encoding block of not plug-in
CN108319457A (en) Building block system hardware programming external member
KR20160000841U (en) A sensor robot for student
KR101551462B1 (en) Modular learning block
CN109697035A (en) Wiring method, write device and the storage medium of the address date of cascade device
US11229841B2 (en) Reader participation type electronic book system using module and operation method
KR102083091B1 (en) Device for software coding training
Khamphroo et al. Integrating MicroPython-based educational mobile robot with wireless network
CN207976872U (en) Building block system hardware programming external member
CN112106095A (en) Assembly information providing system and module assembly
KR20200057138A (en) Block type apparatus for wirelessly inputting coding command and method using thereof
TWI768442B (en) Reader-participated e-book system and operation method using modules
KR101923557B1 (en) Robot control system using block toys
KR20190069035A (en) Apparatus for producing algorithm
KR102488992B1 (en) A Teaching or playing aid using gear and block
US20220026868A1 (en) Information processing system

Legal Events

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

Payment date: 20160708

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170711

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180705

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190703

Year of fee payment: 8