Розробка програми для перетворення 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 використовує негативну логіку, визначаючи будь-який рівень напруги від +3V до +15V як логічний «0», а будь-який рівень напруги від -3V до -15V як логічну «1». Сигнали CAN, з іншого боку, передаються за допомогою диференціальної напруги. Дві сигнальні лінії називаються "CAN_H" і "CAN_L". У статичному стані обидва мають приблизно 2,5 В; цей стан позначається як логічна «1» і також називається «рецесивним». Коли CAN_H вище за CAN_L, це означає логічний «0», відомий як «домінуючий». У домінантному стані типові значення напруги: CAN_H=3.5V, CAN_L=1.5V;

 

Формат кадру для послідовного порту 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 пристрій працює в швидкісному режимі; високошвидкісна оптична ізоляція реалізована за допомогою 6N137, що запобігає перешкодам від зовнішніх сигналів; 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/(tBit - tSJW), мінімум=1/(tBit + 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-байтовим ідентифікатором//

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

 

RECAN:

MOV R0, #C_RE ; Початкова адреса внутрішнього буфера мікроконтролера

MOV DPTR, #RXBUF ; Прочитайте та збережіть вміст буфера отримання

MOVX A, @DPTR ; Прочитайте другий байт буфера CAN

MOV @R0, A ; зберегти

JB ACC.7, EFF_RE ; FF біт: 0=SFF, 1=EFF

MOV R2, №0

SJMP SFF_RE ; Залежно від ідентифікаційного номера позиція, у якій захоплюється «байт даних», змінюється

EFF_RE: MOV R2, №2

SFF_RE: MOV R2, №2

SFF_RE:

JB ACC.6, EXIT_RECAN ; Перевірте біт RTR; якщо 1 (віддалений кадр), вистрибнути

ANL A, #0FH

MOV R3, A ; У цей момент середні 4 біти представляють довжину даних

MOV C_NUM, A ; Зберігайте довжину отриманого кадру в R3 і R5

RDATA0:

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

INC R0

MOVX A, @DPTR

MOV @R0, A

ВКП ДПТР

MOVX A, @R0, A

ВКП ДПТР

MOVX A, @DPTR

MOV @R0, A

MOV A, R2; Якщо EFF, пропустіть дво-байтовий ідентифікатор

JZ DRATA1

ВКП ДПТР

ВКП ДПТР

ДАНІ1: ; Байти даних

ВКП ДПТР

INC R0

MOVX A, @DPTR

MOV @R0, A

DJNZ R3, RDATA1

EXIT_RECAN:

RET

 

4 Висновок


Мініатюризація комп’ютерів створила необхідні умови для інтелектуальної розробки інструментів вимірювання та керування, дозволяючи кінцевим пристроям на основі-мікропроцесора мати чудові можливості цифрового зв’язку. З появою дедалі більшої кількості розумних терміналів висуваються вищі вимоги до мережевої архітектури, протоколів,-продуктивності в реальному часі, а також застосовності, гнучкості, надійності та навіть вартості. Отже, технологія польової шини має великі перспективи для майбутнього розвитку. Структура кадру шини CAN містить ідентифікатор (ID), який дає змогу мати кілька мережевих хостів у мережі пристрою; тобто через ці мережеві хости можна відстежувати робочий стан усієї мережі пристроїв і приймати відповідні керуючі рішення. Цей пристрій уже повністю розроблений і досяг чудових результатів у практичному застосуванні.

Послати повідомлення

whatsapp

Телефон

Електронна пошта

Розслідування