Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Промышленные компьютеры
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Тест портов COM1 и COM2 (в конфигурации RS-485) платы CPU188-5

 Ответить Ответить
Автор
Сообщение
Nearh Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 22 Ноябрь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 3
Свойства публикации Свойства публикации   Ответить, цитируя автора - Nearh Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Тест портов COM1 и COM2 (в конфигурации RS-485) платы CPU188-5
    Опубликовано: 23 Март 2007 13:51

Доброго времени суток!

Пользовался программой, входящей в состав поставляемого с платой CPU188-5  ПО в папке \CPU188\Support\EXAMP     "TST_485". При запуске последней на модуле CPU188-5, на индикатор выводятся сообщения об ошибках, как собственно и описано в комментарии в программе "Вывод информации на VGA или ЖКИ только при ошибках" Однако не могу понять почему это происходит! Перемычки w5,w6 установлены в положение (2-3), переключатели st4,st5 в положении off. Контакты +RxD1,+TxD1, +RTxD0 и -RxD1,-TxD1,-RTxD0 соответственно замкнуты между собой, в общем все установлено как указано в комментариях в начале программы.

Если Я правильно понимаю, тестирование основано на использовании служб 00Н (аналог 80Н в случае с CPU188-5), 01Н, 02Н,03Н. Так вот, если кто знаком конечно, в указанной программе с одного порта СОМ1 посылается байт к СОМ2:

1) с помощью службы 84Н включается передатчик на СОМ1 и выключается на СОМ2;

2) с помощью службы 03Н проверяется статус последовательного порта СОМ1 посредством сравнения регистра АХ с 6000Н (где единичные биты это "накапливающий регистр передачи пуст" и "сдвиговый регистр передачи пуст"). 

3)после АХ=6000Н, в порт СОМ1 высылается байт через службу 01Н.

4) с помощью службы 03Н проверяется статус последовательного порта СОМ2 посредством сравнения регистра АХ с 0100Н (где единичный бит это "готовность данных"). Так вот на этом этапе значение регистра АХ, который в данном случае возвращает полный статус последовательного порта никогда не равен 0100Н!!! И из цикла проверки статуса порта выход происходит по таймеру (счетчику). Причем Я выводил при этом значение регистра АХ - все время равно 6000Н!

При этом в порт СОМ1 выставляется одно число, а на порте СОМ2 принимается совершенно другое и соответственно в программе выводятся ошибки.

Может ли кто-ниубдь объяснить почему так происходит?

с уважением Nearh
Наверх
KostyaK Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 02 Август 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 110
Свойства публикации Свойства публикации   Ответить, цитируя автора - KostyaK Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 27 Март 2007 14:44

Попробуйте сначало самое простое:

у меня подобное было, когда в программе - передатчике непрерывно посылал в цикле символ в порт наподобие:

for i:=1 to 255 do  WriteCom(i);

Но второй ком-приёмник просто не успевал обрабатывать приходящие байты (+ возможные задержки в линии).

Решение - ввести задержку при посылке данных. Для тестирования достаточно в цикл посылки добавить delay(50).

 

 

Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz