AM3359 MPU 기반 산업용 임베디드 제어 시스템 설계 및 제작
초록
본 논문에서는 낮은 전력 소모, 빠른 연산 능력과 다양한 입출력 장치를 지원하는 TI 사의 AM3359 MPU 기반으로 각종 센서 데이터 정보를 수집하고, 다수의 장치를 제어하며 산업용 통신이 가능한 산업용 임베디드 제어시스템을 개발한다. 개발된 산업용 제어시스템은 패스트 이더넷을 지원하여 이더넷 기반 산업용 통신이 가능하고, ADC와 DAC를 통한 아날로그 입출력뿐만 아니라 DIO를 지원하여 빠른 데이터 수집 및 처리가 가능하며 소규모 공장에서 저비용으로 효율적 운용이 가능하다. 소프트웨어 개발 환경을 TI RTOS를 기반으로 구축하고 개발된 제어시스템의 성능 평가를 위한 시험용 프로그램을 작성하고 실제 실험을 통해 개발된 제어시스템의 Modbus/TCP를 포함한 모든 입출력 장치의 동작 완료 시간이 1ms 이내로 달성되는 성능을 검증한다.
Abstract
We develop an industrial embedded control system to measure various sensor data, control multiple devices, and support industrial communication protocols, based on TI's AM3359 MPU that exhibits low power consumption, high-speed processing capability, and various I/O peripherals. The developed control system supports Fast Ethernet for Ethernet based industrial communication, ADC and DAC for analog I/O, and DIO, which enable high-speed data acquisition and processing, and low-cost high-efficient operations for small-sized factories. We build a S/W development environment based on TI RTOS and develop a test program to evaluate the performance of the developed system. By performing experiments with the test program, we verify that the operation of all I/O devices including Modbus/TCP is completed within 1ms.
Keywords:
industrial embedded control system, AM3359 MPU, Modbus/TCP, RTOSⅠ. 서 론
오늘날 임베디드 시스템은 산업, 가전, 의료 등 다양한 분야에서 수요가 증가하면서, 특수 목적의 응용프로그램 수행을 위한 높은 수준의 성능과 안정성이 요구되고 있다[1]. 또한 저비용으로 저전력 고효율의 성능을 확보하고 다양한 까다로운 요구사항을 만족시키기 위해 임베디드 하드웨어 아키텍처 및 시스템 설계의 방향은 처리속도, 지연시간, 유연성, 비용 등의 균형을 최적화 하는 쪽으로 점차 변화하고 있다[2].
한편, 산업용 제어시스템은 주로 PLC를 기반으로 구축되는 경우가 많으나 다음과 같은 문제점을 내포하고 있다. 소규모 기업의 경우 고성능의 PLC 구입에 대한 비용 부담이 크고 주변 장치가 기능별로 모듈화 되어 있어 부피와 무게가 제약 조건이 될 수 있으며 이동용 산업기기에는 적합하지 않은 문제점이 있다[3].
이러한 문제점을 해결하기 위해 [3]에서는 DSP 기반 임베디드 시스템을 개발하여 엑츄에이터 제어시스템에 적용하여 PLC를 대체하고 비용 절감을 달성하였다. 그러나 실시간 운영체제 기반의 프로그램 개발 환경을 지원하지 않고 TCP 기반이 아닌 RS-485 기반 Modbus 통신을 제공하고 입출력 장치로도 DIO만을 지원하고 있어 소프트웨어 및 하드웨어 성능 관점에서 한계점을 나타내고 있다.
본 논문에서는 소규모 공장에서 고비용의 PLC 대체를 목적으로 Cortex-A 프로세서 기반 AM3359 MPU를 채택하여 저비용으로 효율적 운용이 가능한 산업용 임베디드 제어시스템을 설계 및 제작한다. 개발된 임베디드 시스템은 2장의 보드로 구성되어 있으며 8채널 16비트 ADC, 4채널 16비트 DAC, Fast Ethernet, RS-232, RS-422, 24 채널 DI, 24 채널 DO를 지원한다. 소프트웨어 개발환경으로는 TCP/IP 소켓 프로그래밍 환경을 지원하는 TI RTOS 기반 응용프로그램 개발 환경을 구축한다. 산업용 통신 프로토콜로 Modbus/TCP[4]를 이식하여 구현하였으며 Modbus/TCP를 포함한 모든 주변장치를 주기적으로 사용하는 시험용 제어 프로그램을 TI RTOS 기반으로 작성하고 실제 실험을 통하여 1ms 이내의 동작 주기를 달성하는 성능을 검증한다.
본 논문의 전체 구성은 다음과 같다. 2장에서는 프로세서 선정 기준과 선정된 프로세서에 대해 기술하고, 3장에서는 하드웨어의 설계 및 제작에 대해 기술한다. 4장에서는 RTOS 기반 프로그램 개발 환경 구축과 시험용 응용프로그램에 대해 기술하고 5장에서는 시험용 프로그램을 사용하여 실험을 수행하고 성능 결과에 대해 분석한다. 마지막으로, 6장에서 결론을 제시한다.
Ⅱ. AM3359 MPU
저비용, 고효율의 산업용 제어시스템의 개발에 있어서 기본적으로 목적에 부합하는 적절한 프로세서의 선택이 선행되어야 한다[5]. 오늘날 산업용 제어시스템의 낮은 대기시간, 높은 정밀성 및 높은 동기화 성능 요구 조건에 부합하는 임베디드 시스템을 개발하기 위해서 ARM 사의 아키텍처를 기반으로 하는 프로세서가 많이 사용되고 있다[6].
ARM사의 Cortex 계열 프로세서는 아키텍처 버전이 크게 3가지로 A, R, M으로 분류된다. Cortex-R 계열은 실시간 프로파일로, 고성능의 프로세서와 안전이 최우선시 되는 환경에서 사용된다. Cortex-M 계열은 저가형 응용 프로그램에 최적화된 임베디드 프로세서이다. 마지막으로 Cortex-A 계열은 복잡한 응용 프로그램에 사용되는 고성능 프로세서 계열로서, 스마트폰, TV 등의 멀티미디어 기기와 같이 많은 양의 리소스를 처리해야 하는 응용 분야, 다중 센서 데이터 처리, 다양한 주변장치 제어에 적합하다[6].
본 논문에서는 PLC 대체를 목적으로 이더넷 기반 산업용 네트워크 프로토콜을 지원하면서 다양한 종류의 다중 입출력 장치를 사용하는 복잡한 제어 알고리즘의 프로그램 환경을 운영체제 기반으로 제공할 수 있는 ARM Cortex-A8 프로세서 기반 AM3359 MPU를 선정하였다. ARM Cortex-A8은 32비트 프로세서 코어로서 처음으로 ARMv7-A 아키텍처를 도입한 프로세서이며 고성능, 저전력 프로세서로서 이전 세대 ARMv6 기반의 아키텍처와 비교하였을 때 클럭 당 동시 명령어 처리 능력, 클럭 당 동시 데이터 처리 능력이 향상되어 정수 연산 및 멀티미디어 데이터, 부동 소수점 연산 능력 모두 향상된 장점이 있다[7].
AM335x는 그림 1과 같이 다양한 서브시스템을 지원한다[8]. AM335x는 최대 1GHz 클럭의 ARM Cortex-A8 프로세서를 기반으로 하며 EtherCAT, PROFINET, EtherNET/IP, PROFIBUS 등의 실시간 프로토콜을 지원하는 PRU-ICSS(Programmable Real-time Unit and Industrial Communication Subsystem)는 ARM 코어와 분리되어 있어 독립적인 작업과 클럭을 제공하여 높은 효율과 유연성을 얻을 수 있다.
또한 AM3359 MPU는 매우 다양한 주변장치 확장을 제공한다. 주변장치 인터페이스로는 최대 6개의 UART, 최대 2개의 마스터와 슬레이브 SPI, 최대 3개의 I2C 마스터와 슬레이브 인터페이스, 최대 2개의 다중채널 오디오 직렬 포트 (McASPs), 최대 2개의 CAN 통신 포트, 최대 2개의 USB 2.0포트, 최대 두 개의 기가빗 이더넷 MAC, MMC, SD 카드, 최대 4개의 32비트 GPIO 세트, LCD 컨트롤러 등이 있다.
Ⅲ. 하드웨어 설계 및 제작
본 논문에서는 플랜트로부터 입력을 받아 연산 작업 후 제어신호를 출력하면서 동시에 산업용 통신이 가능한 산업용 임베디드 제어시스템을 개발하는 것이 목표이다. 개발하고자 하는 시스템의 성능에 대한 요구사항은 1ms 이내의 주기로 원격 제어 클라이언트로부터 지시를 받아 연결된 플랜트로부터 데이터를 수집하여 각 데이터에 맞는 연산 작업 수행 후 제어값을 아날로그 또는 디지털로 출력하고, 다시 원격 제어 클라이언트에게 요청에 대한 응답 패킷을 보내는 것이다.
이러한 성능에 대한 요구사항을 만족하기 위해서는 코어당 높은 클럭으로 빠른 연산과 넓은 인터페이스 확장성을 기반으로 다양한 주변장치와 호환이 가능한 프로세서가 요구되기 때문에 본 논문에서는 저전력 고효율의 임베디드 시스템에 적합한 TI 사의 AM3359 MPU를 선정하여 산업용 임베디드 제어 시스템을 설계 및 제작한다.
3.1 하드웨어 구성
본 논문에서 설계하는 산업용 제어시스템의 하드웨어 구성은 그림 2와 같다. 하드웨어는 두개의 보드로 구성되며 첫번째 보드는 프로세서, ADC, DAC, 직렬통신, 이더넷통신, SDRAM, eMMC, MMCSD, JTAG을 포함하고 두번째 보드는 I/O 확장장치와 DIO단자를 포함한다.
AM3359 MPU의 외부 메모리 인터페이스(EMIF)를 통해 DDR3L 2Gb (128M×16) 용량의 SDRAM을 장착하며, 멀티미디어카드 인터페이스를 통해 내장 플래시 저장장치로 8비트 데이터 버스 구조를 갖는 4GB 용량의 eMMC를 장착한다. 또한 멀티미디어카드 인터페이스를 통해 Micro SD 카드를 지원하도록 설계한다.
UART 인터페이스를 이용하여 RS-232와 RS-422 규격의 직렬통신을 지원하며 프로세서의 디버그 환경을 구축하기 위해 Compact TI 20-Pin 규격에 맞춘 20핀 헤더 JTAG 인터페이스를 장착한다.
AM3359와 16비트 8채널의 ADC와 16비트 4채널의 DAC를 SPI를 사용하여 연결하여 각 장치를 제어하고 아날로그 신호 입출력을 수행한다. MII를 통하여 두개의 패스트 이더넷 포트를 지원하고 이더넷 포트를 위한 PHY 칩에 공급해야 하는 25Mhz 클럭은 I2C를 통해 제어되는 3채널 Clock Generator 칩에서 생성되어 공급된다. 또한, Clock Generator 칩은 두 개의 PHY 칩 외에도 ADC에 클럭을 제공한다. 24비트 DI를 위해서는 프로세서의 24개 GPIO핀을 이용하여 구현하였으며 24비트 DO로는 I2C 또는 SPI I/O 확장장치를 장착하여 DO를 구현한다.
3.2 전원 및 부품배치
개발된 산업용 임베디드 제어시스템은 총 2층의 보드로 구성되어 있으며 그림 3과 같이 1층의 보드에는 DIO를 제외한 모든 주변장치 칩들이 위치하고 있으며 2층의 보드에는 그림 4와 같이 24비트 DI와 24비트 DO를 위한 I/O 확장장치 및 입출력 터미널 블럭이 위치하고 있다.
설계한 제어 시스템은 1층과 2층에 독립적으로 전원부가 존재하며, 주전원으로 24V를 사용하며 이는 5V, 3.3V, ±12V로 변환되어 각 필요한 칩으로 전원이 인가된다. DIO를 위한 2층 보드는 1층보드와 40핀 헤더와 플랫 케이블로 연결되며 이를 통해 DI를 위한 GPIO 신호와 DO를 위한 SPI, I2C신호가 전달된다. 조립이 완료된 1층 보드는 그림 3과 같으며 DIO 부를 포함하는 2층 보드는 그림 4와 같다.
Ⅳ. 소프트웨어 개발
4.1 소프트웨어 개발 환경 구축
응용프로그램 개발 환경은 TI사에서 제공하는 RTOS를 기반으로 구축한다. TI사의 웹사이트에서 AM335x용 RTOS 기반 SDK를 내려 받아 윈도우 PC에 설치하고 다음과 같은 이식 과정을 통하여 구축한다. 우선 개발된 보드에서 AM3359 MPU와 주변장치와 연결된 방법에 적합하도록 SDK의 Pinmux 파일을 수정하여 AM3359의 각 핀에 어떤 주변장치의 어떤 핀이 연결되었는지 설정한다. 이후 각 주변장치 별로 SDK에서 제공된 디바이스 드라이버를 시험하고 정상 동작할 수 있도록 관련 장치의 설정 파라미터를 적절하게 수정한다.
응용프로그램 개발이나 디바이스 드라이버 시험을 위해 윈도우 기반 HOST PC에 TI 사의 통합 개발 환경인 CCS(Code Composer Studio)를 설치하고 개발된 제어보드와 JTAG 포트로 연결하여 프로그램 다운로드, 실행, 디버깅을 수행한다. 개발된 제어보드의 AM3359와 HOST PC의 CCS 사이의 통신을 위해 제어보드의 20핀 JTAG 포트와 HOST PC의 USB 포트를 TI 사의 XDS110 JTAG Debug Probe를 사용하여 연결하고 XDS110은 AM3359의 ARM 코어에서 디버깅 기능을 지원한다.
4.2 성능 시험 프로그램 개발
본 논문에서 개발한 산업용 임베디드 제어시스템의 성능을 검증하기 위해서 시험용 프로그램을 작성하며 프로그램의 기본 동작 흐름은 그림 5와 같다. 먼저 전원이 인가되고 시스템이 초기화 되면 Modbus/TCP 서버가 동작하기 시작한다. 서버는 대기하다가 클라이언트의 접속이 시도되면 유효한 클라이언트와 연결하고 클라이언트로부터 요청을 기다린다.
클라이언트의 요청을 시작으로 Modbus/TCP 수신, 직렬 입력 수신, 8채널의 아날로그 변환, 24채널의 DI 수신을 모두 수행하고 결과 데이터를 저장한다. 저장된 데이터를 이용해 8루프의 PID 제어 연산을 수행하고 완료 후 직렬 출력, 4채널의 아날로그 출력, 24채널의 DO를 모두 수행한다. 그리고 서버는 다시 클라이언트의 요청에 따른 응답을 Modbus/TCP 패킷에 실어 전송한다. 즉 Modbus/TCP 패킷을 수신하고 모든 입출력 장치의 동작 후 Modbus/TCP 패킷을 송신하는 것이 설계한 프로그램의 한 주기이다.
Ⅴ. 성능 시험
5.1 성능 시험 환경 구축
본 논문에서 개발한 산업용 임베디드 제어시스템의 성능 시험을 위해 그림 3의 1층보드와 그림 4의 2층보드에 각각 24V 전원을 연결하고 DIO 신호를 전달하기 위해 1층보드의 40핀 헤더와 2층보드의 40핀 헤더를 플랫케이블을 이용하여 연결한다. 윈도우 10 운영체제 기반 HOST PC의 CCS 통합 개발환경의 디버그 모드를 이용하여 개발된 성능 시험용 프로그램을 제작된 보드로 다운로드 하여 보드의 동작 검증을 수행한다.
작성한 시험용 프로그램을 실행시켜 의도한 결과가 도출되는지를 확인하는데 확인 방법은 의도한 특정 동작 수행을 확인하기 위해 입력부에 함수발생기를 사용하여 신호를 인가하고 오실로스코프를 이용하여 프로그램 동작 시 입출력 부의 파형을 측정하여 정상 동작 여부를 확인한다. 서버와 연결하여 동작하게 되는 Modbus/TCP 클라이언트 프로그램은 Microsoft Visual Studio 2010을 이용하여 작성하고, 산업용 제어시스템의 동작 주기 성능 확인을 위해 1ms 이내의 주기로 Modbus/TCP 요청 패킷을 보내도록 작성한다.
5.2 시험 결과
그림 5의 시험용 프로그램의 순서도에 도시된 바와 같이 매 동작주기 마다 다양한 주변장치를 통한 입출력과 PID 제어 연산을 수행하고 그 과정에서 개발된 제어시스템의 핵심 기능과 성능을 나타내는 입출력 동작을 오실로스코프로 직접 측정하여 성능을 검증한다.
그림 6의 위쪽 파형은 ADC SPI 클럭, 아래쪽 파형은 ADC SPI 데이터를 나타내고 데이터는 SPI 클럭에 동기화 되어 MPU로 전달된다. 그림 6에 나타나듯이 ADC의 16비트 8채널의 아날로그 입력 값을 측정하여 프로세서로 전달하는데 약 20μs의 빠른 동작시간을 보여준다. 따라서 1ms의 전체 프로그램 동작 주기 동안 최소 50번의 아날로그 입력 값을 측정할 수 있고 적당한 횟수의 측정값의 평균값을 아날로그 입력 값으로 사용하면 잡음에 민감한 ADC의 단점을 보상할 수 있다.
그림 7의 위쪽 파형은 DI로 입력되는 구형파를 나타내며 아래쪽 파형은 PID 제어 연산을 완료 후 DI 입력 값을 DAC로 출력하는 신호를 나타낸다. DI의 값이 0에서 1로 변하는 시점에서 약 500μs 경과 후 DAC를 통해 원하는 전압 값이 출력되는 것을 확인할 수 있으며 이는 1ms 이내로 DI로부터 DAC 출력이 완료되는 것을 검증한다.
그림 8의 위쪽 파형은 ADC로 입력되는 구형파를 나타내며 아래쪽 파형은 PID 제어 연산을 완료 후 ADC 변환 값을 이용하여 ADC 입력과 같은 전압을 DAC로 출력하는 신호를 나타낸다. ADC로 신호가 입력된 시점에서 약 500μs 경과 후 DAC를 통해 원하는 전압 값이 출력되는 것을 확인할 수 있으며 이는 1ms 이내로 ADC 입력으로부터 DAC 출력이 완료되는 것을 검증한다.
그림 9의 위쪽 파형은 ADC로 입력되는 구형파를 나타내며 아래쪽 파형은 PID 제어 연산을 완료 후 ADC 변환 값을 DO로 출력하는 신호를 나타낸다. ADC로 신호가 입력된 시점에서 약 600μs 경과 후 DO를 통해 원하는 전압 값이 출력되는 것을 확인할 수 있으며 이는 1ms 이내로 ADC 입력으로부터 DO 출력이 완료되는 것을 검증한다.
그림 10의 위쪽 파형은 PC로부터 RS-232 포트로 입력되는 신호를 나타내며 아래쪽 파형은 PID 제어 연산을 완료 후 RS-422 포트를 통해 PC로 출력되는 신호를 나타낸다. RS-232의 신호가 입력된 시점에 약 약 100μs 이내에 RS-422 신호 값이 출력되는 것을 확인할 수 있고 이는 1ms 이내로 RS-232 입력으로부터 RS-422 출력이 완료되는 것을 검증한다.
마지막으로 개발한 제어시스템의 성능에 가장 큰 영향을 미칠 수 있는 Modbus/TCP 송수신 성능을 측정한다. 그림 5의 성능 시험 프로그램의 기본 동작 흐름에서 Modbus/TCP 패킷의 수신으로부터 Modbus/TCP 패킷의 송신까지가 프로그램의 한 주기이며 그림 11은 이 주기를 추정하기 위해 Wireshark를 사용하여 Modbus/TCP 패킷을 분석한 것이다.
Wireshark는 산업용 제어시스템과 Modbus/TCP 연결을 위해 사용된 PC에서 동작하며 그림 11에서 그래프의 x축은 시간을 나타내며 y축은 초당 Modbus/TCP 요청 패킷의 전송된 수와 응답 패킷의 수신된 수를 각각 나타낸다. 그림 11의 그래프를 보면 초당 Modbus/TCP 요청 패킷의 수와 응답 패킷의 수는 동일하며 전송되거나 수신된 초당 패킷 개수의 최솟값은 999이며 이때 PC에서 패킷의 전송 주기를 계산해 보면 약 1.001ms임을 알 수 있다. 따라서 Modbus/TCP 패킷 자체의 전송 지연 시간을 고려하면 개발한 제어시스템의 Modbus/TCP 동작을 포함하는 모든 입출력 장치와 PID 제어 연산 동작 완료 시간은 1ms 보다 작다고 판단할 수 있다.
Ⅵ. 결 론
본 논문에서는 저전력, 고성능의 다양한 입출력 장치를 지원하는 TI사의 AM3359 MPU를 기반으로 직렬 통신, 아날로그 입출력, DIO, 이더넷 기반 산업용 통신이 가능한 산업용 임베디드 제어시스템을 개발하였다. TI RTOS 기반 응용프로그램 개발 환경을 구축하였으며 시험용 프로그램을 구현하고 실제 실험을 수행하여 성능을 검증하였다.
시험 결과를 통해 개발된 제어시스템의 다양한 주변장치의 정상동작을 확인하였으며 Modbus/TCP를 포함하는 모든 입출력 동작이 1ms 이내의 주기에서 수행 완료되는 것을 검증하였다.
결론적으로 개발된 산업용 임베디드 제어시스템은 소규모 공장에서 기존 PLC의 기능과 성능을 대체할 수 있으며 동시에 이동성 및 성능의 향상, 공간 및 무게의 절감 등을 통해 기업 비용 절감의 가능성을 제시한다.
Acknowledgments
본 논문은 BK21플러스, IT기반 융합산업 창의인력양성사업단에 의하여 지원되었고 2018년도 정부 (교육부)의 재원으로 한국연구재단의 지원을 받아 수행된 기초연구사업임(NRF-2018R1D1A3B07043053).
References
- G. Cabodi, P. Camurati, S. F. Finocchiaro, F. Savarese, and D. Vendraminetto, "Embedded Systems Secure Path Verification at the Hardware/Software Interface", IEEE Design & Test, 34(5), p38-46, Oct.), (2017. [https://doi.org/10.1109/MDAT.2017.2713393]
- H. W. Kim, B. H. Sheen, H. S. Wi, and J. Y. Choi, "Development of Low-Cost Solar Embedded Systems for Sun Light Systems", Journal of KIIT, 14(1), p19-26, Jan.), (2016. [https://doi.org/10.14801/jkiit.2016.14.1.19]
- W. J. Kim, D. G. Gwak, and D. H. Kim, "Development of DSP-based Modbus Communication Scheme and Control Module for Controlling Actuators in Industrial Equipment", Trans. Korean Soc. Mech. Eng. A, 41(11), p1109-1117, Nov.), (2017. [https://doi.org/10.3795/KSME-A.2017.41.11.1109]
- F. Jingqi, G. Jun, Z. Xueli, D. Xin, and L. Fuwei, "The design and implementation of wireless sensor network monitoring and control system based on modbus/tcp", 25th Chinese Control and Decision Conference, IEEE, p3319-3323, May), (2013. [https://doi.org/10.1109/CCDC.2013.6561520]
- J. H. Lee, H. W. Kim, and J. Y. Choi, "Design and Implementation of Embedded System Hardware Using RM57L843 Microprocessor based on Cortex R", Journal of KIIT, 16(4), p57-65, Apr.), (2018. [https://doi.org/10.14801/jkiit.2018.16.4.57]
- H. W. Kim, S. J. Kim, and J. Y. Choi, "Design and Implementation of Embedded System based on AM3359 Microprocessor", IEMEK Journal of Embed. Sys. Appl., 12(2), p89-96, Apr.), (2017.
- Cortex-A8 Technical Reference Manual Doc., https://developer.arm.com/docs/ddi0344/latest/, . [accessed: Dec. 18, 2018]
- AM335x Sitara Processors datasheet (Rev. J), http://www.ti.com/product/AM3359/technicaldocuments, . [accessed: Dec. 18, 2018]
2017년 : 부산대학교 전자공학과 (공학사)
2019년 2월 현재 : 부산대학교 전기전자컴퓨터공학과 석사과정
관심분야 : 임베디드시스템, 제어 시스템
2012년 : 부산대학교 전자전기공학부(공학사)
2015년 : 부산대학교 전자전기 컴퓨터공학부(공학석사)
2019년 2월 현재 : 부산대학교 전자공학과 박사과정
관심분야 : 임베디드시스템, 제어 시스템, 전력 시스템
1994년 : 포항공과대학교 전자전기 공학과(공학사)
1996년 : 포항공과대학교 전자전기 공학과(공학석사)
2002년 : 포항공과대학교 전자전기 공학과(공학박사)
2005년 3월 ~ 현재 : 부산대학교 전자공학과 교수
관심분야 : 임베디드 시스템, 제어 시스템