BC/NW 2018 № 2 (33):5.1

РАЗРАБОТКА МАКЕТА АППАРАТНО –ПРОГРАММНОГО СИМУЛЯТОРА CAN

Абросимов Л.И., Калязин В.А.

Введение

CAN (Controller Area Network) –двухпроводная  последовательная магистраль, обеспечивающая объединение в сеть устройств ввода/вывода, датчиков и исполнительных устройств . Предназначена для организации высоконадежных недорогих каналов связи в распределенных системах управления.           Характеризуется протоколом, обеспечивающим возможность нахождения на магистрали нескольких ведущих устройств,  передачу данных в реальном масштабе времени, эффективную коррекцию ошибок, и  высокую помехоустойчивость. Элементная база CAN насчитывает сотни микросхем индустриального и специального назначения, выпускаемых в больших объемах. Разработанный в 80-х годах 20 века фирмой Роберт Бош, в настоящее время стандарт широко применяется в промышленной автоматизации, на транспорте, в авиации, медицине и изделиях спецназначения.

Стандарт   ISO 11898 (ГОСТ Р ИСО 11898-12015 );

Максимальная скорость передачи 1 Мбит/с;

Максимальная длина линии          до 10000 м;

Характер сигнала,       Дифференциальный сигнал;

Линия передачи  Витая пара.

 

Расстояние, м

40

50

100

250

500

1000

2500

5000

10000

Скорость,Кбит/с

1000

800

500

250

125

50

20

10

5

 

Стандарт CAN состоит из физического уровня и уровня передачи данных, определяющего несколько различных типов сообщений, правила разрешения конфликтов при доступе к шине и защиту от сбоев. Скорость передачи задается программно. Проектировщик выбирает скорость, исходя из длины линии связи, числа узлов, состояния линии, и уровня помех. Максимальное число узлов на линии связи фактически определяется нагрузочной способностью применяемых трансиверов. Для управления доступом к шине используется неразрушающее bit–wise разрешение конфликтов. В сообщениях отсутствуют явные адреса, вместо этого каждое сообщение содержит числовое значение, которое управляет его очередностью на шине, а также может служить идентификатором содержимого сообщения. Протокол имеет продуманную схему обработки ошибок, обеспечивающую повторную передачу сообщений, если они не были получены должным образом, и эффективные средства для изоляции сбоев, и сбойных узлов шины. Общая вероятность необнаруженной ошибки составляет 4.7x10-11.

 

 

1.     Аппаратное обеспечение макета симулятора.

Симулятор CAN шины создается с целью детального изучения протокола и характеристик CAN интерфейса, и проработки возможности его последующей модификации. Структурная схема  аппаратно-программного симулятора CAN( Arduino Uno+CAN shield+анализатор шины USBCAN-2A)приведена на Рис.1.1 Рассматриваемый в данной работе макет отличается от симулятора только уменьшенным количеством приемопередающих узлов CAN шины (2 вместо 3)

В условиях определенного дефицита времени было принято решение о создании макета симулятора  с использованием готовых компонентов аппаратной платформы Arduino, имеющей собственную среду поддержки разработки-Arduino IDE.

В качестве устройства управления передающего узла CAN  применен наиболее популярный, и, следовательно,  хорошо документированный микроконтроллер (далее-МК) Arduino Uno на базе МК ATMega 328 (подробнее-Wiki: https://ru.wikipedia.org/wiki/Arduino). Принципиальная схема Arduino Uno приведена на рис.1.3.

Использованная в узле CAN плата контроллера CAN интерфейса создана на основе МК CAN шины Microchip MCP2515, и приемопередатчика (CAN-трансивера) Microchip MCP2551 (подробнее-: https://www.microchip.com/wwwproducts/en/MCP2515 , https://www.microchip.com/wwwproducts/en/en010405). Плата контроллера CAN интерфейса работает с платой устройства управления по интерфейсу SPI.

Принципиальная схема контроллера CAN интерфейса приведена на рис. 1.4.

 

Для работы в качестве приемника сообщений CAN, и отображения сообщений CAN на экране компьютера,  использован двухканальный (задействован 1 канал)модуль контроллера и анализатора CAN шины USB-CAN 2A. Данный модуль подключается к USB порту компьютера, и работает c компьютером через виртуальный порт USB-UART под управлением программы  USB CAN Tool, которая используется, в том числе, и для инициализации  модуля для работы в качестве приемника-декодера CAN.

Фото МК Arduino Uno, CAN-модуля на базе Arduino Uno с  CAN-контроллером (Microchip MCP2515+MCP2551),и анализатора шины USB-CAN 2A приведено на Рис.1.2.

 

Рис.1.1 Структурная схема аппаратно-программного симулятора CAN( Arduino Uno+CAN shield+анализатор шины USB-CAN2A)*

Рис. 1.2 МК Arduino Uno, CAN-модуль на базе Arduino Uno с  CAN-контроллером (Microchip MCP2515+MCP2551),и анализатор шины USB-CAN 2A

 

 

 

Рис. 1.3 МК Arduino Uno (Rev.3), схема электрическая принципиальная.

 

Рис. 1.4. Контроллер CAN(Microchip MCP2515+MCP2551),схема электрическая принципиальная


2.     Тестовая программа.

 

Программа для тестирования макета симулятора CAN создана в среде поддержки разработки Arduino IDE (подробнее: https://www.arduino.cc/en/Guide/Environment).

 Данная среда поддерживает язык программирования Processing , созданный на основе C++,обладает возможностью подгрузки нестандартных библиотечных модулей (в данном случае- модулей SPI.h, и mcp.can.h для поддержки шин CAN и SPI), и позволяет загружать исполняемый модуль программы в память Arduino Uno через USB-порт компьютера.

Программа предназначена для инициализации передающего узла CAN  на базе Arduino, описанного в П.1. В ходе ее выполнения происходит формирование пакета с  расширенным 29-битовым идентификатором и 8 байтами данных, инициализация интерфейса SPI для работы с CAN модулем передающего узла, настройка скорости сети (100 Кбит/с), и организация бесконечного цикла передачи пакета.

 

 

// CAN TRANSMITTER

 

#include <mcp_can.h>

#include <SPI.h>

#include <Wire.h>

//#include <LiquidCrystal_I2C.h>

 

const int SPI_CS_PIN = 10;

 

// Инициализация передатчика

 

long unsigned int txID = 0x1881ABBA; // Формат расширенного идентификатора (29 бит) ,MSD<=1)

unsigned char stmp[8] = {0x0E, 0x00, 0xFF, 0x22, 0xE9, 0xFA, 0xDD, 0x51}; 8 байт данных

 

MCP_CAN CAN(SPI_CS_PIN); Установка сигнала обращения к контроллеру CAN (SPI_CS) на 10 контакт;

 

void setup()

{

    Serial.begin(115200);

//Цикл инициализации контроллера модуля CAN

    while (CAN_OK != CAN.begin(CAN_100KBPS))// установка частоты CAN (100Kбит/c)

   {

         //Serial.println("CAN BUS Module Cannot Initialize");//Вывод на жк дисплей (ошибка инициализации контроллера)

        //Serial.println("Retry");// Вывод на жк дисплей (повторение попытки инициализации…)

        delay(200);//…через 200 ms

       

    }

//   Serial.println("CAN BUS Shield init ok!");// Вывод на жк дисплей (успешная инициализация)

}

void loop()//цикл передачи-передавать, пока подключено питание

{

//LiquidCrystal_I2C lcd(0x27,20,4);  //установка параметров отображения жк дисплея

//Serial.println("CAN_TRANSMIT");// Вывод на жк дисплей (режим передачи)

 

    CAN.sendMsgBuf(txID,1, 8, stmp); // передавать пакет (расширенный Id/29 бит и 8 байт данных)…

    delay(25);    //…каждые 25ms

}   

 

Рис. 2.1 Листинг программы инициализации модуля CAN.


Рис. 3.1 Прототип симулятора в работе. Передающий модуль на базе Arduino Uno с  CAN-контроллером (Microchip MSP2515+MSP2551),  приемное устройство-PC+анализатор шины USB-CAN 2A, и устройство контроля и сбора данных (осциллограф Rigol DS 1054Z)

 

Рис. 3.2 Прототип симулятора в работе.СПД-1xUTP 5E, макетная плата для межсоединений, контрольные точки (осциллограф Rigol DS1054Z) на контактах терминирующего резистора, подключенного к анализатору шины USB-CAN 2A

Рис. 3.3 Развертка тестового пакета CAN (Захват изображения с экрана осциллографа Rigol DS1054Z в приложении UltraScope/Windows 10)

Рис.3.4 Программное декодирование CAN-пакета в приложении PulseView (логический анализатор и декодер протоколов с открытым кодом/Win 10).

Рис. 3.5 Экран приложения PulseView c перечнем поддерживаемых протоколов.

Рис. 3.6 Иллюстрация корректной работы прототипа симулятора, и достоверности полученных результатов. Справа-окно приложения USB_CAN_Tool (управление анализатором шины USB-CAN 2A). Запрограммированные идентификатор и данные передатчика приняты, и декодированы безошибочно.


3.Обработка полученных данных.

Фото макета симулятора в работе представлено на рис. 3.1, 3.2. Осциллограф Rigol DS 1054Z, подключенный к компьютеру по LAN-интерфейсу, используется для наблюдения развертки пакета, и сбора данных для последующего анализа  и декодирования установленным на компьютере приложением PulseView. Окно программы с перечнем поддерживаемых протоколов  представлено на рис. 3.5.

Контроль работоспособности прототипа симулятора CAN проводится с использованием двух независимых приборов:  анализатора шины USB-CAN 2A, работающим под управлением приложения USB CAN Tool путем визуального наблюдения (вывод результатов декодирования принятого пакета в окне приложения), и путем программного декодирования CAN пакета с использованием приложения PulseView кроссплатформенного проекта Sigrok ( подробнее: https://sigrok.org/), которое представляет собой  логический анализатор, и декодер протоколов с открытым исходным кодом, распространяемый свободно. Окно приложения PulseView с нормализованными исходными данными, и результатами декодирования представлено на рис. 3.4.

и рис.3.6.

Как видно из информации  рис. 3.6., результат декодирования принятых узлом-приемником CAN-шины пакетов(анализатор шины USB-CAN 2A) совпадает с результатом декодирования CAN-пакетов, полученным с помощью программного логического анализатора-декодера протоколов PulseView, что подтверждает успешный результат проектирования, и правильность работы прототипа симулятора CAN.

 

Заключение.

Результаты выполнения курсового проекта позволяют сделать следующие выводы:

 

1)    Применение готовых модулей семейства контроллеров Arduino для оценки работоспособности устройств на базе микроконтроллеров позволяет значительно ускорить прототипирование;

 

2)    Подтверждены работоспособность, эффективность и удобство применения программного

логического анализатора и декодера протоколов PulseView (совместно с осциллографом, имеющим возможность сетевого подключения) при  исследовании протоколов последовательных интерфейсов передачи данных;

        

3)    Полученный макет симулятора CAN работоспособен, и может служить основой для создания симулятора CAN с целью исследования параметров протокола, и/или построения сетей контроллеров с большим числом узлов/большей сложности/протяженности.

 

Литература .

1.Paret D. Multiplexed Networks for Embedded Systems, John Wiley&Sons Ltd,2007,

ISBN 978-0-470-03416-3 (HB)

 

2.