Jump to content

    

theilush

Участник
  • Content Count

    10
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. Так и сделал, однако ключевую роль сыграла рекомендация Сергея: Без этих растягивающих резисторов ничего не выходит.
  2. Верно Посоветуйте, каким образом можно установить защиту от данных шумов. После добавления в схему растягивающих резисторов не было потеряно ни одного байта за 6 часов работы. Отправка осуществляется по счетчику в таймере: каждые 500мс. Спасибо за представленный вами материал!
  3. Сделал, как советовал Сергей: А подтянул к +5 В, В - к земле через резисторы в 1 кОм. Также все клеммы 61 соединил с землей stm32, конвертер отключен. Работает стабильно. Подожду несколько часов, посмотрим: появятся ли ошибки.
  4. При объединении 61ой клемм с землей stm32 происходит хаус: на приеме происходят непонятные вещи (сначала примет от одного ПЧ, от всех остальных не получит, потом в хаотичном порядке поменяется), но как только подключу конвертер и подтяну землю через st-link, сразу все нормально начинает работать. Отключу от клемм 61 землю тоже работает. Оставлю только 3 ПЧ и stm32 без общей земли тоже работает. Я поставил счетчик в то место, где ничего не пришло, и оставил за ночь. К утру он насчитал порядком 122 сбоев. При мне он вывел ошибку 2 раза. Сейчас подключил конвертер и пока ни одной ошибки.
  5. Нет Stm32 запрашивает величину тока у каждого ПЧ: адрес ПЧ + функция чтения регистра + номер самого регистра + контрольный пакет данных (CRC). И того массив из 8 бит. Отправляет с помощью аппаратного прерывания: void send(unsigned char *buf) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET); HAL_UART_Transmit_IT(&huart1, buf, 8); } Далее организован кольцевой буфер на прием сообщений обратно, должно прийти 9 бит, в котором содержится ответ на сообщение. Так организовано ожидание 9 битов: void recieve() { timme = HAL_GetTick(); while (uart_available() != 9) if ((HAL_GetTick() - timme) > 350) break; //таймаут if (uart_available() == 9) { //при получении 9 битов записываем их в массив для последующей обработки int m = 0; while(m != 9) current_msg[m++] = uart_read(); } else for (int i =0; i<9; i++) current_msg[i] = '\x00'; //если ничего не пришло, значит обнуляем массив => проблема с соединением HAL_Delay(50); //задержка (без нее не успевает отрабоать) } Далее идет уже обработка принятого сообщение: расшифровка и принятие действия в зависимости от полученной информации. Проблем с принятием сообщений у ПЧ не наблюдалось.
  6. Да, именно так. Да, 20 и 55 - это одно заземление. Данный метод еще не пробовал. Думаю, данный эксперимент проведу в ближайшее время, когда под рукой будет осциллограф.
  7. Попробовал сделать, как вы посоветовали, однако результат тот же. Далее данные совсем перестали отправляться ни на ПЧ, ни на переходник. Что-то произошло с MAX485 вследствие чего пришлось его заменить. После проверил через переходник, что все работает, подсоединил по той схеме, как вы советовали. Также присутствуют потери и тд. Дальше отключил COM RS485 от всех ПЧ и отключил питание от датчика, все заработало! Подключил питание для датчика тоже работает. Если объединить землю всех ПЧ (20/55 клемма) тоже все работает стабильно. Поэтому как вы считаете: стоит ли объединять землю через клеммы 20/55 или оставить землю раздельно? Как будет осциллограф посмотрю форму сигнала. Всем спасибо за помощь!
  8. Дело с землей обстоит следующим образом: на картинке приведена распиловка клемм ПЧ. С клемм 12 и 55 берется питание для датчика давления, показания которого обрабатывает АЦП STM32, т.е. клемма 55 связана с землей STM32. Клемма заземления для RS-485 (61) не связана с клеммами 20 и 55. Поэтому не совсем понятно как корректно развести в данном случае землю. Пробовал объединить землю так, как это показано на второй картинке (прошу прощения за схему, накидал для понимания), также пробовал объединить землю, не используя 61. Во всех случаях ключевой ролью играет, подключен ли переходник. К большому сожалению нет возможности использовать осциллограф для полного понимания происходящего, поэтому единственный параметр, по которому я сужу — на сколько стабильно отправляются и принимаются посылки. С переходником работает все стабильно, без потерь. Без переходника и согласующих резисторов работает все очень плохо. С согласующими резисторами работает получше, но потери присутствуют. Пробовал ставить в конце и в начале, и только в конце. Лучший результат был при подключении согласующего резистора сопротивлением 80 Ом на конец линии. Добавлю, что скорость используется 19200, четность Even. Эти параметры изменить нельзя, т.к. на них работает ПЧ.
  9. В моем случае кабель короткий, около двух метров. Его сопротивление равно 0,5 Ома. Значит к каждому концу кабеля (их выходит 4) нужно подключить резистор сопротивлением 0,5 Ом/4 = 0,125 Ом?
  10. Здравствуйте! Прошу помочь со следующим вопросом: имеется 3 преобразователя частоты марки Danfoss, которые соединенны с помощью интерфейса RS-485 с МК STM32F103C8 через MAX485. Происходит отправка байтового массива, после чего происходит приём. В таком случае данные приходят не стабильно (что-то теряется и тд), однако если подключить в эту цепь еще одного подчиненного — компьютер через RS-485 - USB (земля, в том числе), в таком случае работает все стабильно. При отключении конвертера от компьютера сразу стабильность теряется. Вопрос: какие возможные причины данной ситуации? А также, как организовать стабильную связь с исключением конвертера и самого ПК? Пробовал установить терминаторы (резисторы сопротивление 120 Ом в начале линии, т.е. на выходе приемника, а также на конце линии), однако это ситуацию не изменило. Спасибо!