목 차 CAN 을왜사용하는가? 3 1. CAN to RS232 컨버터의개요 5 2. 패킷형식 9 3. Microchip Bit Timing calculator(mbtc) 사용설명서 터미널모드사용법 Utility 사용법 Acceptance

Similar documents
untitled

untitled

rev.2.0 Controller Area Network(CAN) to Ethernet Gateway 사용자매뉴얼 HW Rev.1.0 Firmware ve

BY-FDP-4-70.hwp

DSP_MON 프로그램 메뉴얼

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

SRC PLUS 제어기 MANUAL

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

Mango-E-Toi Board Developer Manual

hd1300_k_v1r2_Final_.PDF

일반적인 네트워크의 구성은 다음과 같다

개요

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

DSP_MON 프로그램 메뉴얼

슬라이드 제목 없음

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

(MHT-SB112\273\347\276\347\274\255.hwp)

Microsoft Word - PLC제어응용-2차시.doc

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

슬라이드 제목 없음

RS- 232, RS485 FND Display Module NET-SFND-4-23A RS-232, RS485 FND Display Module NET-SFND-4-23A MANUAL (Rev 1.0) Net-Control http

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

T100MD+

Nordic Chipset BLE Test Application Note

USB2CAN USB2CAN-UART USB2CAN-FIFO API Reference Manual Copyright NTREXLAB

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

Multi-CAN Analyzer & Converter User’s Manual

ISP and CodeVisionAVR C Compiler.hwp

MR-3000A-MAN.hwp

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Copyright All rights reserved. No part of this publication may be reproduced, transmitted, transcribed, or translated into any language or c

한글사용설명서

DVI-CL01 매뉴얼

1. 제품규격및특징 구분 규격및특징 입력전압 DC 12~30V 모터구동방식 Bipolar 방식 최대모터전류 Max 3.0A 초기설정정지전류 :4(0.46A), 구동전류 :18(1.75A) 분주비 0(x256), 1(x128), 2(x64), 3(x32), 4(x16),

UI TASK & KEY EVENT

제품소개 MODBUS Tester 는 MODBUS 프로토콜을사용하는산업장비테스트및점검하기위해 PC 를휴대및설치할필요없이쉽고빠르게장비와연결하여원하는작업을진행할수있도록휴대성을강조한 MODBUS 프로토콜테스트장치입니다. MODBUS Tester 에는 3 가지의기능이지원되며,

Microsoft Word - ASG AT90CAN128 모듈.doc

Microsoft Word MetOne237Bmanual

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

MAX+plus II Getting Started - 무작정따라하기

CAN 통신

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

API 매뉴얼

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

(SW3704) Gingerbread Source Build & Working Guide

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint Template

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

ATmega128

Microsoft Word - src.doc

PRO1_09E [읽기 전용]

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

The Pocket Guide to TCP/IP Sockets: C Version

API 매뉴얼

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

온습도 판넬미터(JTH-05) 사양서V1.0

목차 1. 개요 USB 드라이버 설치 (FTDI DRIVER) FTDI DRIVER 실행파일 USB 드라이버 확인방법 DEVICE-PROGRAMMER 설치 DEVICE-PROGRAMMER

MicrocontrollerAcademy_Lab_ST_040709

0.1-6

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - es-arduino-lecture-03

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

untitled

CPX-E-EC_BES_C_ _ k1

실험 5

adfasdfasfdasfasfadf

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

Windows 8에서 BioStar 1 설치하기

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

1


CANTUS Evaluation Board Ap. Note

Microsoft Word - PEB08_USER_GUIDE.doc

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft Word - Installation and User Manual_CMD V2.2_.doc

R50_51_kor_ch1

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

슬라이드 1

2주차: 입출력 제어 복습

TViX_Kor.doc

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

chap 5: Trees

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Implementation of FreeRTOS on LM3S811

歯메뉴얼v2.04.doc

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

슬라이드 1

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

Transcription:

http://www.dnkict.com admin@dnkict.com 2013-06-19 070-7011-4469 rev.4.1 Controller Area Network(CAN) to RS232 Converter 사용자매뉴얼 Firmware ver. 2.5 Utility ver. 2.0 Library ver. 1.0 H/W ver. 3.0 1

목 차 CAN 을왜사용하는가? 3 1. CAN to RS232 컨버터의개요 5 2. 패킷형식 9 3. Microchip Bit Timing calculator(mbtc) 사용설명서 15 4. 터미널모드사용법 18 5. Utility 사용법 21 6. Acceptance Mask 와 Filter 설정법 24 7. ActiveX control 사용법 26 8. OBD-II PIDs & CAN 프로토콜 31 9. 문제해결 41 2

CAN 을왜사용해야만하는가? 1. 노이즈에매우강하다. 레벨은다르지만 RS485 와비슷하게 twist pair 2 선을사용하여전기적 Differential 통신을하여전기적인노이즈에매우강하다 2. Multi Master 통신을한다. 통신버스를공유하고있는 CAN컨트롤러들은모두가 Master역할을하여언제든지버스를사용하고싶을때사용할수있다. RS485 의경우는 Master의요청이있을때만 Slave가수동적으로반응하므로단한개의 Master만존재하나 CAN은그렇지않다. 문제가발생한 CAN 노드는자동으로 CAN버스에서이탈되어다른노드에영향을주지않는다. LAN 통신과유사한면이많다. 3. 한개의버스라인에최대 110 개까지노드를연결할수있다. 4. 하드웨어적인오류보정이있다. 데이터프레임에는 15 비트 CRC 가 HW 적으로생성되서붙기때문에오류검출이가능하고만약오류가발생하더라도 HW 적으로알아서재전송하기때문에사용자는이에대해고려할필요가없다. 5. 하드웨어적으로설정된 ID만을골라수신받을수있다. CAN 에는수신필터가있어필터를어떻게설정하느냐에따라정해진 ID, 특정그룹또는전체수신을할수있다. 예를들어 ID 10번만받을수도있고, 0x40~0x4F까지의 ID에대해서도수신가능하게할수있다. 6. 실시간메시지통신을할수있다. 한번에 8바이트의데이터를전송하는 HW패킷을제공한다. 보통 RS232/RS485통신에서는패킷통신을위해사용자가일일이패킷형식을만들어주고수신시에도그런해석이필요하지만 CAN 은 8 바이트데이터를담는 HW 패킷통신을기본으로한다. 따라서사용자는데이터버퍼에데이터를쓰고전송만하면그외모든처리는 HW가알아서한다. 분산제어분야적용이용이하다. 7. 통신속도가빠르다. 최대 1 Mbps 까지사용할수있다. 8. 먼거리를통신할수있다. 최대 1000 m 까지도 50 kbps로통신할수있다. 9. 우선순위가있다. 컨트롤러의 ID 를어떻게설정하느냐에따라 ID 가낮을수록버스를사용할수있는우선순위가높아진다즉버스를 ID 1, ID2 가동시에쓰려고시도할때 id1 이먼저데이터를쓰고 id2 가다음으로쓸수있다. 우선순위로인해데이터전송이안되거나오랫동안지연되지않고하드웨어적으로중재처리되기때문에데이터의손실이나지연에대해고려할필요가없다. S/W 는단순전송만하면된다. 10. 사용되는전선의양을획기적으로줄일수있다. 데이지체인방식으로한선에추가적으로컨트롤러를연결만하여사용할수있다. 2 선만을사용하기때문에많은컨트롤러들이버스를공유하더라도추가되는선의양이거의없다. 11. PLUG & PLAY 를제공한다. 3

언제든지 CAN 컨트롤러를버스에연결하고끊을수있다. 12. 사용분야산업자동화분야 - 제어유닛, 센서, 액츄에이터, 기계제어, 물류의료분야 - 토모그라피, X 레이, 치과의자, 휠체어빌딩자동화 - 난방, 에어콘, 전등, 엘리베이터, 에스컬레이터집자동화 - 식기세척기, 세탁기, 커피포트... 사무자동화 - 복사기 * CAN 버스의안정성 * SIMENS 사의자료를보게되면 1 년에 2000 시간사용하고속도는 500 kbps로하고 25% 의버스로드를줄때 --> 1000 년에 1 회확인되지않는오류가발생한다. 4

1. CAN to RS232 컨버터개요 일반적으로 CAN은멀티마스터버스통신으로자동차산업이나기타실시간분산제어를요하는분야에자주이용되곤한다. 그러나처음경험하게되는사용자는접근이용이하지않으며 CAN을사용하기위한부수적인작업들이많이요구된다. 따라서 PC에서쉽게연결이가능하면서기초적인통신에해당하는 RS232를이용하여 CAN을좀더쉽게이용할수있도록본컨버터를개발하게되었다. 컨버터에는펌웨어가내장되어있어 CAN 통신프로토콜을분석하여 RS232 로데이터를전송하고또한 PC에서송신하는데어터도 CAN 프로토콜로전환하여 CAN버스에전송하게된다. 그렇기때문에사용자는 CAN에대해매우기본적인지식만알아도충분히사용할수있다. 1.1 특징 1) 40 MHz 로동작하는마이크로프로세서가내장 2) Dsub 9pin형식의 CAN 포트와, Dsub 9pin 형식의 RS232포트가각각한개씩내장 3) 82C250( 또는 MCP2551) CAN 트랜시버를사용 4) 최대 RS232 통신속도 230400 bps 5) 최대 CAN통신속도 1 Mbps 6) S/W적으로 CAN과 RS232 파라메터변경가능 7) CAN H/W Rx버퍼 8개, Tx버퍼 3개 8) 최대 1000m 의 CAN 통신거리 (CAN spec. 에의함 ) 9) CAN2.0A, CAN2.0B 지원 (Active Mode지원 ) 10) Standard(11bit) / Extended(29bit) ID mode 지원 11) CAN 터미네이터 (120 ohm) 점퍼내장 12) HW 공장초기화점퍼내장 13) Power. Rx, Tx, Error LED 내장 14) EEPROM 내장으로설정값보관 15) 외부의전기적열악한환경에의해발생하는 CPU 의오동작을피하기위한 watchdog 내장 16) 동작온도 : -25 to +75 17) 보관온도 : -40 to +80 CAN BUS RS232 Line 1.2 H/W 구성품 ( 별도구매 ) 1) CAN2RS232 컨버터 2) DC 5V power supply 3) RS232 Dsub 9pin Cable(1:1) 1.3 S/W 구성품 1) CAN bus Baud rate 및 Parameter 설정 Utility 2) CAN 통신예제 (VC++, Visual Basic) 3) 통신용 ActiveX 컨트롤 CAN H/W FIFO CAN S/W FIFO PROTOCOL Converter TERMINAL Emulator RS232 FIFO COMMAND Interpreter CAN2RS232 Converter Block Diagram 5

1.4 Dsub 컨넥터 PIN 구성 1) RS232 컨넥터 Pin 2 : Pin 3 : Pin 5 : Rx Tx Ground GND CAN_H CAN_L GND 2) CAN 컨넥터 Pin 2 : CAN_L Pin 7 : CAN_H Pin 3/6: GND (HW Rev3 only) CAN컨넥터 RS232컨넥터 1.5 CAN2RS232 컨버터보드설명 D1 D2 D3 D4 J3 J1 RS232 DSUB9 CON2 CAN DSUB9 DC5V (HW Rev.0~Rev.2) (HW Rev.3) JP1 CAN 터미네이터점퍼 J1 CAN 터미네이터점퍼 JP2 공장초기화점퍼 J3 공장초기화점퍼 JP3 5V TTL level RS232 포트 D1 전원 LED D1 전원 LED D2 에러 LED D2 에러 LED D3 CAN Tx LED D3 CAN Tx LED D4 CAN Rx LED D4 CAN Rx LED 1) 공장초기화점퍼 CAN2RS232 셋팅을완전초기화할때점퍼를삽입하고전원을입력하면다음과같은값으로초기화된다. RS232 Baud rate 115200 bps CAN Baud rate 1000 kbps CAN ID 0xFFFFFFFF 6

2) 터미네이터점퍼 CAN 통신의 spec 상최종끝단에는 120ohm 의저항을반드시연결해야한다. 따라서본컨버터가만약 CAN 버스의끝단에놓이게되면터미네이터점퍼를삽입한다. 3) DC 5V 전원 전원은외부전원 DC5V 를사용하며되도록함께포함된전원아답터를이용하고그렇지못한경우라도정전압 500mA이상 DC5V출력이나오는아답터를사용하길권장한다. 실수로극성 (+/-) 를반대로연결하지않도록연결전반드시확인한다. 만약반대로연결하거나 5V이상의고전압을연결하는경우컨버터가치명적인손상을입을수있다. 또한전원 GND는모든 CAN장치간반드시연결되어야한다. 그렇지않은경우는신호레벨이불안정하여 Bus Off와같은치명적인오류가발생할수있다. 4) LED POWER LED : 전원이입력되면점등된다. TX/RX LED : CAN 버스를통해데이터가전송될때점멸된다. ERROR LED : CAN 통신시에러가발생되면점등된다. 1.6 CAN2RS232 컨버터사용법 CAN Port Serial Port RS232Port 장치 #1 장치 #2 장치 #3 장치 #4 1) 컨버터의전원을인가하지않은상태에서컨버터의 RS232 포트와 PC 의시리얼포트에 NULL Modem 케이블 (1:1) 을이용하여연결한다. 2) 데이지체인형식으로연결된 CAN 버스라인을 CAN port 와연결한다. CAN port 연결시에는 1.4 절에서제시한 DSUB9 핀맵을확인하여착오없이연결한다. 3) 전원을연결한다. 최초에사용하는경우는공장초기화점퍼를삽입한상태에서전원을인가한다. 4) Windows 의시작메뉴에서다음과같이하이퍼터미널을실행한다. [ 시작 ]->[ 보조프로그램 ]->[ 통신 ]-> 하이퍼터미널 하이퍼터미널대신사용자가편리한통신터미널프로그램이있다면그것으로사용해도상관없다. 7

5) RS232 포트를설정한다. 컨버터가연결될 COM 포트를확인하여정확하게포트번호를입력하여주고 ( 예, COM1), 통신속도는 115200bps, 데이터비트느 8비트, 패리티는없음, 정지비트는 1비트, 흐름제어는없음으로선택하여설정하여준다. 6) 현재 CAN 버스에데이터의송수신이있다면화면에무언가깨지는문자들이보일것이다. 이때터미널에서스페이스바를 5 번연속으로입력하게되면터미널모드로진입하여사용명령어리스트가화면에출력된다. 7) 즉시 CAN 버스의데이터를확인하고자한다면 "RCV" 를입력하고 Enter 키를치면화면에수신되는데이터들이계속표시된다. 8) 그밖에설정은 4 장의터미널모드사용설명서를참조하여할수있다. 1.7. CAN2RS232 컨버터의제한 본컨버터의 CAN속도는최대 1Mbps이지만 RS232통신속도는이보다작기때문에 CAN버스대역폭을모두사용하는, 다시말해 CAN버스에데이터가끊임없이송수신된다면 RS232로전송되는양은 RS232 통신속도이상이될수없기때문에그이외의데이터는소실된다. 내부적으로 SW적인 Rx FIFO 와 Tx FIFO가있어 RS232통신으로데이터를보내고있는와중에도 CAN으로데이터가수신되더라도 FIFO크기만큼패킷을안전하게보관하여전송할수있지만그이상으로들어오는데이터는 RS232 로송신대기상태에있는데이터를소멸시키게된다. 이런경우상태비트중 overrun비트가셋팅된다. 또한순간적으로너무많은 CAN메시지가몰리는경우 HW적으로받을수있는 CAN 버퍼는몇개안되기때문에 CAN메시지간간격은가급적 1.5ms(115200bps사용시 ) 이상으로유지하는것이좋다. overrun이자주일어나는즉 CAN버스사용부하가매우큰경우는 CAN2USB를사용하면해결될수있다. USB는 CAN보다도속도가빠르기때문에이러한문제는발생할수없다. 1.8 CAN 버스라인길이에따른권장통신속도 SIMENS 사의자료를보게되면다음과같이 CAN 버스라인길이와그에따른 Bitrate 의상관관계그래프를볼수있다. 사용자는되도록아래의그래프에맞게통신속도를지정하여사용하는것이바람직하며, 이보다더높은속도로통신할때데이터를보증할수없다. 아래그래프는 twisted pair 선을사용했을때의조건이있다. 8

2. 패킷모드 (Packet Mode) PC와 CAN컨트롤러간 RS232통신으로데이터를주고받을때크게두가지형식이있다. 첫번째는바이너리통신방식인패킷방식인데이방식은유효한데이터만최적으로송수신하기때문에통신속도를최대한활용할수있으나프로그램으로만가능하고, 두번째로 ASCII통신방식인터미널방식으로사용자가하이퍼터미널과같은툴로쉽게대화형으로키보드와모니터를이용해데이터의흐름을확인할수있고또한제어할수있다. 본장에서는패킷방식에대해알아보고터미널방식에대해서는 4 장에서기술하였다. CAN 컨트롤러는다음과같은형식의패킷을사용한다. SYNC PID Length Data Checksum End Mark 1) SYNC 필드 (1byte) 모든패킷은 SYNC 필드로시작하며값은 0xF0 으로고정되어있다. 2) PID 필드 (1byte) 패킷 ID 를의미하며 SYNC 필드다음으로전송된다. 패킷 ID 라하면패킷별특수한기능을수행하기위해부여된특별한코드이다. 3) Length 필드 (1byte) 데이터의 byte 단위길이를의미한다. 4) Data 필드데이터필드의크기범위는 0~255 byte 이내이다. 만약데이터필드의값이 word (2byte) 나 double (4byte) 형식이면하위바이트가먼저전송된다. 5) Checksum필드 (1byte) Checksum 필드는 PID 필드부터 Data 필드까지의합이 1byte 로지정된다. 6) End Mark (1byte) 패킷의끝을의미하며 0xE0 으로고정되어있다. 2.1 PID 종류 다음테이블은 PID의종류와그에대한간략한설명을나타낸다. 번호 PID 설 명 길이 (byte) 방향 (To) 1 0x80 CAN 컨트롤러초기화 0 CAN 2 0x81 CAN 컨트롤러 ID를설정 5 CAN 3 0x82 CAN 통신속도를설정 1 CAN 4 0x83 RS232 의통신속도를설정 1 CAN 5 0x84 CAN으로데이터를송신 4~12 CAN 6 0x85 CAN으로부터데이터를수신 4~12 PC 7 0x86 CAN의상태를요구 0 CAN 8 0x87 CAN의상태를수신 6 PC 9 0x88 CAN통신오류를수신 1 PC 10 0x89 CAN의 Bit Timing설정 3 CAN 11 0x8A CAN 에러를 clear한다. 0 CAN 9

12 0x8B CAN Acceptance Filter & Mask설정 32 CAN 13 0x8C Firmware 버전요청 0 CAN 14 0x8D Firmware 버전응답 2 PC 15 0x91 CAN Filter & Mask 요청 0 CAN 16 0x92 CAN Filter & Mask 응답 32 PC 17 0xA4 CAN Error Count 요청 0 CAN 18 0xA5 CAN Error Count 응답 2 PC 19 0xC0 RS232 패킷통신이정상적으로이루어졌음을알림 0 PC 20 0xD0 RS232 패킷통신에오류가발생했음을알림 1 PC 2.2 각패킷별형식 다음은각 PID 별패킷형식을자세히설명하였다. 1) CAN 컨트롤러초기화 PC -> CAN 0xF0 0x80 0x00 Checksum 0xE0 CAN 초기화는사용초기에사용하거나에러가발생한경우에사용될수있다. CAN 컨트롤러는응답으로 ACK[0xC0] / NACK[0xD0] 을전송한다. ACK는설정이정상적으로완료되면보내고, NACK는패킷에오류가있거나설정시에러가발생한경우다. 2) CAN 컨트롤러 ID 설정 PC -> CAN 0xF0 0x81 0x05 Ext. ID ID (4) Checksum 0xE0 CAN 컨트롤러가메시지를수신받을 ID 를설정한다. 즉 CAN 라인에서메시지의목적지 ID 가설정된 ID 와동일한메시지만걸러서수신하게된다. 모든메시지를수신하고자하면 ID를 [0xFFFFFFFF] 로설정하면된다. Ext.ID 가 0인경우는 Standard ID Mode로 11비트 ID를지원하고, 1인경우는 Extended ID mode 로 29비트 ID를지원한다. CAN 컨트롤러는응답으로 ACK[0xC0] / NACK[0xD0] 을전송한다. ACK는설정이정상적으로완료되면보내고, NACK는패킷에오류가있거나설정시에러가발생한경우다. 3) CAN 컨트롤러통신속도설정 PC -> CAN 0xF0 0x82 0x01 brate Checksum 0xE0 Baudrate의값에따라다음과같은속도를지정할수있다. 사용자지정을하는경우는 [0x89] 패킷을이용하여통신속도설정파라메터값을설정해야한다. 0 : 125 kbps 1 : 250 kbps 2 : 500 kbps 3 : 1 Mbps 4 : User 10

