Разработка приложения для преобразования RS-232 в CAN с использованием технологии Fieldbus

Jun 27, 2026 Оставить сообщение

1 Введение


Связь с промышленным оборудованием обычно включает в себя широкий спектр аппаратных и программных продуктов, а также протоколов, используемых для подключения стандартных компьютерных платформ (персональных компьютеров или рабочих станций) к устройствам промышленной автоматизации. Следовательно, большинство устройств автоматизации предназначены для выполнения простых последовательных команд, совместимых со стандартными последовательными портами персональных компьютеров или дополнительными-платами последовательного порта. RS-232 в настоящее время является наиболее широко используемым последовательным интерфейсом в секторах ПК и промышленных коммуникаций. RS-232 определяется как несимметричный-стандарт, предназначенный для увеличения расстояний связи при низкоскоростной последовательной связи. Поскольку RS-232 имеет общую сигнальную землю между передатчиком и приемником, он не может использовать дифференциальные сигналы; в противном случае в сигнальную систему попадет синфазный шум. Стандарт RS-232 определяет максимальное расстояние всего 15 м и максимальную скорость передачи сигнала 20 кбит/с.


CAN, сокращение от «Контроллерная сеть», является одной из наиболее широко используемых полевых шин в мире. Единая сеть, состоящая из шин CAN, ограничена электрическими характеристиками сетевого оборудования. Базовые характеристики CAN, являющегося последовательной коммуникационной шиной с несколькими-главными устройствами, требуют высокой скорости передачи данных и высокой устойчивости к электромагнитным помехам, а также способности обнаруживать любые ошибки, возникающие на коммуникационной шине. Даже когда расстояние передачи сигнала достигает 10 км, CAN все равно может обеспечить скорость передачи данных до 50 кбит/с. В таблице 1 показана взаимосвязь между максимальным расстоянием передачи между любыми двумя узлами CAN-шины и их скоростями передачи данных.

 

Максимальное расстояние между любыми двумя узлами в треугольной конфигурации в системе шины CAN

Битрейт/кбит/с 1000 500 250 125 100

Максимальное расстояние/м 40 130 270 530 620

Битрейт (кбит/с) 50 20 10 5

Максимальное расстояние (м) 1300 3300 6700 10000


Как можно видеть, шина CAN превосходит последовательную шину RS-232 с точки зрения производительности в реальном времени, адаптивности, гибкости и надежности. Когда два последовательных устройства расположены далеко друг от друга и не могут быть подключены напрямую через RS-232, RS-232 можно преобразовать в CAN для обеспечения сетевого соединения последовательных устройств через шину CAN.


Однако RS-232 и CAN существенно различаются по уровням напряжения и форматам кадров. Конкретно:


Стандарт RS-232 использует отрицательную логику, определяя любой уровень напряжения между +3В и +15В как логический «0», а любой уровень напряжения между -3В и -15В как логическую «1». Сигналы CAN, с другой стороны, передаются с использованием дифференциального напряжения. Две сигнальные линии называются «CAN_H» и «CAN_L». В статическом состоянии оба напряжения составляют примерно 2,5 В; это состояние обозначается логической «1» и также называется «рецессивным». Когда CAN_H выше, чем CAN_L, он представляет собой логический «0», известный как «доминантный». В доминирующем состоянии типичными значениями напряжения являются: CAN_H=3.5В, CAN_L=1.5В;

 

Формат кадра для последовательного порта RS-232: один стартовый бит, восемь бит данных, программируемый девятый бит (который служит битом адреса/данных как для передачи, так и для приема) и один стоповый бит. Формат кадра данных CAN состоит из: заголовка кадра + идентификатора + данных (которые можно разделить на два формата: стандартные кадры и расширенные кадры).

基于现场总线实现RS-232到CAN转换的应用设计Следовательно, конструкция требует, чтобы микроконтроллер выполнял преобразования, такие как преобразования уровня и формата кадра. Процесс преобразования показан на рисунке 1.

 

2 Проектирование аппаратного обеспечения для преобразования RS-232 в CAN


