|
|
|
queeen123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 8.9.2017 Репутация: нет Всего: нет |
Здравствуйте! Задача вообщем такая. Есть параметры, передаваемые с метанольного цеха диспетчеру по интерфейсу RS-485 по протоколу modbus. Нужно сделать отображение параметров на компьютере.(например в qt) Помогите разобраться по порядку что нужно для этого сделать.
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Для начала вам нужна библиотека для декодирования (да и собственно обслуживания) modbus. Надеюсь, что modbus у вас ASCII? Потому что с modbus RTU будут проблемы на Windows - он требует real time (ну или почти real time) обработки, что на Windows не гарантируется.
В библиотеке будет сервис, обслуживающий COM порт - запускаете его в отдельном thread'е. Из него декодированные сообщения (через связку сигнал/слот) отправляете в основной поток GUI, где собственно оно принимается и отображается в каком нибудь widget'е Сам GUI можете нарисовать в Qt Creator (либо классический из widget'ов, либо на QML) |
|||
|
||||
queeen123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 8.9.2017 Репутация: нет Всего: нет |
Modbus RTU у меня. А если через OPC сервер как-нибудь?
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Тогда 'как правило' будет работать, но готовьтесь к тому, что иногда будет сбоить
Во первых Qt 5.9 уже есть поддержка modbus (как клиента, так и сервера) - https://doc.qt.io/qt-5/qtserialbus-index.html Во вторых на sourceforg есть куча проектов - https://sourceforge.net/projects/qtmodbustcpip/ http://qmodbus.sourceforge.net/ https://sourceforge.net/projects/shortbusmo...ource=directory https://sourceforge.net/projects/easymodbus...ource=directory https://sourceforge.net/projects/qmodmaster...ource=directory Это сообщение отредактировал(а) xvr - 11.9.2017, 10:00 |
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
Да не всё так страшно. realtime там обычно нужэн весьма умеренный по временам, по сути всё, что от тебя нужно -- послать пакет (это всего лишь до 255 байт) одним вызовом драйвера COM-порта в windows, дальшэ если система не в виртуалке какой крутится, то она справляется.
Протокол в общем простейшый, там похожэ самое объёмное в реализацыи -- CRC подсчитать. Остальное -- ну, таймауты как таймауты, ты всё равно бы не вечно ответов ждал. Вот, надо ждать только время, соответствующее 3.5 что ли символам. Ну, на самом деле если большэ ждёшь, когда ты мастер -- тожэ ничего страшного, всё неправильное ты по CRC отсеешь. Так что можэт имеет смысл не маяться с библиотеками, а писать самому в порт. Да, на рынке довольно много преобразователей RS232 в RS485, работающих по довольно своеобразному протоколу: поскольку RS232 -- шына дуплексная, а RS485 -- нет, то при работае требуется как-то указывать, в каком сейчас состоянии должэн быть физический порт RS485 -- приёма или передачи. Это указывается сигналом RTS COM-порта. И, кажэтся, некоторые USB-RS485 преобразователи представляются COM-портом и требуют такого жэ протокола с точки зрения драйверов. |
|||
|
||||
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |