- РС-485 серијска комуникација
- Повезивање РС-485 са Ардуином
- Модул за претварач УСБ у РС-485
- Једноставно Модбус Мастер софтвер
- Потребни алати
- Кружни дијаграм
- Програмирање Ардуино УНО за РС-485 МОДБУС славе
- Тестирање Ардуина УНО као Рс485 Модбус славе
Модбус је протокол за серијску комуникацију који је Модицон открио 1979. године и користи се за пренос података серијским линијама између индустријских електронских уређаја. РС-485 Модбус користи РС-485 за далеководе. Треба напоменути да је Модбус софтверски протокол, а не хардверски протокол. Подељен је у два дела као што су Модбус Мастер и Модбус Славе. У РС-485 Модбус мрежи постоји по један мастер и 127 подређених са јединственом адресом од 1 до 127. У овом пројекту МАКС485 Ардуино, користићемо Ардуино Уно као подређени за серијску комуникацију.
Модбус се углавном користи у ПЛЦ-има (програмабилни логички контролери). А осим тога, Модбус се користи и у здравству, транспорту, кућној аутоматизацији итд. Модбус има 255 функционалних кодова и углавном постоје три популарне верзије Модбуса:
- МОДБУС РТУ
- МОДБУС АСЦИИ
- МОДБУС / ТЦП
Која је разлика између Модбус АСЦИИ и Модбус РТУ?
Модбус РТУ и Модбус АСЦИИ разговарају о истом протоколу. Једина разлика је у томе што су бајтови који се преносе преко жице представљени као бинарни са РТУ и као читљиви АСЦИИ са Модбус РТУ. У овом упутству ће се користити Модбус РТУ.
Овај водич говори о коришћењу РС-485 Модбус комуникације са Ардуино УНО као славе. Овде инсталирамо софтвер Симпли Модбус Мастер на рачунар и контролишемо две ЛЕД диоде и серво мотор користећи РС-485 као далековод. Ове ЛЕД диоде и серво мотор су повезани са Славе Ардуино и контролишу се слањем вредности помоћу Мастер Модбус софтвера. Будући да овај водич користи РС-485, препоручује се да прво прођете кроз серијску комуникацију РС485 између Ардуино Уно и Ардуино Нано. РС485 се такође може користити са другим контролерима за серијску комуникацију:
- РС-485 серијска комуникација између Распберри Пи и Ардуино УНО
- Серијска комуникација између СТМ32Ф103Ц8 и Ардуино УНО помоћу РС-485
Почнимо са истраживањем неке позадине о РС-485 и Модбусу. Овде такође сазнајте више о разним протоколима серијске комуникације.
РС-485 серијска комуникација
РС-485 је асинхрони серијски комуникацијски протокол за који није потребан сат. Користи технику која се назива диференцијални сигнал за пренос бинарних података са једног уређаја на други.
Па шта је овај диференцијални начин преноса сигнала ??
Метода диференцијалног сигнала делује тако што ствара диференцијални напон коришћењем позитивних и негативних 5В. Омогућава Халф-Дуплек комуникацију када се користе две жице, а Фулл-Дуплек захтева 4 четворожичне жице.
Коришћењем ове методе:
- РС-485 подржава већу брзину преноса података од максимално 30Мбпс.
- Такође пружа максималну удаљеност преноса података у поређењу са РС-232 протоколом. Преноси податке до максимално 1200 метара.
- Главна предност РС-485 у односу на РС-232 је вишеструки славе са једним Мастер док РС-232 подржава само једног славе.
- Може имати највише 32 уређаја повезана на РС-485 протокол.
- Још једна предност РС-485 је имуна на буку јер користе метод диференцијалног сигнала за пренос.
- РС-485 је бржи у поређењу са И2Ц протоколом.
Повезивање РС-485 са Ардуином
РС-485 модул се може повезати са било којим микроконтролером који има серијски порт. За употребу РС-485 модула са микроконтролерима потребан је модул назван 5В МАКС485 ТТЛ до РС485 који се заснива на Маким МАКС485 ИЦ јер омогућава серијску комуникацију на великим удаљеностима од 1200 метара. Двосмеран је и полудуплексан и има брзину преноса података од 2,5 Мбпс. Овај модул захтева напон од 5В.
Пин-Оут РС-485:
Пин Наме |
Пин Десцриптион |
ВЦЦ |
5В |
А. |
Неинвертујући улаз пријемника Неинвертујући излаз возача |
Б. |
Инвертовање улаза пријемника Инвертовање излаза управљачког програма |
ГНД |
ГНД (0 В) |
Р0 |
Пријемник излаз (РКС пин) |
РЕ |
Излаз пријемника (ЛОВ-Енабле) |
ДЕ |
Излаз за возача (ХИГХ-Енабле) |
ДИ |
Улаз за возача (ТКС пин) |
Модул за претварач УСБ у РС-485
Ово је адаптер за конвертер УСБ у РС485 који подржава ВИН7, КСП, Виста, Линук, Мац ОС и пружа једноставан РС485 интерфејс помоћу ЦОМ порта у рачунару . Овај модул је плуг-анд-плаи уређај . Не постоје командне структуре, све што се пошаље на виртуелни ЦОМ порт аутоматски се претвара у РС485 и обрнуто. Модул се потпуно напаја са УСБ магистрале. Дакле, за рад није потребно спољно напајање.
Приказује се као серијски / ЦОМ порт и доступан му је из апликација или хипер-терминала. Овај претварач пружа полудуплексну РС-485 комуникацију. Распон брзине пријеноса је 75 бпс до 115200 бпс, максимално до 6 Мбпс.
Да бисте користили овај уређај, на Интернету су доступни различити Модбус програми. У овом упутству се користи софтвер назван Симпли Модбус Софтваре.
Једноставно Модбус Мастер софтвер
Софтверска апликација Модбус Мастер потребна је за слање података на славе Модбус РС-485 Ардуино уређај путем ЦОМ-а.
Једноставно Модбус Мастер је софтвер за тестирање комуникације података. Можете да преузмете Симпли Модбус Мастер са дате везе и сазнате више о њему позивом на Софтверски приручник.
Пре употребе софтвера, важно је упознати се са следећом терминологијом.
ИД славе:
Сваком помоћном уређају у мрежи додељује се јединствена адреса јединице од 1 до 127. Када мастер захтева податке, први бајт који шаље је помоћна адреса. На овај начин сваки роб након првог бајта зна да ли ће поруку игнорисати или не.
Шифра функције:
Други бајт који је послао Мастер је код функције. Овај број говори славе-у којој табели треба приступити и да ли треба читати из ње или писати у њу.
Подржани кодови функција регистра:
Код функције |
поступак |
Назив табеле |
04 (04 хек) |
читати |
Регистри аналогних улаза |
03 (03 хек) |
читати |
Регистри за задржавање аналогних излаза |
06 (06 хек) |
Напишите сингл |
Регистар задржавања аналогних излаза |
16 (10 хек) |
Напишите вишеструко |
Регистри за задржавање аналогних излаза |
Подржани кодови функције завојнице:
Код функције |
поступак |
Назив табеле |
02 (02 хек) |
читати |
Дискретни улазни контакти |
01 (01 хек) |
читати |
Дискретни излазни калеми |
05 (05 хек) |
Напишите сингл |
Дискретни излазни калем |
15 (0Ф хек) |
Напишите вишеструко |
Дискретни излазни калеми |
ЦРЦ:
ЦРЦ је скраћеница од Провера цикличког вишка. То су два бајта додана на крај сваке Модбус поруке за откривање грешака.
Потребни алати
Хардвер
- Ардуино УНО
- Конвертерски модул МАКС-485 ТТЛ у РС-485
- Модул за претварач УСБ у РС-485
- ЛЕД (2)
- 1к отпорник (2)
- ЛЦД екран од 16к2
- 10к потенциометар
- Серво мотор СГ-90
Софтвер
- Једноставно Модбус Мастер
Кружни дијаграм
Кружна веза између претварачког модула МАКС-485 ТТЛ на РС-485 и Ардуино УНО:
Ардуино УНО |
Конвертерски модул МАКС-485 ТТЛ у РС-485 |
0 (РКС) |
РО |
1 (ТКС) |
ДИ |
4 |
ДЕ & РЕ |
+ 5В |
ВЦЦ |
ГНД |
ГНД |
Кружна веза између МАКС-485 ТТЛ на РС-485 модула и УСБ на РС-485 претварача:
МАКС-485 ТТЛ до РС-485 Модул претварача |
УСБ на РС-485 модул Повезан са рачунаром |
А. |
А. |
Б. |
Б. |
Кружне везе између Ардуино УНО и ЛЦД дисплеја 16к2:
ЛЦД 16к2 |
Ардуино УНО |
ВСС |
ГНД |
ВДД |
+ 5В |
В0 |
За контролу пин потенциометра за контролу контраста / осветљености ЛЦД-а од 16к2 |
РС |
8 |
РВ |
ГНД |
Е. |
9 |
Д4 |
10 |
Д5 |
11 |
Д6 |
12 |
Д7 |
13 |
А. |
+ 5В |
К. |
ГНД |
Кружна веза између 2 ЛЕД диоде, серво мотора и Ардуино УНО:
Ардуино УНО |
ЛЕД1 |
ЛЕД2 |
Серво мотор |
2 |
Анода кроз 1к отпорник |
- |
- |
5 |
- |
Анода кроз 1к отпорник |
- |
6 |
- |
- |
ПВМ пин (наранџаста) |
+ 5В |
- |
- |
+ 5В (ЦРВЕНА) |
ГНД |
Катода ГНД |
Катода ГНД |
ГНД (смеђа) |
Програмирање Ардуино УНО за РС-485 МОДБУС славе
Ардуино УНО је конфигурисан као Модбус Славе. Такође, Ардуино УНО је причвршћен са две ЛЕД и једним серво мотором. Дакле, надређеним Ардуином се управља из главног модбус софтвера. Комуникација између Ардуино УНО и Модбус Мастер софтвера остварује се коришћењем РС-485 модула. За његово повезивање са рачунаром користи се претварачки модул УСБ у РС-485. А Ардуино УНО са претварачким модулом МАКС-485 ТТЛ у РС-485, цела поставка ће изгледати у следећем фајлу:
За употребу Модбуса у Ардуино УНО, библиотеци
У почетку укључите потребну библиотеку. Библиотека МодбусРТУ је за коришћење РС-485 Модбус комуникације, а библиотека са течним кристалима за употребу ЛЦД-а са Ардуино УНО, а библиотека серво за употребу Серво мотора са Ардуино УНО.
#инцлуде
Сада су ЛЕД анодни пинови који су повезани са Ардуино пиновима 2 и 5 дефинисани као ЛЕД1 и ЛЕД2.
#дефине лед1 2 #дефине лед2 5
Даље се објекат за приступ класи Ликуид Цристал декларише са ЛЦД пиновима (РС, Е, Д4, Д5, Д6, Д7) који су повезани са Ардуино УНО.
ЛикуидЦристал лцд (8,9,10,11,12,13);
Када је ЛЦД завршен, иницијализујте серво објекат за класу Серво. Такође иницијализујте објекат сабирнице за класу Модбус.
Серво серво; Модбус магистрала;
Следеће за чување вредности за Модбус комуникацију декларише се низ са три вредности иницијализованим нулом.
уинт16_т модбус_арраи = {0,0,0};
У функцији подешавања , прво се ЛЦД поставља у режим 16к2 и приказује се и брише порука добродошлице.
лцд.бегин (16,2); // Лцд постављен у режиму 16к2 лцд.принт ("РС-485 Модбус"); // Поздравна порука лцд.сетЦурсор (0,1); лцд.принт ("Ардуино Славе"); кашњење (5000); лцд.цлеар ();
Након тога се ЛЕД1 и ЛЕД2 пинови постављају као излазни пинови.
пинМоде (лед1, ИЗЛАЗ); пинМоде (лед2, ИЗЛАЗ);
Прикључен је серво импулсни пин повезан са ПВМ пином 6 Ардуина.
серво.аттацх (6);
Сада су за Модбус комуникацију постављени следећи параметри. Прва '1' представља славе ИД, друга '1' представља да користи РС-485 за пренос података, а '4' представља РС-485 ДЕ&РЕ пин повезан са Ардуино УНО.
сабирница = Модбус (1,1,4);
Модбус славе је подешен на 9600 баудрате.
Петља започиње дефиницијом анкете сабирнице, а бус.полл () се користи за писање и примање вредности од главног Модбуса.
бус.полл (модбус_арраи, сизеоф (модбус_арраи) / сизеоф (модбус_арраи));
Овом методом се проверава да ли постоје подаци доступни на серијском порту.
Ако су на серијском порту доступни подаци, Модбус РТУ библиотека ће проверити поруку (проверити адресу уређаја, дужину података и ЦРЦ) и извршити потребну радњу.
На пример, за писање или читање било које вредности из мастер-а, МодбусРТУ мора да прими непотписани 16-битни целобројни низ и његову дужину од главног Модбус-а. Овај низ носи податке који су написани из главног.
У овом упутству постоје три низа за ЛЕД1, ЛЕД2 и угао серво мотора.
Прво се укључује или искључује ЛЕД1 модбус_арраи.
иф (модбус_арраи == 0) // Зависи од вредности у модубус_арраи написао Мастер Модбус { дигиталВрите (лед1, ЛОВ); // ЛЕД искључен ако је 0 лцд.сетЦурсор (0,0); лцд.принт ("Л1: ОФФ"); } елсе { дигиталВрите (лед1, ХИГХ); // ЛЕД укључен ако је вредност различита од 0 лцд.сетЦурсор (0,0); лцд.принт ("Л1: ОН"); }
Следеће за УКЉУЧИВАЊЕ или ИСКЉУЧИВАЊЕ користи се ЛЕД2 модбус_арраи.
иф (модбус_арраи == 0) // Зависи од вредности у модбус_арраи написао Мастер Модбус { дигиталВрите (лед2, ЛОВ); // ЛЕД искључен ако је 0 лцд.сетЦурсор (8,0); лцд.принт ("Л2: ОФФ"); } елсе { дигиталВрите (лед2, ХИГХ); // ЛЕД укључен ако је вредност различита од 0 лцд.сетЦурсор (9,0); лцд.принт ("Л2: ОН"); }
Следеће за подешавање угла серво мотора користи се модбус_арраи и вредност се исписује на ЛЦД дисплеју 16к2.
инт пвм = модбус_арраи; серво.врите (пвм); лцд.сетЦурсор (0,1); лцд.принт ("Серво англе:"); лцд.принт (пвм); кашњење (200); лцд.цлеар ();
Овим се завршава програмирање Ардуино УНО-а за рад као МОДБУС славе. Следећи корак биће тестирање као Модбус славе.
Тестирање Ардуина УНО као Рс485 Модбус славе
По завршетку повезивања кола и преношења кода на Ардуино УНО, време је да повежете УСБ на РС-485 модул са рачунаром на коме је инсталиран софтвер Симпле Модбус Мастер.
Отворите управитељ уређаја и проверите ЦОМ порт према рачунару на који је повезан модул УСБ до РС-485, а након тога отворите софтвер Симпли Модбус Мастер 8.1.1.
1. Након што се отвори Симпли Модбус Софтваре , отворите опцију Врите.
2. Након што се отвори Симпли Модбус Мастер Врите. Подесите параметре
Режим у РТУ, ЦОМ порт према вашем рачунару (мој је био ЦОМ6), Бауд на 9600, битови података 8, зауставни бит 1, паритет ниједан и славе ИД као 1.
3. Након тога поставите први регистар као 40001 и вредности за уписивање су 3, а функцијски код као 16 (Врите Холдинг Регистер).
Након тога напишите 1 до 40001 (за ЛЕД1 укључен) и 1 до 40002 (за ЛЕД2 укључен) и 90 до 40003 (за угао серво мотора), а затим кликните дугме ПОШАЉИ.
Можете да видите како је ЛЕД статус укључен, тако и угао сервоа под 90 степени.
4. Након тога унесите 40001 као 1 и 40002 као 0 и 40003 као 180 и кликните дугме ПОШАЉИ.
5. Сада пишемо 135 до 40003 и 40001 као 0 и 40002 као 1.
Тако се РС-485 Модбус може користити у серијској комуникацији са Ардуино УНО као славе. У следећем упутству користићемо Ардуино Уно као мастер у МОДБУС комбиновању.
Комплетни код и демонстрацијски видео пронађите у наставку.