Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
19.09.2015, 21:51
|
#141
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от vladh
|
Ошибаетесь. Докажите.
|
Ну вы же согласны с тем, что язык программирования (бейсик или С) роли не играет? И что за более чем десяток лет, задача связи двух пиков через rs-485 решалась не раз (я бы сказал не одну тысячу раз)? Вот и остаётся только логика реализации. Выбери вы другую логику решения, например, что мастер каждые полсекунды шлёт запрос и ожидает ответа, а слэйв, соответственно, передаёт только в ответ на запрос к себе, у вас бы всё сразу работало, и через прямое соединение контроллеров, и через 485й, при условии целостности линии связи.
Сообщение от vladh
|
На основании чего Вы так решили?
|
Дык вот:
Сообщение от vladh
|
Если соединить два МК по UART то все(и модель в Протеусе, и живая схема) работает. Но как только я начинаю переходить на RS485 все начинает работать непонятно.
|
Сообщение от vladh
|
Я в стартовом сообщении писал, что по обычному UART контроллеры обмениваются без проблем(двухсторонний обмен в моей основной программе). Но мне надо разнести контроллеры на 20 м и я подозреваю, что в этом случае можно будет наловить блох. Поэтому решил добавить RS485. И когда я начал пробовать с эти протоколом пошли чудеса.
|
Сообщение от vladh
|
Все сказанное должно проявляться и тогда кода связь осуществляется непосредственно по USART. Но в этом случае все ХОРОШО! А ПЛОХО становится, когда начинаю работать чрез МАХ485 или как на схеме МАХ487?
|
Сообщение от vladh
|
Я уже писал, что состыковал два МК по интерфейсу UART. Они периодически обмениваются данными и все работает вполне себе хорошо. Но вот когда я захотел усложнить задачу и организовать связь по 485 интерфейсу. Тем более, что переход на него должен был быть достаточно простой, а надежность канала значительно выше. Я собрал схему и в живую и в Протеусе. И тут началось.
|
Сообщение от vladh
|
И я еще раз хочу обратить внимание на то, что связь по UART работает хорошо. Если бы были виноваты помехи или несвоевременные прерывания то это бы проявлялось и здесь. Но проявляется почему то только когда появляются переходные М/Сх.
|
Ещё цитировать, или хватит? ![Прикольно](images/smilies/icon_wink3.gif) А ведь Анатолий ещё во втором посте сей темы сказал "Протокол обмена RS485 не равен RS232 (UART)". Видя, что так и не поняли - попытался разъяснить разницу, пардону прошу за самоцитирование:
Сообщение от Someone
|
Что касается работы усарт и не работы 485 - так это разные вещи с разными принципам работы. Усарт в соединении 2х контроллеров (TX1-›RX2, RX1-›TX2) является полнодуплексной линией, и по нему можно одновременно вести передачу обоим контроллерам. 485й же является полудуплексной линией, и в ней двум контроллерам нельзя вести одновременно передачу - будет не распознаваемая каша. И логика работы с 485, и, соответственно, программа, будет совершенно другая. Так что ничего удивительного в "неработе" нет.
|
|
|
|
|
19.09.2015, 22:17
|
#142
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от NewWriter
|
Удваивать не нужно - в том то и суть, чтобы не передавать от мастера в тот момент, когда может передать слейв.
|
Ну так ведь оценивается вероятность сбоя в случае, если мастер зафиксирует нажатие кнопки, и сразу попытается передать сообщение слэйву, просто начиная передачу, как было у ТС, и получается, что мастер может начать передачу и закончить её, пока от слэйва придёт очередная посылка, может начать передачу, когда посылка идёт, и может не успеть закончить передачу, когда от слэйва пойдёт посылка. Итог - пока кнопки не трогают - данные от слэйва поступают. как только кнопки начинают жать, в 2х случаях из 3х на линии каша и посылки пропадают, либо путаются данные, о чём ТС и жалуется. А "не передавать от мастера в тот момент, когда может передать слейв" - это уже решение проблемы. Как именно этого не допустить - таймером, контролем линии, либо другим способом - не суть как важно. Любой из методов решения имеет свои достоинства и недостатки.
|
|
|
|
19.09.2015, 22:45
|
#143
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от Someone
|
Ну вы же согласны с тем, что язык программирования (бейсик или С) роли не играет?
|
Играет. Это как читать даташит писаный арабской вязью или китайскими/японскими иероглифами. Типа тоже язык, но не для техники. Да и основные споры, всё более редкие в последнее время, АСМ vs Си, кто там сейчас ещё пачкается об васик?
Сообщение от Someone
|
Любой из методов решения имеет свои достоинства и недостатки.
|
Если бы ТС знал все достоинства и недостатки, он бы и тему не поднимал. Видать васик не знает напрочь о таком чуде как RS485, так всё запущено.
Последний раз редактировалось STM32F0; 19.09.2015 в 22:49.
|
|
|
|
19.09.2015, 22:58
|
#144
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от STM32F0
|
Играет.
|
Т.е. по вашему, если программа написана на С, то когда мастер начнёт передачу в линию 485го, в тот момент, когда по этой линии идёт передача от слэйва, не произойдёт ничего страшного, и никакой ошибки не возникнет?
|
|
|
|
19.09.2015, 23:04
|
#145
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от Someone
|
Т.е. по вашему
|
По моему, васик настолько ограничен, что даже RS485 не может работать как положено. А на Си куча примеров, весь инет завален.
|
|
|
|
19.09.2015, 23:07
|
#146
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
О, блин, развели базар. Ну полудуплекс на RS485- значит учи как надо работать в полудуплексе и все проблемы.
|
|
|
|
19.09.2015, 23:09
|
#147
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от STM32F0
|
По моему, васик настолько ограничен, что даже RS485 не может работать как положено. А на Си куча примеров, весь инет завален.
|
Это таки не ответ на вопрос, а отмазки. Поробуем ещё раз:
Сообщение от Someone
|
если программа написана на С, то когда мастер начнёт передачу в линию 485го, в тот момент, когда по этой линии идёт передача от слэйва, не произойдёт ничего страшного, и никакой ошибки не возникнет?
|
|
|
|
|
19.09.2015, 23:12
|
#148
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от Boba_spb
|
Ну полудуплекс на RS485- значит учи как надо работать в полудуплексе и все проблемы.
|
Дык некоторые (не будем показывать пальцем), считают, что это бейсик виноват, и, видимо, если с полудуплексной линией работать как с полнодуплексной, но на С, то всё получится в лучшем виде.
|
|
|
|
19.09.2015, 23:15
|
#149
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Частенько пользую RS485 - последнее время на С# пишу. И хде там что про RS485 в C# хоть слово. Открыл COM порт и вперед !!! Так что не надо путать алгоритм работы с языками. Если алгоритм кривой, то он кривой хоть на С, хоть на Асме, хоть на каком-то Васике или Барсике
|
|
|
|
19.09.2015, 23:52
|
#150
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от Someone
|
некоторые (не будем показывать пальцем), считают, что это бейсик виноват, и, видимо, если с полудуплексной линией работать как с полнодуплексной, но на С, то всё получится в лучшем виде.
|
Можно и не сомневаться!
Сообщение от Boba_spb
|
последнее время на С# пишу. И хде там что про RS485 в C# хоть слово. Открыл COM порт и вперед !!! Так что не надо путать алгоритм работы с языками. Если алгоритм кривой, то он кривой хоть на С, хоть на Асме, хоть на каком-то Васике
|
А почему не на васике-шарп? Значит дело не только в алгоритмах.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:17.
|
|