Сопряжение CPU188 и ADAM4520 |
Ответить |
Автор | |
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
Опубликовано: 19 Ноябрь 2007 11:13 |
Добрый всем день Есть микроконтроллер, построенный на основе CPU188. Он должен общаться с OPC-сервером через RS-485 по протоколу Modbus. Протокол я реализовал, теперь пытаюсь проверить работу с OPC-сервером. Через RS-232 все нормально: сервер отправляет запросы, мой прибор отвечает, сервер получает ответ и показывает его. Для проверки RS-485 взяли преобразователь ADAM-4520. ADAM должен быть подключен следующим образом: RS-232 к компьютеру, RS-485 к CPU188. У ADAM есть клеммы Data+ и Data-. У CPU188 - +TxD1, -TxD1, +RxD1, -RxD1 на разъеме J7 (связь осуществляется через COM2). А теперь, как говорится, внимание, вопрос. Даже несколько. 1. Какие контакты разъема J7 к каким клеммам ADAM подключать? 2. Как должны быть настроены перемычки в CPU188? Сейчас поставил W5 в положение 1-2, W6 - 2-3, ST4 - ON (чтобы был доступ в терминалку через COM1), ST5 - OFF. 3. Есть ли какие-нибудь отличия в передаче данных по 485 от 232? 4. Как использовать функцию 84h прерывания INT 14h или регистр FF7Ah? Когда надо включать/выключать передатчики RS-485 и нужно ли включать/выключать их вообще? |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
Возьмите два 4520 и не мучайтесь.
|
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
|
Не пойдеть. :) |
|
Новичок Присоединился: 06 Ноябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 10 |
|
В свое время делал обмен по Modbus с CPU188, так что постараюсь ответить на ваши вопросы. 1. На J7 нужно объединить контакты +TxD1 c +RxD1, а -TxD1 c -RxD1, и подключать их к Data+ и Data- соответственно. 2. Положение всех перемычек, влияющих на связь, вы вроде указали правильно. 3. Все отличия при обмене по 485 связаны в основном с тем, что обмен в этом режиме - симплексный, то есть прием и передача одновременно выполняться не могут. Более того, все, что идет на передатчик, автоматически принимается своим приемником, и это тоже нужно учитывать. У меня было сделано так, что при необходимости передачи сначала делается включение передатчика (об этом ниже), затем делается задержка на коммутацию (около 75 мкс), затем выполняется собственно передача. В конце передачи выполнялось ожидание до окончания передачи последнего символа (проверялись соответствующие регистры порта), затем делалась задержка на передачу последнего бита (зависит от скорости - для 115200 это 10 мкс), а затем передатчик выключался. В принципе если нет жестких требований по времени достаточно видимо просто сделать задержки порядка 1 мс после включения и перед выключением передатчика. 4. Коммутация передачи/приема RS485, естественно, необходима. Я использовал регистр FF7Ah, хотя и через BIOS, наверное, тоже будет работать. Использовался следующий фрагмент кода: // базовые номера COM-портов // биты управления RTS для COM-портов // макросы для работы с портами CPU188 // управление передатчиком RS-485 Попробуйте, должно заработать. Если будут еще какие-то вопросы, постараюсь ответить. Удачи!
|
|
С уважением,
Лопаткин Б.В. |
|
Новичок Присоединился: 18 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 30 |
|
Спасибо за подсказку. Выходы объединил. Еще нашелся глюк в настройке модуля ADAM, т.к. modbus и передача данных через com-порт для rs-232 шла нормально. Еще сделал запрет прерывания на прием из com-порта перед включением передатчика и разрешение прерывания после выключения (чтобы передаваемые байты не буферизировались при возврате назад - вообще непонятно, зачем так сделано). Пока все работает. |
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |