Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 02:31   #1
Biker_reg67
 
Регистрация: 15.12.2012
Сообщений: 4
По умолчанию перехват обращения к СОМ-порту и инициализация GSM модема

Доброе время суток. В С++ я начинающий, но стала такая вот задача.
Есто ОРС-сервер, работающий через СОМ-порт с прибором учета электроэнергии (но это неважно). Все былоб хорошо, если бы канал связи был таков: счетчик(RS232)->преобразователь в TCP-> Ethernet сеть ->преобразователь в RS232-> COM-порт компьютера с OPC сервером.
НО, используется не Etherner, а GSM модем.
OPC-сервер не может инициализировать модем.
Нужно написать программу, которая будет
- отслеживать обращение к определенному виртуальному COM-порту.
- при обращении устанавливать канал связи через GSM модем,
- предавать управление OPC серверу (который связь эту и инициализировал)
- после завершения опроса закрывать GSM канал

Вопрос, собственно, втом. как реализовать эту прогу на С++. подскажите может алгоритм, что почитать для программирования СОМ. модемов (что-то типа телнета)

Зарания спасибо
Biker_reg67 вне форума Ответить с цитированием
Старый 15.12.2012, 12:01   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А чем бы вам помогло переобразование RS232 -> Ethernet?
Далее, есть куча готового софта, которая делает "удаленные" RS232 через TCP/IP.
Перехват обращений к COM порту - только через драйвер.
waleri вне форума Ответить с цитированием
Старый 15.12.2012, 12:14   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Нужно написать программу, которая будет
- отслеживать обращение к определенному виртуальному COM-порту.
это совсем нетривиальная задача, требующая написания драйвера (ввиду того, что OPC-сервер, так понимаю, закрыт) ...не обижайтесь и не вашего уровня. Просто так никто вываливать такое не будет.

Можно попробовать обойти, воспользовавшись бесплатными виртуальными нуль-модемами-повторителями, это если программно, но муторно.

Однако, зайдем с другого боку:
Цитата:
Есто ОРС-сервер, работающий через СОМ-порт с прибором учета электроэнергии
1- поднимать PPoE соединение на модеме заранее своей программой
2- если OPC-сервер позволяет завести канал для отслеживания активности и подачи данных, то можно дополнительным OPC-клиентом этот канал отслеживать и в нем (в клиенте) инициировать модем ...но, тут возникает вопрос, как узнать зарнее, что нужно его поднять, ведь данные уже идут, а модем не мгновенно инициируется, чуете к чему веду?
3- использовать GSM-модем, к примеру, со встроенной Питон-машиной и написать свой скрипт
4- втиснуть в структуру ПЛК сбора данных, сам ПЛК (что-нить от OWEN) будет осуществлять автономное управление модемом, накопление и передачу данных ...по запросу верхнего уровня также будет возможно считывание показаний счетчика на OPC-сервер

Поскольку не вижу вашей структуры автоматизации сказать трудно, нужен ли вам вообще OPC-сервер. Он бы пригодился, если бы вы данные где-нить архивировали, но в случае автономной отправной точки, ПК не нужен, как и OPC-сервер.

Цитата:
Далее, есть куча готового софта, которая делает "удаленные" RS232 через TCP/IP.
есть даже лучше, не софта, а железа ...например RS-232/Ethernet-конверторы (tibo-модули, к примеру) ...но в случае GSM-канала связи, ничто не мешает сам счетчик подрубить сразу к GSM-модему со встроенной JAVA-машиной.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 15.12.2012 в 12:17.
raxp вне форума Ответить с цитированием
Старый 16.12.2012, 03:19   #4
Biker_reg67
 
Регистрация: 15.12.2012
Сообщений: 4
По умолчанию

Выкладываю две структурные схемы системы. Первая, оптика, по идее должна работать без всяких доработок ПО, вопрос возник из-за второй.
По поводу обхода обращения к COM-порту я тоже подумал. Действительно, Сеанс опроса приборов учета будет инициализировать ОРС-клиент, так почему же перед обращением к ОРС-серверу не открыть бы COM-порт, создать канал GSM а дальше обращаться к ОРС-серверу через открытый порт. Это, как я понял, raxp и предлагает в п.1(немного не понял смысл п.2). Пп. 3, 4 неприемлемы - оборудование уже закуплено. По поводу п.4 возможно. когда-нибудь и будет принято решение "втиснуть" контроллер, не сейчас вопрос не в этом.
Уважаемый raxp, можете объяснить по подробнее этот предмет
Цитата:
GSM-модему со встроенной JAVA-машиной
В связи с выше написанным, у меня появилось нескольео вопросов:
1. Если я открою COM-порт клиентом (как файл), сможет ли к нему обращаться другое ПО (OPC-сервер), причем сервер же тоже открывает порт. (получается он открывается дважды)
2. Каким образом (прошу не код, конечно, а принцип) и возможно ли инициализировать, как я выше писал, клиентом GSM связь, а потом использовать ее уже сервером, затем клиентом закрыть (и порт в т.ч.).
Изображения
Тип файла: jpg 1.jpg (27.1 Кб, 140 просмотров)
Тип файла: jpg 2.jpg (30.3 Кб, 140 просмотров)

Последний раз редактировалось Biker_reg67; 16.12.2012 в 03:32.
Biker_reg67 вне форума Ответить с цитированием
Старый 16.12.2012, 11:29   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

1. Нет, доступ всегда ексклюзивный
2. "Настоящие" модемы следят за раазными сигналами на выводе RS232, типа DTR. Если эти сигналы не менять при закрытии порта и не инциализировать все заново при новом открытии, теоретически возможно проинициализировать из одного приложения и потом слать данные из другого. На практике все зависит от второго приложения - что оно делает с COM портом.
waleri вне форума Ответить с цитированием
Старый 16.12.2012, 12:19   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Насколько я понял из задачи ТС, то модемом он лишь поднимает Интернет-канал (PPoE) и в системе после этого через тырнет может работать любое приложение, поэтому неважно, обслуживанием порта уже занимается сама система.

Цитата:
GSM-модему со встроенной JAVA-машиной
смысл в том, что некоторые модели GSM-терминалов могут иметь на борту пользовательские программы-скрипты обслуживания, т.е. поднятия тырнет-канала без участия МК или прибора.

Цитата:
Выкладываю две структурные схемы системы
нескромный вопрос: что это за изврат, прибор учета с CAN-интерфейсом, RS-232/485 не нашлось? Или это автомобиль?

Цитата:
2. Каким образом (прошу не код, конечно, а принцип) и возможно ли инициализировать, как я выше писал, клиентом GSM связь
если клиент у вас это прибор учета и он не имеет возможности поднятия тырнет-канала теми же AT-командами, то нет. Либо брать умный GSM-терминал, либо брать ПЛК сбора данных, которые умеют поднимать этот канал.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 16.12.2012, 14:47   #7
Biker_reg67
 
Регистрация: 15.12.2012
Сообщений: 4
По умолчанию

На сколько я понимаю, PPoE и услуга "передача данных" мобильного оператора - это разные вещи (у нас второе).
Модемы - siemens mc35i - java нет
Счетчик электрической энергии Меркурий 230 - модификация с CAN (заказывали норм, а отдел снабжения опять напутал, хрен что закупил). Но вообще есть счетчики и со встроенным модемом, есть с RS232, тут сторона счетчика неважна.
По последнему вопросу, raxp,
Цитата:
если клиент у вас это прибор учета
Клиент - это OPC-клиент, на схеме обозначен.

Уважаемый waleri, т.о. возможна такое решение?
1. Открываю СОМ-порт(как файл) ОРС-клиентом,инициализирую модем, устанавливаю связь, больше ничего с ним не делаю, закрываю СОМ-порт (как файл).
Получается, что СОМ-порт закрыт, модем работает, сигналы на нем (типа DTR) не изменяются.
2. ОРС-сервер открывает СОМ-порт на опрос счетчика (но т.к. в нем не предусмотрена возможность работы модемом, то он просто после открытия порта начинает передачу команд, модем не трогает)
3.ОРС-клиент получил, что хотел, отстает от ОРС-сервера (тот от счетчика), (далше пока не знаю, закрыл ли порт ОРС сервер или нет,допустим закрыл), открывает СОМ-порт, завершает модемную связь, закрывает СОМ-порт
4.Все в шоколаде.

Или все ссложнее?
Biker_reg67 вне форума Ответить с цитированием
Старый 16.12.2012, 17:37   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
На сколько я понимаю, PPoE и услуга "передача данных" мобильного оператора - это разные вещи (у нас второе).
вещи разные. Однако, PPoE относится к поднятию тырнет-канала средствами ОС на стороне ПК.

Cо стороны-же автономного счетчика поднимать соединение на модеме кроме счетчика некому. Смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 18.12.2012, 02:27   #9
Biker_reg67
 
Регистрация: 15.12.2012
Сообщений: 4
По умолчанию

Raxp, смысл само собой ясен, но интернет канал я поднимать не собираюсь. Именно технология передачи данных. Как вы считаете, схема в предыдущем моем сообщении работат будет? После закрытия СОМ-порта будет ли продолжать работать модем (как это сделать)?

Еще, то что раньше писали про модем с java машиной, его же одного достаточно, со стороны пк? Т.е. я пишу код на java, в котором если приходит, например от ПК "start" - он устанавливает связь с удаленным модемом. В свою очередь ОРС-клиентом я отсылаю по СОМ-порту этот START, жду подтверждения связи, отключаюсь и предаю управление портом ОРС-серверу. С таким модемом не обязательно же быть подключенному ПК?

Последний раз редактировалось Biker_reg67; 18.12.2012 в 02:32.
Biker_reg67 вне форума Ответить с цитированием
Старый 18.12.2012, 08:54   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
но интернет канал я поднимать не собираюсь. Именно технология передачи данных. Как вы считаете, схема
ежели сам оператор обеспечит, да.

Цитата:
В свою очередь ОРС-клиентом я отсылаю по СОМ-порту этот START, жду подтверждения связи, отключаюсь и предаю управление портом ОРС-серверу. С таким модемом не обязательно же быть подключенному ПК?
и какая тут связь?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват обращения к COM-порту из драйвера Sam Gold Win Api 2 24.09.2012 22:52
Передача по СОМ-порту Faton 11 C# (си шарп) 7 18.06.2012 10:19
Ищу компоненту ActiveX для отправки SMS с GSM-модема Вадим Мошев Свободное общение 9 17.08.2011 14:37
Необходимо подключить датчик к СОМ порту SashaIV Win Api 3 22.09.2009 00:08
Закрытие доступа к СОМ- порту nova-alex Win Api 2 21.02.2007 11:55