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

5510E/TCP - потери при передаче через RS232

 Ответить Ответить Страница  <12
Автор
Сообщение
poison Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 02 Декабрь 2010
Online Status: Offline
Публикации: 68
Свойства публикации Свойства публикации   Ответить, цитируя автора - poison Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: 5510E/TCP - потери при передаче через RS232
    Опубликовано: 17 Март 2011 14:58
Это верное решение :)))) И еще маленький вопросик: я правильно понимаю, что если использовать другой порт просто меняем базовый адрес, например COM2 == 0x02F8, COM4 = 0x02E8 ?

Да именно так только плюс смещение 5;

И можно ли это применять, если поставить в COM-порты режим 485 ?

Я думую что можно т.к. регистры работают с самим передатчиком Uart а на фезический уровень это не как нераспространяются.


Наверх
Марат Смотреть выпадающим
Новичок
Новичок


Присоединился: 02 Февраль 2011
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - Марат Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Март 2011 15:29

Еще:

попробовал SIO_SendBytes(..) - 30 байт успешно передается, а если 1024 - уже нет... дальше не стал испытывать, потому как просто добавил в 5510drv.h строчку:

#define com_busy() ((inportb (0x03F8 + 5) & 0x20) == 0)  

а в программе добавил:

for (i=0; i<BUFSIZE;i++)

{

  while (com_busy());

  com_tx(buf[i]);

}

теперь вроде все нормально (тьфу-тьфу :-)))

Наверх
poison Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 02 Декабрь 2010
Online Status: Offline
Публикации: 68
Свойства публикации Свойства публикации   Ответить, цитируя автора - poison Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Март 2011 16:16
SIO_SendBytes больше 600 байт непередает это видно здесь:

_TEXT:059B mov si, [bp+arg_4]         ; где arg_4 колличество байт для передачи
_TEXT:059E ; #line 939
_TEXT:059E cmp si, 258h
_TEXT:05A2 jb short loc_105AA        ;             идти дальше
_TEXT:05A7 jmp loc_107DC              ;            выход из процедуры

Кстате эта функция возвращает коды:
если 0 - все ок;
если не 0 - передача неудалась

и еще эта функция использует прерывания по передачи, т.е. вы можете заполнить буффер 600 байт и продолжать другие вычесления пока функция com_tx_empty() не вернет 1
Наверх
Марат Смотреть выпадающим
Новичок
Новичок


Присоединился: 02 Февраль 2011
Online Status: Offline
Публикации: 25
Свойства публикации Свойства публикации   Ответить, цитируя автора - Марат Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Март 2011 09:04

Да, спасибо большое.

И, просто остается посетовать, что Advantech прилагает именно библиотеки, а не обычные нормальные исходники... :-( ведь иногда нужно чуть-чуть где-то подправить или просто обрезать неисползованные функциии. 

Ладно, прорвемся :)

Наверх
 Ответить Ответить Страница  <12

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

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