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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2008, 12:24   #1
Александр Полянски
 
Регистрация: 30.07.2008
Сообщений: 3
Вопрос Формирование сигнала "Тишина"

Прошу помочь! Как на com порте можно сформировать сигнал "Тишина"(постоянная логическая 1 без стартовых и стоповых бит)? Необходимо реализовать протокол Modbus RTU.
Александр Полянски вне форума Ответить с цитированием
Старый 30.07.2008, 12:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну обычными OpenFile WriteFile, писяние в КОМ порты уже обсуждалось.

Вопрос: А не проще взять OPC серверы?
Вот например NAPOPC бесплатен и поддерживает Modbus RTU
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2008, 13:47   #3
Александр Полянски
 
Регистрация: 30.07.2008
Сообщений: 3
По умолчанию

[QUOTE=Stilet;127422]Ну обычными OpenFile WriteFile

WriteFile если не ошибаюсь, отправляет информацию побайтно, при этом добавляя стартовый и стоповый биты, так что сформировать сплошные лог. единицы в линии на протяжении 3,5 символов так просто не выйдет.

с ОРС серверами дела не имел, поэтому не знаю, какие системные требования
Александр Полянски вне форума Ответить с цитированием
Старый 30.07.2008, 14:33   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
с ОРС серверами дела не имел, поэтому не знаю, какие системные требования
Ну AdamView например даже на Win98 заработает. Да они практически все мало зависят от оси...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2008, 09:44   #5
Александр Полянски
 
Регистрация: 30.07.2008
Сообщений: 3
По умолчанию

Большое спасибо за совет! Буду изучать информацию по ОРС.
Но все же хотелось бы разобраться, как можно сформировать сигнал тишины на COM-порте?
Александр Полянски вне форума Ответить с цитированием
Старый 31.07.2008, 10:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если ручками то разве что драйвер написать )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2008, 04:29   #7
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Что-то я проблему совсем не понял.
Ну так не передавайте ничего в течении 3,5 символов между пакетами - вот вам и "тишина". Единственная проблема - многозадачность WIN (трудно будет собственно эту 1 мс засечь при скорости 9600), а если скорость ещё выше чем 9600, то вообще проблемматично.
Однозначно OpenFile, WriteFile.

из википедии:
Цитата:
RTU фрейм
В RTU режиме сообщение должно начинаться и заканчиваться интервалом тишины - временем передачи не менее 3.5 символов при данной скорости в сети. Первым полем затем передаётся адрес устройства.

Вслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3.5 символов. Новое сообщение может начинаться после этого интервала.

Фрейм сообщения передаётся непрерывно. Если интервал тишины продолжительностью 1.5 возник во время передачи фрейма, принимающее устройство должно игнорировать этот фрейм как неполный.

Таким образом, новое сообщение должно начинаться не раньше 3.5 интервала, т.к. в этом случае устанавливается ошибка.

Немного об интервалах (речь идёт о Serial Modbus RTU): при скорости 9600 и 11 битах в кадре (стартовый бит + 8 бит данных + бит контроля чётности + стоп-бит): 3.5 * 11 / 9600 = 0,00401041(6), т.е. более 4 мс; 1.5 * 11 / 9600 = 0,00171875, т.е. не более 1 мс. Для скоростей более 19200 бод допускается использовать интервалы 1,75 и 0,75 мс соотвественно.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49
На чем пишутся стратегии типа "Казаков" и "Эпохи империи" Tayfun Свободное общение 3 26.06.2007 20:27