만약 4. 사용자지정을선택한경우는 [0x87] 명령으로설정된 Bit Timing 값으로설정되어사용자가지정하는임의의속도를사용할수있다. CAN 컨트롤러는응답으로 ACK[0xC0] / NACK[0xD0] 을전송한다. ACK는설정이정상적으로완료되면보내고, NACK는패킷에오류가있거나설정시에러가발생한경우다. 4) RS232 통신속도지정 PC -> CAN 0xF0 0x83 0x01 brate Checksum 0xE0 Baudrate 의값에따라다음과같은속도를지정할수있다. 0 : 9600 bps 1 : 19200 bps 2 : 38400 bps 패리티 없음 3 : 57600 bps 데이터 8비트 4 : 115200 bps 흐름제어 없음 5 : 230400 bps CAN 컨트롤러는응답으로 ACK[0xC0] / NACK[0xD0] 을전송한다. ACK 는설정이정상적으로완료되면보내고, NACK 는패킷에오류가있거나설정시에러가발생한경우다. * 참조 : 230400bps 이상은 PC 자체에서는지원이안되며 usb2serial 컨버터를이용하면사용할수있다. PC 에따라서 usb2serial 컨버터를사용하는경우통신이안되는경우도있다. 5) CAN 데이터송신 PC -> CAN 0xF0 0x84 4~12 ID(4) Data(0~8) Checksum 0xE0 ID 는메시지를보내고자하는목적지 ID 를의미한다. Data 는전혀없을수도있고최대 8 개까지갖을수있다. 6) CAN 데이터수신 CAN -> PC 0xF0 0x85 4~12 ID(4) Data(0~8) Checksum 0xE0 ID는목적지 ID를의미하며 CAN컨트롤러의 ID가설정되어있는경우그 ID와동일한값이되나, [0xFFFFFFFF] 로컨트롤러 ID가설정되어있는경우는모든메시지를수신하기때문에 ID가일정한값이아닐수있다. Data 는전혀없을수도있고최대 8 개까지갖을수있다. 7) CAN 상태요구 PC -> CAN 0xF0 0x86 0x00 Checksum 0xE0 CAN 컨트롤러의현재상태를요구한다. 응답으로 CAN 컨트롤러는 [0x87] 패킷을전송한다. 11

8) CAN 상태수신 CAN -> PC 0xF0 0x87 0x08 Status CAN ID(4) BRGCON1 BRGCON2 BRGCON3 Checksum 0xE0 CAN 컨트롤러의현재상태와 ID를수신받는다. Status의각비트는다음과같은의미를갖는다. Bit 0 : Buffer Overrun Bit 1 : CAN Error Warning Bit 2 : CAN Receiver Warning Bit 3 : CAN Transmitter Warning Bit 4 : CAN Receiver Bus Passive Bit 5 : CAN Transmitter Bus Passive Bit 6 : CAN Transmitter Bus Off Bit 7 : Standard ID Mode(0) / Extended ID Mode(1) BRGCON1~3 에대한자세한내용은 10) 항의 CAN 통신파라에터설정에기술되어있다. 위에설명된내용중 Error, Passive, Bus Off 등은다음과같이 Rx,Tx 에서각각발생한에러수를카운팅하여그숫자에따라상태가변경된다. 즉, Rx 또는 Tx 의에러수가 127 보다작으면 Error Active 가되고, 그이상이되면 Error Passive 가된다. Error Passive 상태에서또 Tx 에러수가 255 를넘어서게되면 Bus Off 가된다. Bus off 상태에서는연속적인 11 개의 ressesive 비트가 128 회발생하면 (Bus off 회복시퀀스 ) Bus off 상태를회복하여다시 Error Active 상태로된다. 9) CAN 오류수신 CAN -> PC 0xF0 0x88 0x01 Status Checksum 0xE0 0x86 과동일한 Status 값을갖지만이패킷은 CAN 통신의 H/W 적인오류가발생할때 CAN 컨트롤러가 PC 로전송하는패킷이다. Error 가 Clear 되기전까지 1 회만전송한다. 12

* 현재버전에서는지원하지않는다 10) CAN Bit Timing 설정 PC -> CAN 0xF0 0x89 0x03 BRGCON1 BRGCON2 BRGCON3 Checksum 0xE0 CAN의통신속도를사용자지정으로한경우직접통신속도에대한각파라메터를설정한다. 설정값 BRGCON1~3 는 Microchip CAN Bit Timing Calculator 에서출력된결과값이다. 그것의사용법은다음장에서다룬다. CAN 컨트롤러는응답으로 ACK[0xC0] / NACK[0xD0] 을전송한다. ACK는설정이정상적으로완료되면보내고, NACK는패킷에오류가있거나설정시에러가발생한경우다. 각파라메터의필드내용은다음과같다. BRGCON1 BRGCON2 BRGCON3 Bit 0 Bit 0 Bit 0 Bit 1 Bit 1 prseg Bit 1 seg2ph Bit 2 Bit 2 Bit 2 brp Bit 3 Bit 3 Bit 3 0 Bit 4 Bit 4 seglph Bit 4 0 Bit 5 Bit 5 Bit 5 0 Bit 6 Bit 6 sam Bit 6 wakfil sjw Bit 7 Bit 7 segphts Bit 7 0 * 약어설명 BRP baud rate prescalar SJW synchronized jump width PRSEG propagation time select SEGLPH phase segment 1 SAM sample of the can bus line SEGPHTS phase segment 2 time select SEG2PH phase segment 2 time select WAKFIL selects can bus line filter for wake-up * 다음은위파라메터가적절히표시된 Bit Timing Diagram 예이다. 11) CAN 에러 clear PC -> CAN 0xF0 0x8A 0x00 Checksum 0xE0 CAN 통신시발생한에러에대해 Clear 를해준다. Clear 되기전까지 CAN 컨트롤러는에러에대한패킷 13

[0x88] 을재전송하지않는다. CAN 컨트롤러는응답으로 ACK[0xC0] / NACK[0xD0] 을전송한다. ACK는설정이정상적으로완료되면보내고, NACK는패킷에오류가있거나설정시에러가발생한경우다. 12) CAN Acceptance Mask & Filter 설정 PC -> CAN 0xF0 0x8B 32 Mask1(4) Mask2(4) Filter1(4) Filter2(4) Filter4(3) Filter4(4) Filter5(4) Filter6(4) Checksum 0xE0 사용자가임의로 Acceptance Filter 와 Mask 를변경하기위해서는먼저 CAN ID 를 [0xFFFFFFFE] 로변경하고상위의패킷명령을전송하면된다. Mask 와 Filter 설정에대한자세한내용은 6 장에기술되어있다. 13) Firmware 버전요청 PC ->CAN 0xF0 0x8C 0x00 Checksum 0xE0 현재 CAN to RS232 컨버터에내장된펌웨어의버전을요청한다. 이에대한응답패킷은 [0x8D] 이다. 14) Firmware 버전응답 CAN -> PC 0xF0 0x8D 0x02 Ver. Major Ver. Minor Checksum 0xE0 [0x8C] 패킷에대한응답패킷으로 Major 와 Minor 버전을전송한다. 두버전의표시형식은 Major.Minor 이다. 예를들어 Major 가 1 이고, Minor 가 0 이면실제버전은 1.0 이된다. 15) CAN Acceptance Filter & Mask 값요청 PC -> CAN 0xF0 0x91 0x00 Checksum 0xE0 현재 Converter 에설정된 Filter 와 Mask 값을요청한다. 이에대한응답패킷은 [0x92] 이다. 16) CAN Acceptance Filter & Mask 값응답 CAN -> PC 0xF0 0x92 32 Mask1(4) Mask2(4) Filter1(4) Filter2(4) Filter4(3) Filter4(4) Filter5(4) Filter6(4) Checksum 0xE0 [0x91] 요청에대해현재 Converter 에설정된 Filter 와 Mask 값으로응답한다. 17) CAN Error Count 요청 PC -> CAN 0xF0 0xA4 0x00 Checksum 0xE0 현재 Converter 에발생된 CAN 에러카운트값을요청한다. 응답은 [0xA5] 로한다. 14

18) CAN Error Count 응답 CAN -> PC 0xF0 0xA5 0x02 Rx Cnt(1) Tx Cnt(1) Checksum 0xE0 [0xA4] 에대한응답으로현재 CAN 에러카운트값을응답한다. Rx 와 Tx 에대해각각 1 바이트크기를갖는다. 19) Acknowledge CAN -> PC 0xF0 0xC0 0x00 Checksum 0xE0 메시지를송수신하는것을제외하고 CAN컨트롤러를설정하는경우명령전송후문제가없이처리되면이패킷을 PC 로전달한다. 만약 100 ms 이내에이패킷이수신되지않으면다시전송할필요가있다. 20) Not Acknowledge CAN -> PC 0xF0 0xD0 0x01 Error Checksum 0xE0 메시지를송수신하는것을제외하고 CAN 컨트롤러를설정하는경우명령전송후문제가발생하게되면이패킷을 PC로전달한다. 만약 100 ms이내에이패킷이수신되지않으면다시전송할필요가있다. Error = 0x01 Checksum 에러 0x02 잘못된 PID 0x03 기타 0x04 잘못된 paramter 0x05 잘못된길이 15

3. Microchip Bit Timing calculator(mbtc) 사용설명서 MBTC 는사용자가원하는형식의 CAN 통신을하기위한 CAN 통신파라메터를계산해주는툴이다. 본실행파일은 http://www.intrepidcs.com 에서다운받을수있다. 먼저 MBTC 를설치하고 ics2510bittime.exe 를실행하면다음과같은화면을볼수있다. 그림 1 초기화면에서입력값이 OSC 주파수와 CAN통신속도이다. OSC주파수는 CAN2RS232 컨버터내부에사용하는 CPU clock으로 40 Mhz이다. CAN 통신속도는원하는값을입력하고 [>] 버튼을클릭하면다음화면으로진행된다. 그림 2 16

그림2에서는통신에러가 0% 가되는최적의파라메터값의리스트를보여준다. 이값은그냥참고만하고다음으로진행하기위해 [>] 버튼을클릭한다. 그림 3 그림 3 에서사용자는원하는파라메터를세밀하게변경할수있다. 그러나설정된파라메터로 Error 율이 0% 가되지않는다면 [Generate Report] 버튼이활성화되지않는다. 그런경우는파라메터를다시재조정한다. 모든설정이완료되었으면 [Generate Report] 버튼을클릭하여다음의 Report 를출력한다. 17

위의 report 에서이용하는값은맨마지막부분의 BRGCON1, BRGCON2, BRGCON3 이다. 위의예에서는각각 0x00, 0xBA, 0x07 로, 그값을설정하러면패킷 [0x89] 의파라메터로전송하면된다. 18

4. 터미널모드사용법 터미널모드를사용하기위해서는쉽게윈도우에서제공하는하이퍼터미널로이용할수있다. 먼저하이퍼터미널을실행하고통신설정을하고시리얼포트를 open 한다. 터미널모드로진입하기위해서는터미널에서 space 키를연속해서 5 번입력한다. 그럼다음과같은화면이표시되면서터미널모드로진입하게된다. << CAN2RS232 CONVERTER Terminal >> +- syntax -+ function ----------------+ INI CAN controller initialize EID Set 11/29 bit ID mode SID [hex8] Set CAN ID (Hexa Code) CBR Set CAN baud rate SCP Set CAN parameters RBR Set RS232 baud rate RCV Start receiving message SND Send message STS Request status CLR Clear error EXT Exit terminal mode +----------+--------------------------+ 다음은각명령에대한사용법을기술하였다 1) INI CAN 컨트롤러를초기화하면버퍼에있는모든데이터는클리어한다. 성공하면 OK, 그렇지않으면 ERROR 가표시된다. 2) EID Standard ID(11 비트 ) 모드를사용할지 Extended ID(29 비트 ) 모드를사용할지선택하는명령이다. 명령을실행하면다음과같은메시지가화면에표시되며 0 또는 1 을선택할수있다. 0: Standard ID(11bit) mode 1: Extended ID(29bit) mode 3) SID CAN 의 ID 를설정하는것으로 'SID 0000001A' 형식으로입력한다. 여기서 ID 는 32 비트 16 진수이다. [FFFFFFFF] 를입력하면모든데이터를받고, [FFFFFFFE] 를입력하면사용자가설정한 Acceptance Mask 와 Filter 를사용할수있다. 성공하면 OK, 그렇지않으면 ERROR 가표시된다. 4) CBR CAN 의통신속도를선택하는명령어로 CBR 을입력하면다음과같이화면에출력되며원하는속도에 19

해당하는번호 (0~4) 를선택하여입력한다. 0 : 125 kbps 1 : 250 kbps 2 : 500 kbps 3 : 1000 kbps 4 : User Press the No.[0-4]? 성공하면 OK, 그렇지않으면 ERROR 가표시된다. * 주의사항 : 이명령을사용하기위해서는 CAN 라인에데이터가수신되지않아야하며수신되고있는경우에는 ERROR 가표시될수있다. 그러한경우는 CAN 컨트롤러의전원을껏다켜주면설정된값으로동작한다. 5) SCP CAN 통신속도설정이 User 모드로되어있는경우속도를결정하는 parameter 인 BRGCON1/BRGCON2 BRGCON3 의값을설정하는명령이다. User 모드가아닌경우는변경하더라도즉시적용되지않고 User 모드로변경되이후에적용된다. SCP 를터미널에서입력하면다음과같은메시지가출력되며사용자는 16 진수두자리숫자를공백으로분리하여 3 개를입력해야한다. BRGCON1(2) BRGCON2(2) BRGCON3(2)? [ 예제 ] >> BRGCON1(2) BRGCON2(2) BRGCON3(2)? 81 E0 42 6) RBR RS232 의통신속도를선택하는명령어로 RBR 을입력하면다음과같이화면에출력되며원하는속도에해당하는번호 (0~6) 를선택하여입력한다. 0 : 9600 bps 1 : 19200 bps 2 : 38400 bps 3 : 57600 bps 4 : 115200 bps 5 : 230400 bps Press the No.[0-5]? 성공하면 OK, 그렇지않으면 ERROR 가표시된다. 7) RCV CAN 데이터를수신하기시작하면서화면에다음과같은형식으로데이터를출력한다. 아무키나누르게되면수신을중지한다. CAN_ID DATA0 DATA1 DATA7 20

데이터수신을시작할때 "[[ Data Logging Start ]]" 가표시되고, 중지되는경우 "[[ Data Logging Stop 가표시된다. * 알림 : CAN 데이터량이 RS232 속도로처리할수있는정도라도데이터를 Binary( 패킷형식 ) 가아닌 ASCII 형식으로출력하기때문에시간이많이소요됨에따라데이터를수신하는 Rx FIFO 가 Overrun 되어데이터를소실할수있다. 8) SND CAN버스에데이터를다음과같은형식으로입력된데이터를전송한다. SND CAN_ID DATA0 DATA1 DATA2 DATA3 [example] SND 0000001A 15 3F 4E 8A 모든데이터는 16 진수로입력하고 ID 는 8 자리, DATA 는 2 자리로입력하고각필드사이는 space 로 띄워준다. 단데이터수는 CAN spec상최대 8개까지밖에입력할수없다. 9) STS 현재의상태를요청하는명령으로다음과같은출력을 CAN컨트롤러가보여준다. Version 2.0 CAN_ID FFFFFFFF (All Accepted) CAN BaudRate 1000 kbps CAN Param 00/BA/07 RS232 BaudRate 115200 bps Error Warning 0 Rx/Tx Warning 0 Rx/Tx Bus passive 0/0 Bus off 0 Overrun 0(HW):0(RX FIFO):0(TX FIFO) Error Count 0(RX)/0(TX) Extended ID mode 0 UART Overrun RX:0/TX:0 Mask1,2 FFFFFFFF,FFFFFFFF Filter1-3 FFFFFFFF,FFFFFFFF,FFFFFFFF Filter4-6 FFFFFFFF,FFFFFFFF,FFFFFFFF 10) CLR 현재에러비트들을클리어한다. 경우에따라치명적인것들에대해서는에러비트가클리어되지않기때문에 CAN 컨트롤러의전원을껏다켜준다. 정상동작후에 OK 를표시한다. 11) EXT 터미널모드를종료하고패킷모드로전환한다. 21

5. Utility 사용법 PC에서쉽게 CAN 버스의상태를확인하고 CAN2RS232 컨버터의설정을변경하고자하는경우에사용할수있다. 프로그램은크게 Setup, Monitor, OBD-II Monitor 부문으로나눠져있으며 Monitor에서는 CAN버스의데이터흐름을실시간으로관찰할수있으며, Setup에서는컨버터의각종설정갑을변경할수있다. OBD-II모니터는차량에사용되는 OBD-II의몇몇 PID에대한모니터링값을표시하며 8장에자세히설명된다. 5.1 초기작업 1) 컨버터를 PC에 RS232케이블을이용하여연결하고컨버터의전원을인가한다. 2) Tester 프로그램을실행하고 RS232 케이블을연결한 COM 포트를확인하여 [Setup] 에서 Port 를설정한다. 3) [Connect] 버튼을눌려컨버터와연결한다. 그러면 [Monitor] 탭이활성화된다. 5.2 설정작업 [Setup] 1) 모든설정작업은 [Setup] 탭에서할수있다. 이탭에서할수있는작업은다음과같다. 22

- RS232 Port 와속도및 CAN 통신속도변경 - CAN ID 및표준 / 확장 ID모드설정 - 비트타이밍및 Acceptance 필터와마스크설정 2) 모든설정값을변경한후 [Set] 버튼을클릭해야컨버터에실제적으로적용되며적용결과상태는 [Information] 창에서확인할수있다. 3) 만약 [Set] 버튼을눌러설정하려할때 [Information] 창에 Timeout 에러가출력되면다음과같은원인과해결방법이있다. - RS232포트또는속도설정이잘못되었을경우 COM 포트변호를변경하거나 [Auto Detect] 버튼으로을클릭하여속도를찾는다. - 컨버터의전원이제대로인가되지않아전원 LED가켜져있지않을때는전원을연결한다. - 컨버터가터미널모드로되어있는경우는패킷모드로전환할때까지패킷모드명령을무시하므로컨버터의전원을껏다다시켜거나하이퍼터미널에서패킷모드로전환하는명령어인 'EXT' 를입력하여패킷모드로전환한다. - 위의작업이안되면공장초기화점퍼를삽입한상태에서전원을인가하여본다. 5.3 모니터링 1) [Status] 버튼 현재의 CAN ID, Status Code 그리고 CAN 파라메터값들을표시하여준다. 숫자는 16 진수로표시된다. 2) [Clear] 버튼 Information 창아래에있는버튼은 Information 창에기록된내용을모두지울때사용하고화면의하단에있는버튼은 [Received Data] 창에있는수신데이터기록을삭제할때사용한다. 3) [Receive] 체크박스 수신되는데이터를화면에표시하여준다. 실제데이터가수신되더라도이박스를체크하지않는다면데이터는보여지지않는다. 4) [Auto Snd] 버튼 데이터전송을테스트할때사용하는기능으로 CAN ID 는 0 부터 0x7FF 까지순차적으로증가하고각 ID 에대해 0 부터 255 까지순환하면서증가하는데이터값 8 개를갖는패킷을전송한다. 즉, CAN ID Data 0 00 01 02 03 04 05 06 07 1 08 09 0A 0B 0C 0D 0E 0F 2 10 11 12 13 14 15 16 17 3 18 19 1A 1B 1C 1D 1E 1F : 7FF F8 F9 FA FB FC FD FE FF 23

5) [Send] 버튼 한개의패킷을임의로생성해서전송하고자하는경우사용되는버튼이다. Send Packet 프레임내에있는 Dest.ID 에목적지의 ID 를입력하고, 전송할바이트값을 (0~8 사이값 ) Len 에입력하며, D0~D7 데이터를입력한다. 모든입력이끝난후 [Send] 버튼을클릭하면입력된형식으로패킷이생성되어전송된다. 5.4 주의사항 1) User Filter 를사용하는경우는 CAN ID 가반드시 FFFFFFFE 이어야하며 User Filters 를선택한경우에는자동적으로 CAN ID 가 FFFFFFFE 로변경되고수정할수없는상태가된다. 2) RS232 통신속도를모르는경우에는 [Auto Detect RS232] 버튼을클릭하여쉽게알아낼수있다. 3) 사용자가설정한 Bit Timing 값을사용하기위해서는 CAN Baud Rate 가 [User] 모드로되어있어야한다. 그렇지않은경우는컨버터 EEPROM 에값만저장되고적용되지않는다. 4) CAN 버스패킷데이터를수신하기위해서는 [Monitor] 탭의 [receive] 를체크한다. Received Data 에표시되는내용중 Time Stamp 는프로그램이패킷을수신한시간을 milisecond 로표시한것이다. 24

6. Acceptance Mask 와 Filter 설정법 Acceptance Mask와 Filter의용도는 CAN수신버퍼로들어오는다양한메시지데이터에대해서원하는특정 ID나또는특정범위또는특정패턴의 ID에대해서만수신가능하도록하기위해 ID와 Mask와 Filter간에정해진비트조작을하여얻어진결과물이모두참이되는경우수신하도록하는메커니즘에사용된다. 본컨버터에서는 2개의 Mask를제공하고각 Mask별로각각 2개와 4개의 Filter를제공한다. 기본적으로 Mask, Filter 그리고메시지 ID 간상관관계에따른 acceptance 에대한진리표는 [ 표 1] 과같다. 표1. Filter & Mask 진리표 Mask bit n Filter MSG ID Accept bit bit n bit n 0 x x Accept 1 0 0 Accept 1 0 1 Reject 1 1 0 Reject 1 1 1 Accept x : don t care 수식과디지털논리회로로표현하면다음과같다. Accept? = not Mask or not(filter xor ID) 즉좀더쉽게풀어서설명하면 Mask 비트가 0 이면 ID 가어떤값이와도 Accept 를하고, 1 인경우는필터비트와 ID비트값이동일한경우 Accept를하게되고다르면 Reject한다. 위와같은방법으로 11또는 29비트각각의비트계산을하고각비트모두가 1이되는경우 Accept하게된다. 이해를돕기위해 Standard ID모드 (11비트) 에서몇개의예를들어보자. 예1) Mask = 0x000, Filter = 0x7FF 모든 mask비트가 0이기때문에 filter값에상관없이모든 ID에대해모두 Accept한다. Mask 00000000000 Filter 11111111111 ID xxxxxxxxxxx 계산값 11111111111 예 2) Mask = 0x7F0, Filter = 0x080 25

mask가 0x7F0이므로상위 7비트에대해서만고려하고, filter의상위 7비트와동일한상위 7 비트를같는모든 ID 를수신하게된다. 즉수신 ID의범위는 0x080~0x08F 이다. Mask 11111110000 Filter 00010000000 ID 0001000xxxx 계산값 11111111111 고려되는비트 (Mask 가 1 인부분 ) 이런식으로 Mask 과 Filter 는관련성이있고, 1 개의 Mask 에몇개의 Filter 가있는이유는좀더세밀하게수신 ID 를설정하기위함으로, filter 를좀더많이사용하면분산된여러범위의 ID 에대해서수신하게할수있다. 26

7. ActiveX control 사용법 패킷모드를좀더편리하게사용하기위해 ActiveX 컨트롤을제공한다. 이것은 Visual Basic 나 VC++ 에서 RS232 통신에대한프로그래밍기술이없어도단순히컨트롤을추가하고몇가지설정만함으로써간단히컨버터와통신을할수있게도와준다. 아래그림은 ActiveX 컨트롤을이용한 Visual Basic 예제프로그램이다. 7.1 ActiveX 컨트롤 Visual Basic 에등록방법 1) CTRL+T 키를누르면 Component 리스트를다음과같이볼수있다. 2 1 27

위그림에서 (1) 의 [Browse..] 키를눌러 can2rs232.ocx 파일을찾아선택하여준다. 그럼 (2) 와같이 CAN2RS232 ActiveX control module이추가되며그림과같이체크하여선택한다. 작업을완료하면 [ 확인 ] 버튼을클릭하고종료하면 Visual Basic 의컴포넌트창에와같은아이콘이생성된다. 7.2 메소드함수 메소드함수는컨버터의초기화, 설정변경및상태요구등을하기위한명령들의의미한다. 다음은각메소드들에대해함수의원형및매개변수와리턴값에대해기술하였다. 1) boolean Initialize (short port, long brate) 컨버터와연결을위해시리얼포트를초기화한다. 28

port : 시리얼포트를의미함, COM1인경우숫자 1을입력 brate : baud rate 를의미함, 9600,19200,38400,57600,115200,230400 리턴값 : 초기화가실패하거나포트또는 baud rate가잘못된경우는 false를 리턴 2) void SetCanBaudRate (short baudrate) CAN baud rate 를설정한다. baudrate : 0 (125k), 1(250k), 2(500k), 3(1Mbps), 4 (User Bit Timing) 3) boolean SetRs232BaudRate (long baudrate) 시리얼포트의 baud rate 를설정한다. baudrate : baud rate를의미함, 9600,19200,38400,57600,115200,230400 리턴값 : 설정에성공하면 true를리턴함 4) boolean SetCanID (boolean extmode, long canid) CAN ID 를설정한다. extmode canid 리턴값 : Extended ID를사용하려면 true, Standard ID를사용하려면 false : 설정할 ID숫자를입력, standard ID모드인경우값을 0x7FF 이하로설정 : 설정에실패하거나 CAN ID 범위가잘못된경우 false를리턴 5) void SetBitTiming (short BRGCON1, short BRGCON2, short BRGCON3) User baud rate 에사용할 Bit Timing 값을설정한다. BRGCON1 BRGCON2 BRGCON3 : MBTC 의출력결과값 : MBTC 의출력결과값 : MBTC 의출력결과값 6) void SetAcceptacneFilter(long mask1, long mask2, long filter1, long filter2, long filter3, long filter4, long filter5, long filter6) CAN의 Acceptance에대한 Mask와 Filter값을설정한다. filter1~2 까지는 Mask1 과한쌍이고, filter3~6 가지는 Mask2 와한쌍이다. 7) void ReqCanStatus() CAN 의상태값을요청한다. 결과값은 RspCanStauts 이벤트로받을수있다. 29

8) void Close() 시리얼포트를닫는다. 8)boolean SendMessage (long canid, short len, short data0, short data1, short data2, short data3, short data4, short data5, short data6, short data7) 지정된목적지 ID 에길이 len 의데이터 (data0~8) 를전송한다. canid : 목적지 CAN ID len : 메시지데이터의길이 (0~8) data0~7 : 메시지데이터 7.3 이벤트함수 이벤트함수는컨버터가데이터를수신하거나, 명령작업을완료하거나, 기타요구에응답하는등, 특정한상황에인터럽트처럼호출되는함수이다. 1) void PacketReceived(long canid, short length, short data0, short data1, short data2, short data3, short data4, short data5, short data6, short data7) 본이벤트함수는 CAN 버스로부터데이터를수신한경우호출된다. canid : 수신한데이터의목적지 ID를의미함. length : 데이터의길이로 0~8 사이값을갖음 data0~7 : 수신데이터 2) void ProtocolAcknowlegde (boolean iserror, short ErrCode) Set~ 형태의메소드에대한결과를알려주는이벤트함수이다. iserror ErrCode : 설정한명령이제대로수행완료되었는가를의미 : iserror가 true인경우다음과같은값을갖음 1 : Checksum 에러 2 : 잘못된 PID 3 : 기타오류 3) void RspCanStauts(short status, long canid, short BRGCON1, short BRGCON2, short BRGCON3) ReqCanStatus 메소드명령에대한응답이벤트함수이다. status : 현재컨버터의상태를나타냄, 자세한내용은 [0x87] 패킷내용을 30

canid BRGCON1 BRGCON2 BRGCON3 참조 : 설정된 CAN ID 값 : Bit Timing값 : Bit Timing값 : Bit Timing값 31

8. OBD-II PIDs & CAN 프로토콜 OBD 는 On Board Diagnostic 의약자로차량의자체진단이나성능보고를하기위해사용되는일반적인용어이다. OBD System 은차량의다양한서브시스템의건강싱태에운전자나기술자들이접근할수있는방법을제공한다. OBD 를통해얻을수있는수많은진단정보는 1980 년대이후로온보드컴퓨터가차량에탑제되면서점차확대되었고최근에는 OBD-II 로버전업되었다. OBD-II 의 PID 즉 Parameter ID 는차량진단기기차량으로작동상태를요구하는코드이다. 다른이름으로 P-code라고도부른다. 이코드는자동차협회표준인 SAE-J2012에정의되어있다. 일반적으로차량의 OBD-II 포트를이용하여차량의상태를진단하는경우는 PID를이용하게된다. 우리나라에서도최근에생산되는대부분의차량에서 OBD포트를지원하며, 대부분의 PID를지원하나모든차량이모든 PID를지원하는것은아니다. OBD포트를이용해 PID를요청하는경우는 PID뿐만아니라, Mode값도전송해야하는데 Mode에는다음과같은것들이있다. 01h Show current data 02h Show freeze frame data 03h Show stored Diagnostic Trouble Codes 04h Clear Diagnostic Trouble Codes and stored values 05h Test results, oxygen sensor monitoring (non CAN only) 06h Test results, other component/system monitoring (Test results, oxygen sensor monitoring for CA 07h Show pending Diagnostic Trouble Codes (detected during current or last driving cycle) 08h Control operation of on-board component/system 09h Request vehicle information 0Ah Permanent DTC's (Cleared DTC's) 다음은각 PID 별코드값과설명및관련표시공식을계산하는테이블이다. Formula 에서 A 와 B 는 Response CAN 패킷중 Value 부분의첫번째바이트와두번째바이트를의미한다. 32

33

34

35

36

37

38

테이블의보다자세한내용은 "http://en.wikipedia.org/wiki/obd-ii_pids" 를참조한다. 실제 Mode 와 PID 값을전송하여차량으로부터정보를얻기위한프로토콜또는 8 바이트 CAN 패킷의형식은다음과같고매우단순하다. 이를위해 ISO15765 스펙을알필요는없다. 1. Query ( 값요청 ) 2. Response ( 차량응답 ) 39

위의형식데로 CAN2RS232 Test Application 의 OBD-II Monitor 탭에서구현되어지정된시간에따라각센서상태를모니터링하게하였다. 다음은 OBD-II Monitor 화면이다. 40

9. 문제해결 본컨버터를사용하는중에발생할수있는문제점과해결방법에대해기술하였다. 기술방법은질문과그에대한답변형식으로한다. Q1. 설정을변경했는데전원을껏다가다시켜도설정값이변경되지않는다. A. 공장초기화점퍼가삽입된상태에서전원이인가되면이전에설정된값을무시하고초기출하시의설정값으로재설정되므로, 변경된설정값을유지하고싶으면공장초기화점퍼를빼놔야한다. Q2. 설정을잘한것같은데 CAN 통신이전혀안된다. A. CAN라인이연결되어있는여러컨트롤러중에양쪽끝의컨트롤러에터미네이터점퍼를제대로삽입하였는가확인하고, CAN_H, CAN_L 라인연결이제대로되어있는지확인하다. 또한 RS232 연결선을사용자가임으로제작하여사용하거나구매한경우 Rx, Tx라인이 1:1 로연결되어있는지도확인한다. Q3. 패킷모드로프로그램에서아무리명령을줘도아무런응답을하지않는다. A. 간혹터미널모드로작업하다가 EXT명령으로종료하지않은상태에서다른패킷모드프로그램을실행하는경우가있는데이때프로그램은아무런응답을하지않게된다. 이런경우는다시터미널프로그램을실행하고 'EXT' 명령을실행하고패킷모드로전환한다음작업을한다. Q4. 터미널모드에서 RS232 통신속도를변경했는데그이후부터컨버터가아무런동작을하지않는다. A. 예를들어, 115200bps 에서작업중에 RBR 명령으로 9600bps 로변경하게되면컨버터의통신속도는 9600bps로바뀌지만, 터미널프로그램의통신속도는 115200 bps이기때문에당연히터미널에서입력하는것에반응하지않는다. 따라서컨버터의통신속도를변경할때터미널의통신속도도같게변경해주어야한다. Q5. 어떤조취를취해도컨버터가아무런반응을하지않는다. A. 컨버터는내부적으로 RS232 TX/RX 선이 Cross 되어있기때문에 PC 와연결하고자하는경우반드시 1:1 시리얼케이블또는널모뎀케이블을사용해야한다. 시중에는 TX/RX 가서로 Cross 되어있는 FX 케이블과 Tx/Rx 가 1:1 로연결된널모뎀케이블등, 2 종류를판매하고있기때문에구매시필히확인해야한다. 만약 FX 케이블을사용하게된다면컨버터는전혀반응을하지않게된다. 또한 1:1 케이블을사용하였는데도통신이안된다면케이블의 2,3,5 번핀끼리연결이되어있는지테스터로확인하여케이블의이상유무를확인한다. Q6. Bus off 와같은현상이나같은패킷이두번이상들어오는등이상동작하며, Error LED 가점등된다. A. Bus Off 와같은 CAN 통신의중대한오류가자주발생하는경우는 CAN 장치간의전원 GND 가제대로연결되지않는경우에발생될수있다. 이런경우는통신속도가매우느리더라도신호레벨이불안정하여발생할수있는경우로, 반드시 CAN 장치간에는전원끼리의 GND 를연결해주어야한다. 41