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

Передача данных через GSM модем

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


Присоединился: 03 Сентябрь 2010
Online Status: Offline
Публикации: 4
Свойства публикации Свойства публикации   Ответить, цитируя автора - wprom Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Передача данных через GSM модем
    Опубликовано: 10 Сентябрь 2010 15:47

Доброго дня суток.

Не смогли бы вы мне помочь в таком деле.

Есть контроллер. Так крутится программка на С.

Есть место оператора. На нем самописаная программка на Builder c++.

Идея. Контроллер посылает на комп по COM порту, каждые N секунд,  определенные данные. На контроллере также организовал БД – утром оператор скачивает все то что происходило ночью.

Что получается: получаю на верхний уровень, то что приходит с контроллера каждый N секунд.  Посылаю запрос – считываю архив.  Вроде бы все Ок. Но это при прямом подключении через COM порт.

Что не получается: Естественно нужно все это делать удаленно. Пытаюсь делать это через модемы (Модемы GSM  enforы и simensы). Соединяюсь. Все нормально. И получаю то что отсылает контроллер каждые N секунд. Не могу скачать архив. Судя по всему не доходит команда до контроллера.

Самое главное что опыта работы с модемами, портами  и т.п. у меня увы нет. Уже долгое время я пытаюсь понять в чем проблема – но очевидно пока не дано.

Что делаю: ну из того что прочитал и наверное не так делаю. Ну для того чтобы что-то передать с диспетчера – нужно RTS установить в логическую единицу. Потом следить за CTS – модем готов принимать или нет… Ну в чем, так сказать суть: что я уже не делал – никак не получается. Ну как подключаю напрямую через кабель – все ок.

Если есть время, помогите мне в этом вопросе. Буду рад любой помощи.

В идеале - подробно (для чайника) описать шаги. Что нужно установить, что сбросить, когда... и т.п. 

Спасибо!!!!

P.S: Не судите строго....

Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Сентябрь 2010 16:09
А в кабеле сигналы квитирования есть? Для начала проверить используются ли сигналы квитирования вообще. Вы то как писали Сишную программу на билдере? 
При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Сентябрь 2010 16:13
Как вариант может быть так.  Вы сигналы квитирования не используете (и правильно делаете).  А модемчику вашему они нужны (это они зря так сделали) и получается , что модем не переключает направление прием/передача.  Это просто предположение. Смотреть лучше всего какой нибудь программкой - терминалом, которая позволяет линии квитирования переключать. Или даже на линии квититрования тумблер повесить.
При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
wprom Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2010
Online Status: Offline
Публикации: 4
Свойства публикации Свойства публикации   Ответить, цитируя автора - wprom Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Сентябрь 2010 16:53
Спасибо Vald за ответ.

Как я понимаю квитирование (возможно ошибочно) то использую.

При получении пакета, проверяется контрольная сумма. Если все хорошо - идет запрос на следующий пакет. Нет - повтор ошибочного. 

Немного расскажу как я делаю.

Перед посылкой команду на считывания: 1. RTS ставлю в логическую единицу. DTR - в ноль.
       2. Считываю CTS. Посылаю команду.
       3. RTS и DTR наоборот.

Со стороны контроллера - аналогично.


Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Сентябрь 2010 17:54
Ха.  А вот это все через модем то проходит?  А зачем вообще квитирование используется? По моему оно не нужно вообще. По настоящему использование линий квитирования действительно необходимо в процессорнх платах, когда RTS-ом переключаем направление передачи во встроенном в плату драйвере RS485. Во всех остальных случаях на тех скоростях, что в приборчиках используются, непонятные попытки использовать квитирование приводят к страшной головной боли. Ну в некоторых случаях надо поуправлять модемом, тут уже такой случай рассматривался неск месяцев назад.  Вам эти сигналы для управления модемом нужны?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Сентябрь 2010 18:06
Просто когда связываются с управлением потоком надо очень внимательно заполнить структуру  DCB и четко представлять как это будет работать. Возможен вариант что управление потоком у вас включено, а вы еще и ручками пытаетесь линии дергать и опрашивать. С другой стороны : если черех 0 модемный кабель с полным комплектом проводов работает, значит правильно написали или просто повезло.  Но модем вовсе не обязан ваши сигналы квитирования через себя передавать; даже так: он их и не собирался передавать. Теоретически он их может как-то сам формировать и обрабатывать , а может и не обрабатывать. Надо разобраться, что надо вашему модему. Если ему квитация не нужна - не используйте ее. Если при этом не в состоянии внести изменения в программу на компе и в устройстве - просто затяните им CTS электрически на разъеме так, чтобы не тормозилась передача.
При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
wprom Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2010
Online Status: Offline
Публикации: 4
Свойства публикации Свойства публикации   Ответить, цитируя автора - wprom Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Сентябрь 2010 10:25

Сигналы для управления модемом убраны. Наверное, вся проблема в DCB. У меня было только:

dcb.ByteSize = 8;

dcb.Parity   = NOPARITY;

dcb.StopBits = ONESTOPBIT;

dcb.BaudRate = CBR_9600;

 

Посмотрите, пожалуйста, мою структуру  DCB. Нормально или нет. Что еще добавить, может?

 dcb.fBinary = true;

 dcb.fOutxCtsFlow = true;

 dcb.fOutxDsrFlow = true;

dcb.fDtrControl = DTR_CONTROL_ENABLE;   // ?

dcb.fDsrSensitivity = false;   // ?

dcb.fTXContinueOnXoff = false;  // ?

dcb.fNull = false;

dcb.fRtsControl = RTS_CONTROL_TOGGLE; // ?

 

Спасибо.

Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Сентябрь 2010 13:00
Просто дернул из работающей программы:
 
dcb->fBinary=TRUE;//
dcb->fParity=FALSE;
dcb->Parity=NOPARITY;
dcb->StopBits=ONESTOPBIT;

dcb->ByteSize=8;

dcb->fAbortOnError=FALSE;//

dcb->fNull=FALSE;//

dcb->fOutxCtsFlow=FALSE;//
dcb->fOutxDsrFlow=FALSE;//
dcb->fDtrControl=DTR_CONTROL_DISABLE;//
dcb->fDsrSensitivity=FALSE;//
dcb->fOutX=FALSE;//
dcb->fInX=FALSE;//
dcb->fRtsControl=RTS_CONTROL_DISABLE;//
При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
wprom Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2010
Online Status: Offline
Публикации: 4
Свойства публикации Свойства публикации   Ответить, цитируя автора - wprom Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Сентябрь 2010 15:05
Спасибо Vald.
Нет. Никак... (((
Скачал некую программку - CommTest. Точно такая картина.
Не переключается направление прием/передача. 

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

Присоединился: 18 Март 2011
Online Status: Offline
Публикации: 1
Свойства публикации Свойства публикации   Ответить, цитируя автора - kalianov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Март 2011 15:02
Доброе время суток.
Есть задача передача данных с adam-5510 на комп через gsm модем. проблема в том что никогда подобное не делал. могли бы скинуть или указать где можно взять образец программы для реализации данного задания.? 
заранее благодарен.


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

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

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