При разработке устройства преобразования RS-232-в-CAN в качестве микропроцессора используется микроконтроллер AT89C52; SJA1000 используется в качестве микроконтроллера CAN. SJA1000 объединяет функции физического уровня и уровня канала передачи данных протокола CAN и может пассивно обрабатывать кадры передаваемых данных; AT82C250 служит интерфейсом между CAN-контроллером и физической шиной, обеспечивая возможность дифференциальной передачи для шины и возможность дифференциального приема для CAN-контроллера. Три различных режима работы (высокая-скорость, контроль наклона и режим ожидания) можно выбрать через контакт 3 AT82C250. Когда вывод 3 заземлен, устройство работает в скоростном режиме; высокоскоростная оптическая развязка реализована с помощью 6Н137, что предотвращает помехи от внешних сигналов; MAX232 используется для преобразования сигналов уровня 232 в уровни TTL для микроконтроллера. Подробную информацию о схемах аппаратного интерфейса см. в соответствующих ресурсах для SJA1000; дальнейшее объяснение здесь не приводится. Однако следует отметить следующие моменты.


(1) Резистор 120 Ом подключен на обоих концах шины CAN для согласования полного сопротивления шины, тем самым улучшая помехоустойчивость и надежность передачи данных. Однако на практике достаточно обеспечить, чтобы шунтирующий резистор между «CAN_H» и «CAN_L» в сети CAN составлял 60 Ом.


(2) Контакт 20 (RX1) SJA1000 может быть заземлен, когда он не используется (конкретную причину см. в конструкции программного обеспечения); в сочетании с установкой бита CDR.6 это может значительно увеличить длину шины.


(3) Способ подключения контактов TX0 и TX1 определяет уровень последовательного выхода. Подробную информацию см. в настройках регистра управления выходом (OCR).


(4) Резистор наклона подключается между выводом RS AT82C250 и землей. Значение сопротивления можно отрегулировать соответствующим образом в зависимости от скорости передачи данных по шине, обычно оно находится в диапазоне от 16 кОм до 140 кОм.


(5) Для MAX232 требуются четыре электролитических конденсатора-C1, C2, C3 и C4, которые также используются для внутреннего преобразования энергии. Все они имеют номинал 1 мкФ/25 В; Рекомендуется использовать танталовые конденсаторы, и их следует размещать как можно ближе к микросхеме. Между источником питания VCC и землей необходимо подключить развязывающий конденсатор емкостью 0,1 мкФ.


3 Разработка программного обеспечения для преобразования RS-232 в CAN


Под управлением микропроцессора использование приема последовательного порта и прерываний CAN во время обмена данными между RS-232 и CAN может повысить эффективность работы. Основная блок-схема программы показана на рисунке 2. SJA1000 можно инициализировать только в режиме сброса; это в первую очередь включает в себя настройку рабочего режима, деления тактового сигнала и регистров приемного фильтра, настройку параметров скорости передачи данных и настройку регистра разрешения прерываний.

 

Возможность точной передачи данных также зависит от скорости передачи данных и управления потоком данных — аспектов, которые нельзя упускать из виду при разработке программного обеспечения. Поэтому следующие разделы будут посвящены настройке скорости передачи данных CAN, автоматическому определению скорости передачи данных последовательного порта и управлению потоком данных последовательного порта.

info-1-1

 

3.1 Настройка скорости фильтра CAN


Одним из ключевых элементов протокола CAN является скорость передачи данных. Пользователи могут устанавливать положение точек выборки битов в пределах битового периода и количества выборок, что позволяет им свободно оптимизировать производительность сети для своих приложений. Однако во время этого процесса оптимизации необходимо уделять внимание взаимосвязи между допуском опорного генератора, используемого для параметров синхронизации битов, и задержками распространения различных сигналов внутри системы.


Скорость передачи данных системы fBil представляет собой количество битов данных, передаваемых за единицу времени, т. е. скорость передачи данных fBit=1/tBit. Номинальная битовая синхронизация состоит из трех не-перекрывающихся сегментов: SYNC_SEG, TSEG1 и TSEG2. Эти три временных сегмента обозначаются как tSYNC_SEG, tTSEG1 и tTSEG2 соответственно. Следовательно, номинальный битовый период tBit представляет собой сумму этих трех временных сегментов.


tBit=tSYNC_SEG + tTSEG1 + tTSEG2


В пределах битового периода эти сегменты выражаются целыми числами, кратными базовой единице времени. Эта единица времени называется квотой времени (TQ), а продолжительность квоты времени составляет один цикл тактовой частоты системы CAN (tSCL), которая определяется из периода тактовой частоты генератора (tCLK). Системные часы CAN можно настроить путем программирования коэффициента предварительного делителя (заданное значение скорости передачи данных, BRP). Конкретно:


tSCL=BRP × 2tCLK=2BPR/fCLK


Другим очень важным временным интервалом для расчета синхронизации битов CAN является ширина скачка синхронизации (SJW), длительность которой равна tSJW. Сегмент SJW не является частью битового цикла; скорее, он определяет максимальное количество TQ, на которое продлевается или сокращается битовый цикл во время события ресинхронизации. Кроме того, протокол CAN позволяет пользователям указывать режим выборки битов (SAM), который может быть либо режимом одной-выборки, либо режимом трех-выборок (выбор одного результата из трех выборок). В режиме одиночной-выборки точка выборки находится в конце сегмента TSEG1. В режиме трех-выборок берутся две дополнительные точки отбора проб по сравнению с режимом одной-выборки; они расположены до конца сегмента TSEG1, разделенные одним TQ.

 

info-1-1

Упомянутые выше BPR, SJW, SAM, TESG1 и TESG2 могут быть определены пользователем через внутренние регистры BTR0 и BTR1 контроллера CAN. Подробности показаны на рисунке 3. После установки BTR0 и BTR1 фактический диапазон скорости передачи данных составляет:
Максимум=1/(ТБит - tSJW), Минимум=1/(ТБит + tSJW)

 

3.2 Определение скорости передачи данных последовательного порта


Когда последовательное устройство выступает в качестве хоста, если вам нужно определить скорость передачи последовательного порта устройства преобразования в это время, вы можете сначала установить скорость приема хоста (например, 9600 бод) и отправить определенный символ (например, возврат каретки) с терминала. Таким образом, хост может определить скорость передачи данных устройства преобразования на основе полученной символьной информации. Значение ASCII символа возврата каретки — 0DH; значения, полученные при различных скоростях передачи данных, перечислены в Таблице 2.


Байты, полученные с разной скоростью передачи данных


Скорость передачи данных (бит/с) Полученные байты (шестнадцатеричные) Скорость передачи данных (бит/с) Полученные байты (шестнадцатеричные)


1200 80 4800 E6

1800 F0 9600 0D

2400 78 19200 F*


3.3 Управление потоком последовательного порта


Используемый здесь термин «поток» относится к потоку данных. Потеря данных часто происходит во время передачи между двумя последовательными портами. Поскольку буфер микроконтроллера имеет ограниченную емкость, если буфер заполнен во время приема данных, любые данные, продолжающие отправляться в это время, будут потеряны. Управление потоком эффективно решает эту проблему: когда принимающая сторона не может обработать данные вовремя, система управления потоком отправляет сигнал «не принимать», в результате чего отправляющая сторона прекращает передачу до тех пор, пока не получит сигнал «возобновить передачу». Таким образом, управление потоком управляет процессом передачи данных и предотвращает потерю данных. Двумя наиболее часто используемыми типами управления потоком являются аппаратное управление потоком (включая RTS/CTS, DTR/CTS и т. д.) и программное управление потоком (XON/XOFF-продолжение/остановка). Следующее объяснение фокусируется исключительно на методе аппаратного управления потоком данных с использованием RTS/CTS.


