Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



rS-485

Сообщений 1 страница 30 из 44

1

Ребята помогите! собрал девайс общения по 485 с компом на меге 8. пользую баскомовский терминал. по 232 связывается без проблем, но стоит в разрывах поставить adm485 как всё глохнет. Собственно вопрос в чём. Какой сигнал брать с ком порта компа чтобы терминалка активировала в драйвере rs485 передачу и приём? вот пример моего кода программы, содранного с хэлпа баскома. Я верно ли понял что команда print автоматом активирует передачу на драйвере со стороны контроллера? и будел ли работать комманда input с таким кодом по rs485?

Код:
 $regfile = "m8def.dat"                                  ' specify the used micro

$crystal = 8000000

$baud = 2400                                                ' use baud rate

$hwstack = 42                                               ' default use 32 for the hardware stack

$swstack = 40                                               ' default use 10 for the SW stack

$framesize = 40                                             ' default use 40 for the frame space



$lib "modbus.lbx"

Config Print = Portd.2 , Mode = Set                         ' use portb.1 for the direction

Rs485dir Alias Portd.2

Config Rs485dir = Output

Rs485dir = 0                                                ' go to receive mode

                                              ' a switch is connected to pinc.0 so activate pull up resistor

'             TX    RX

' COM0   PD.1   PD.0   monitor

' COM1   PB.3   PB.2   rs485

'            PB.1           data direction rs485





Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

'Config Com2 = 9600 , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0       ' MUST MATCH THE SLAVE



'use OPEN/CLOSE for using the second UART

'Open "COM2:" For Binary As #1



'dimension some variables

Dim B As Byte

Dim W As Word

Dim L As Long



W = &H4567                                                  ' set some values

L = &H12345678





Print "RS-485 MODBUS master"

Do

  If Pinc.0 = 0 Then                                        ' test button

     Waitms 500                                             ' delay since we want to send just 1 frame

     Print "send request to slave/server"                   ' to debug terminal

     Input "ghjjhjh" , B
    ' Print #1 , Makemodbus(2 , 3 , 8 , 2);                  'slave 2, function 3, start address 8, 2 bytes

    ' Print #1 , Makemodbus(2 , 6 , 8 , W);                 'slave 2, function 6, address 8  , value of w

      'Print #1 , Makemodbus(b , 16 , 8 , L);                'send a long

  End If

  'If Ischarwaiting(#1) <> 0 Then                            'did we got something back?

   ' B = Waitkey(#1)                                         ' yes so get it

    Print Hex(b) ; ",";                                     ' print it

  'End If

Loop

Терминал применяю баскововский. со стороны компа схема сейчас такая http://cxema.my1.ru/publ/teorija/izucha … 33-1-0-729

Отредактировано ra3qwy (2012-03-29 12:14:20)

-1

2

еще раз примените верхний регистр - бан

Перепишите своё сообщение в обычном регистре (маленькими буквами)
Модератор

-1

3

Нет, чтобы подсказать )))

input работать будет, как и любая другая, НО проц будет ждать прихода CR\Lf .  Порт переключения Tx\Rx дергать лучше командой типа set\reset, перед передачей выставляя в 1 и в 0 после, так надежнее.
ЗЫ. Толковых схем в указанном источнике нет. Я пользую FT232, у нее есть специализированный выход включения передачи, ну и ЮСБ, что приятно. Есть конфигурилка серийных номеров, чтобы натыкать туеву хучу много одинаковых конвертеров. Схема конвертера есть в даташите.

Отредактировано Skull (2012-03-29 13:06:58)

0

4

Спасибо Вам Skull. Про порт я схватил и понял. А не будет ли худо если вдруг??? они навстречу сработают эти микры 485-ые не умрут ли? и ещё вопрос. Если я порт ставлю на передачу в команде input, то как мне принять переменную и ентер? что после инпута reset порта делать тогда логики команды не понимаю. Или всёже проще не использовать инпут? может у кого пример кода есть с инпутом принтом и выбором(case) именно для rs-485.

Отредактировано ra3qwy (2012-03-29 13:10:39)

0

5

ну, это кагбэ забота ровных рук программера. Если в системе 1 ведущий, то такая вероятность крайне мала. По моему опыту микры трансиверов чаще дохнут от гроз и статики, и могут работать несколько часов на КЗ если не пилить данные непрерывно. (проверено в условиях завода).

Отредактировано Skull (2012-03-29 13:09:56)

0

6

передачу в команде input
Бред, батенька, это команда приема.
в Вашем случае на передачу надо работать где-то так :
set portX/X
print {MESSAGE};chr (11);chr (10) (точно не помню порядок, и оно ли)
reset portX/X

Отредактировано Skull (2012-03-29 13:21:02)

0

7

Спасибо! понял значит вероятностью встречной работы мы пренебрегаем! Работаю в общем-то над контролем состояния антенн на мачте короче цифровое телевидение строим вот и задачу подкинули. И всё же каким сигналом с PC ком порта управлять TX\RX переходника rs-232>485? RTS это верно? я пробовал DTS. для RTS сечас плату переходника травлю> надоели висюльки, сопельки :( но ведь инпут сначала строку передаёт а потом принимает?

Отредактировано ra3qwy (2012-03-29 13:18:28)

0

8

всё понял-туплю. надо в инпуте не передовать строку а только запрос данных делать! Правильно! насчёт FT232 это верно сказано и более актуально на данный момент. Она далее у меня запланирована. Задачу поставили как можно дешевле а FT232 у нас не менее 400р. стоит. А таких девайсов 140 штук надо сделать вот и вот!?

Отредактировано ra3qwy (2012-03-29 13:28:47)

0

9

'If Ischarwaiting(#1) <> 0 Then                            'did we got something back?

   ' B = Waitkey(#1)                                         ' yes so get it

    Print Hex(b) ; ",";                                     ' print it

  'End If

здесь вот вся процедура приема. В принципе, можно реорганизовать на буфере, тоже есть примеры на Баском.
RTS/CTS (англ. Request To Send / Clear To Send, Запрос на отправку/Разрешение отправки) Так, что думай )
ЗЫ US8IKC )) А че городишь ?

Отредактировано Skull (2012-03-29 13:30:24)

0

10

Спасибо! Намёк понял будем работать! ещё раз спасибо US8IKC and  de ra3qwy! я выше написал - контроль антенн! хотя про грозы было верно замечено, но мы выполним задачу а там пусть сами.

Отредактировано ra3qwy (2012-03-29 13:33:07)

0

11

http://uploads.ru/t/n/Z/w/nZwdp.gif
а что контролить хочешь ? ну хоть 4 диода воткни для защиты  или пару трансилов на 5,6 в землю.

Вот схема

Отредактировано Skull (2012-03-29 13:44:14)

+1

12

да я это всё предусмотрел. я так понял что rts & cts соединяем вместе и на пины разрешения передачи приёма микры правильно!

0

13

нет, они через транзистор включаются, насколько я помню. (сигнал вроде инвертируется) И уровни там +-12 В, а надо 5

Отредактировано Skull (2012-03-29 13:59:53)

0

14

спасибо за схему! проинвертирование - попробую. Я ещё на структурке max232 обратил внимание на инверсный выход! Огромное спасибо за поле для действий и размышлений.

0

15

Ура на приём всё пошло а вот с компа в контроллер что-то не идёт. похоже нет сигнала готовности на приём в ком порте! не с инверсией ли cts это связано. У меня сейчас без инверсии?? Поможите дурачку!?

0

16

Может быть. Притяни принудительно ноги 2,3 трансивера к+5в  со стороны компа, попередавай, и станет видно, что виновато.

http://uploads.ru/t/v/m/D/vmDbR.jpg

Отредактировано Skull (2012-03-29 15:46:04)

+1

17

блин сегодня не успел! но выяснил одно, что rts & cts , при включении баскомовского терминала переходят от 0 в 1 т.е. от -9 к 9 В. значит ли это что что-то с терминалом не так или другой попробовать кто посоветует какой?

0

18

теперь уже дома я понял свою ошибку похоже (спокойная обстановка рулит). вот картинка.
http://uploads.ru/t/e/n/I/enI2O.jpg
обведённая галочка при экспериментах была выключена. Это моя ошибка? Или нет?
и надо ли ставить режим Handshake - RTS\CTS. и что этот режим означает?

Отредактировано ra3qwy (2012-03-29 18:24:57)

0

19

ну да, по идее галочка его задействует, или инвертирует....

0

20

всё пошло, но одно но! мне этот канал передачи не устроил в практике. при нашей эл.Магн. обстановке при 150 метрах экранированной витой паре порядка 80% ошибок это при подтяжках и терминаторах. Ими я баловался. Поэтому придёться применить одностороннюю связь я так думаю может по DTMF. Он ведь програмно шимом может задаваться на меге 8-ой/ Сейчас поищу вроде здесь где-то видел кусочек проги для генератора. что-то здесь и в гуглях не нашёл для моей меги dtmf генератор(пример кода). Мож подскажет кто? в хэлпе там задержки для 2313 а для моего какие должны быть?

Отредактировано ra3qwy (2012-04-01 19:03:27)

0

21

Слушай, я на АФУ 5 лет работал, ты скажи что городишь, и что наверху стоит и какие мощности дуются, мож чего подскажу. ДТМФ не вариант однозначно, он вообще приниматься не будет. Экранированная витуха- гуано. нужен аудиокабель и опторязвязка с обеих сторон, иначе не заработает.

Отредактировано Skull (2012-04-01 19:45:52)

0

22

понял! слушай у нас АФУ 340 метров + где-то около 100м по зданию! Суть задумки (моей) такова. два мультиплексора по 16 входов каждый итого 32 входа. В каждой панели лаборатория встраивает грубый (зашунтированный) детектор - в норме на первый мультиплекс (первый пакет  эфирной цифры) 8 вольт. короче через стабилитроны я имею с каждой панели а их(32) единичку ну если конечно она работает. Задумка про детекторы в панелях не моя (хреновая вообще задумка рассогласовка-наводка и ....вообще бог его знает что - это я знаю но задача и вина здесь не моя. Т.О. на входе устройства с бп (наверху) я имею 32 кабеля с постоянкой. Вот и задача по витой или коаксиалу спустить эти данные!????? мощностей по мере спуска много там все радио вещание аналоговое вообще 24 + 12 этажей на которых 50+ 50 Квт (Лён Ураган) и т.д и т.п. Задача спустить без помех. А  про датчики мне так вообще смешно, что они там надумали!? Что подскажите ув. Skull? да кстати на 32 панели пока что (первый мультиплекс) 5 кВт будет приходить. т.е. 5\32 кВт на панель (это в идеале конечно чего в жизни не бывает) далее будет больше.

Отредактировано ra3qwy (2012-04-01 20:01:32)

0

23

Подскажите пожалуйста. Вот появилась мысль. Если по той же витой паре передавать адрес на мультиплексоры и получать по этой же витой данные чтобы не корячить наверх контроллер. Но сигнал в витой задрать до вольт 20 а вверху и внизу обработать (вот и нагрузка для помех) до 5 вольт? и также внизу контроллером с max 232 передать на комп? кто что скажет. Ведь хоть до 40 вольт  можно поднимать устойчивость ведь возрастает! да и ВЧ помехи кондюками можно убрать а с данными медленно работать! У Меня к скорости  претензий нет хоть 10 минут ждать здесь это инвариантно! а экран витой допустим через 50 метров землить на тело мачты для уравнивания!?

Отредактировано ra3qwy (2012-04-01 20:21:49)

0

24

Так, с этого места поподробнее. Что из себя представляют детекторы?? Просто петелька с диодом или линия отбора мощности (как в КСВ-метре ) ?
ЗЫ. Такие мощности при таких длинах- бред ) хорошо, если половина будет )))
Землить на мачту низзя!!!! Только 1 точка контакта !!!! Ты чего? у тебя ж экран на ВЧ будет трансом брать все с эфира )))

Отредактировано Skull (2012-04-01 20:24:05)

0

25

да вот в чём и смех то! что просто петелька с диодом и кондюком. Разговор про ответвители заходил, но был отфильтрован тем, что добавляются 2- разъёма а т.о. падает надёжность да и панели, которые под гарантией вскрывать для встраивания петли отбора никто не разрешил Тут вывод напрашивается что заводу эту задачу поставитть, а тут ответ один..... Русский!

0

26

про землю эдесь палка о 2-х коцах! хотя с Вами я солидарен. Сотовики ведь на всех поворотах фидера землят! Вот и думай да и ещё ругаются если его не сделать. Ну это всё понятно - ладно. Фидера применяются вахи 150мм с воздухом(давление) внутри так что потери есть, но..... сами понимаете опять же палка о двух.... потери-моща-зона-высота. Всё это до нас подсчитано и работает!

0

27

Разьема хватит и одного, он же на выходе постоянку дает )

0

28

Сотовики пусть землят себе, у них спецы классные ) ГИЭ наше долго не могло понять откуда свистит канал базы, расположенной за 120 км )))

0

29

нет я может неправильно выразился. чтобы встроить ответвитель надо или на входе его ставить (2 разъёма 7\8 eia) или встраивать в панель (она закрыта диэлектрическим кожухом) чего делать нельзя - гарантия! вся разводка (кабеля) уже готовая и заводская 32 панели сфазированы и с её длинами работать тоже ну по крайней мере не стоит!

0

30

Skull написал(а):

Сотовики пусть землят себе, у них спецы классные ) ГИЭ наше долго не могло понять откуда свистит канал базы, расположенной за 120 км )))

:) вот оно и вот :)

0