1 Въведение
Комуникацията на индустриалното оборудване обикновено включва голямо разнообразие от хардуерни и софтуерни продукти, както и протоколи, използвани за свързване на стандартни компютърни платформи (персонални компютри или работни станции) към устройства за индустриална автоматизация. Следователно повечето устройства за автоматизация са проектирани да изпълняват прости серийни команди, които са съвместими със стандартните серийни портове, намиращи се на персонални компютри или на допълнителни-карти със сериен порт. RS-232 в момента е най-широко използваният сериен интерфейс в секторите на компютрите и индустриалните комуникации. RS-232 се определя като еднократен-стандарт, предназначен да удължи комуникационните разстояния при нискоскоростна серийна комуникация. Тъй като RS-232 споделя общо заземяване на сигнала между предавателя и приемника, той не може да използва диференциални сигнали; в противен случай шумът от общ режим би се свързал със сигналната система. Стандартът RS-232 определя максимално разстояние от само 15 m и максимална скорост на предаване на сигнала от 20 kbit/s.
CAN, съкратено от "Controller Area Network", е една от най-широко използваните полеви шини в международен план. Една мрежа, съставена от CAN шини, е ограничена от електрическите характеристики на мрежовия хардуер. Като мулти-главна серийна комуникационна шина, основните спецификации на дизайна на CAN изискват високи битрейтове и силна устойчивост на електромагнитни смущения, както и способността за откриване на всякакви грешки, възникващи в комуникационната шина. Дори когато разстоянието за предаване на сигнала достигне 10 km, CAN все още може да осигури скорости на предаване на данни до 50 kbit/s. Таблица 1 показва връзката между максималното разстояние на предаване между всеки два възела на CAN шината и техните битрейтове.
Максимално разстояние между всеки два възела в триъгълна конфигурация в CAN шинна система
Побитова скорост/kbps 1000 500 250 125 100
Максимално разстояние/m 40 130 270 530 620
Побитова скорост (kbps) 50 20 10 5
Максимално разстояние (m) 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 V; това състояние е представено като логическа "1" и се нарича също "рецесивно". Когато CAN_H е по-високо от CAN_L, това представлява логическа "0", известна като "доминираща". В доминиращо състояние типичните стойности на напрежението са: CAN_H=3.5V, CAN_L=1.5V;
Форматът на рамката за серийния порт RS-232 е: един начален бит, осем бита данни, програмируем девети бит (който служи като бит адрес/данни както за предаване, така и за приемане) и един стоп бит. Форматът на CAN кадъра с данни се състои от: заглавка на кадър + ID + данни (които могат да бъдат разделени на два формата: стандартни рамки и разширени рамки).
Следователно дизайнът изисква микроконтролер за извършване на преобразувания като преобразуване на ниво и формат на рамка. Процесът на преобразуване е показан на фигура 1.
2 Хардуерен дизайн за преобразуване на RS-232 към CAN
При проектирането на RS{1}}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 kΩ до 140 kΩ.
(5) MAX232 изисква четири електролитни кондензатора-C1, C2, C3 и C4, които също се използват за вътрешно преобразуване на мощността. Всички имат рейтинг от 1 μF/25 V; препоръчват се танталови кондензатори и те трябва да се поставят възможно най-близо до чипа. 0,1 μF разделителен кондензатор трябва да бъде свързан между VCC захранването и земята.
3 Дизайн на софтуера за преобразуване на RS-232 към CAN
Под микропроцесорен контрол, използването на приемане на сериен порт и CAN прекъсвания по време на обмен на данни между RS-232 и CAN може да подобри оперативната ефективност. Блок-схемата на основната програма е показана на Фигура 2. SJA1000 може да се инициализира само в режим на нулиране; това основно включва настройка на режима на работа, деление на часовника и регистри на филтър за приемане, конфигуриране на параметри за скорост на предаване и настройка на регистъра за разрешаване на прекъсване.
Дали данните могат да се предават точно също зависи от скоростта на предаване и контрола на потока, които са аспекти, които не могат да бъдат пренебрегнати по време на проектирането на софтуера. Следователно следващите раздели ще се съсредоточат върху конфигурацията на скоростта на предаване на CAN, автоматичното откриване на скоростта на предаване на серийния порт и контрола на потока на данни на серийния порт.

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.

Всички BPR, SJW, SAM, TESG1 и TESG2, споменати по-горе, могат да бъдат дефинирани от потребителя чрез вътрешните регистри BTR0 и BTR1 на CAN контролера. Подробностите са показани на Фигура 3. След като BTR0 и BTR1 са зададени, действителният диапазон на скорост на предаване е:
Максимум=1/(tBit - tSJW), минимум=1/(tBit + tSJW)
3.2 Откриване на скорост на предаване на сериен порт
Когато серийно устройство действа като хост, ако трябва да откриете скоростта на предаване в бодове на серийния порт на преобразуващото устройство по това време, можете първо да зададете скоростта на предаване на данни на хоста (например 9600 бода) и да изпратите конкретен знак (връщане на каретка, например) от терминала. По този начин хостът може да определи комуникационната скорост на предаване на преобразуващото устройство въз основа на получената символна информация. ASCII стойността на знака за връщане на каретката е 0DH; стойностите, получени при различни скорости на предаване, са изброени в таблица 2.
Байтове, получени при различни скорости на предаване
Скорост на предаване (bit/s) Получени байтове (шестнадесетичен) Скорост на предаване (bit/s) Получени байтове (шестнадесетичен)
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 Receive Подпрограма
Форматът 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:
INC DPTR; 2-байтов ID
INC R0
MOVX A, @DPTR
MOV @R0, A
INC DPTR
MOVX A, @R0, A
INC DPTR
MOVX A, @DPTR
MOV @R0, A
MOV A, R2; Ако е EFF, пропуснете дву-байтовия идентификатор
JZ DRATA1
INC DPTR
INC DPTR
ДАННИ1: ; Байтове данни
INC DPTR
INC R0
MOVX A, @DPTR
MOV @R0, A
DJNZ R3, RDATA1
EXIT_RECAN:
RET
4 Заключение
Миниатюризацията на компютрите осигури необходимите условия за интелигентното разработване на измервателни и контролни инструменти, позволявайки на базираните на микропроцесор -терминални устройства да притежават превъзходни възможности за цифрова комуникация. С появата на все по-голям брой интелигентни терминали се поставят по-високи изисквания към мрежовата архитектура, протоколи,-производителност в реално време, както и приложимост, гъвкавост, надеждност и дори цена. Следователно технологията fieldbus има голямо обещание за бъдещо развитие. Структурата на рамката на CAN шината включва идентификатор (ID), който прави възможно наличието на множество мрежови хостове в мрежата на устройството; тоест чрез тези мрежови хостове може да се наблюдава работното състояние на цялата мрежа на устройството и да се вземат съответните контролни решения. Това устройство вече е напълно разработено и е постигнало отлични резултати в практически приложения.