При использовании аппаратного обеспечения для управления потоком контакты RTS и CTS последовательного терминала подключаются к портам ввода-вывода микроконтроллера, а сигналы запуска/останова принимаются и передаются путем установки портов ввода-вывода на 1 или 0. Терминальное оборудование данных (например, компьютер) использует RTS для инициирования потока данных, отправляемого микроконтроллером, в то время как микроконтроллер использует CTS для запуска и приостановки потока данных от компьютера. Для реализации этого метода аппаратного установления связи во время программирования устанавливаются флаги высокого-уровня и флага низкого-уровня в зависимости от размера приемного буфера. Когда объем данных в буфере достигает верхнего-порогового уровня, линия CTS на принимающей стороне устанавливается на низкий уровень (логический 0). Когда программа на передающей стороне обнаруживает, что CTS низкий, она прекращает передачу данных до тех пор, пока объем данных в приемном буфере не упадет ниже порогового значения нижнего-уровня и CTS не будет установлен на высокий уровень. RTS используется для указания того, готово ли принимающее устройство принимать данные.


3.4 Подпрограмма приема CAN


Формат PeliCAN поддерживает как стандартные, так и расширенные кадры. Режим CAN можно настроить с помощью CDR.7 в регистре делителя тактовой частоты (0 для BasicCAN, 1 для PeliCAN). При приеме данных CAN бит FF в информации о кадре используется для определения того, является ли это стандартным или расширенным кадром, а бит RTR используется для различения удаленного кадра и кадра данных. Ниже приведена подпрограмма приема CAN:

 

;//////////////////////////////////////////////////////////////////

;//Прием данных CAN/Объединен в формат кадра с 2-байтовым идентификатором//

;///////////////////////////////////////////////////////////////////////

 

РЕКАН:

МОВ R0, #C_RE ; Начальный адрес внутреннего буфера микроконтроллера.

MOV DPTR, #RXBUF ; Прочитайте и сохраните содержимое приемного буфера.

MOVX А, @DPTR ; Прочитайте второй байт CAN-буфера.

МОВ @R0, А ; Сохранять

JB ACC.7, EFF_RE ; Бит FF: 0=SFF, 1=EFF

ДВИГАТЕЛЬ R2, #0

СДЖМП СФФ_РЕ ; В зависимости от идентификационного номера позиция захвата «байта данных» варьируется.

EFF_RE: ДВИЖЕНИЕ R2, #2

SFF_RE: ДВИЖЕНИЕ R2, #2

СФФ_РЕ:

JB ACC.6, EXIT_RECAN ; Проверьте бит RTR; если 1 (удаленный кадр), выпрыгнуть

АНЛ А, #0FH

МОВ R3, А ; На этом этапе средние 4 бита представляют длину данных.

ДВИЖЕНИЕ C_NUM, А ; Сохраните длину полученного кадра в R3 и R5.

РДАТА0:

ИНК ДПТР; 2-байтовый идентификатор

ВКЛ R0

MOVX А, @DPTR

ДВИЖЕНИЕ @R0, А

ИНК ДПТР

MOVX А, @R0, А

ИНК ДПТР

MOVX А, @DPTR

ДВИЖЕНИЕ @R0, А

МОВ А, R2 ; Если EFF, пропустите двух-байтовый идентификатор.

ДЖЗ ДРАТА1

ИНК ДПТР

ИНК ДПТР

ДАННЫЕ1: ; Байты данных

ИНК ДПТР

ВКЛ R0

MOVX А, @DPTR

ДВИЖЕНИЕ @R0, А

DJNZ R3, RDATA1

EXIT_RECAN:

РЭТ

 

4 Заключение


Миниатюризация компьютеров создала необходимые условия для интеллектуального развития приборов измерения и контроля, позволяя терминальным устройствам на базе микропроцессоров-обладать превосходными возможностями цифровой связи. С появлением все большего числа интеллектуальных терминалов возрастают требования к сетевой архитектуре, протоколам, производительности-в режиме реального времени, а также применимости, гибкости, надежности и даже стоимости. Следовательно, технология полевой шины имеет большие перспективы для будущего развития. Структура кадра CAN-шины включает идентификатор (ID), который позволяет иметь несколько сетевых хостов в сети устройства; то есть через эти сетевые хосты можно отслеживать рабочее состояние всей сети устройств и принимать соответствующие решения по управлению. В настоящее время это устройство полностью разработано и показало отличные результаты в практическом применении.

Отправить запрос

whatsapp

Телефон

Отправить по электронной почте

Запрос