|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.09.2013, 07:59 | #1 |
Регистрация: 03.09.2013
Сообщений: 4
|
Работа с протоколом ModBus (C++)
Здравствуйте!) Проблема такова, есть 3 измерителя-регулятора температуры с интерфейсами RS232, с которых нужно считывать показания на компьютер, и представлять их в графическом виде(типа диаграммы). Они работают по протоколам ModBus (RTU,ASCII). Программу графического интерфейса нужно написать на C++(gcc компилятор). Так как я горе-студент, прошу помочь, подсказать литературу, примерный план действий, как считать информацию с измерителей? Заранее спасибо!
|
03.09.2013, 08:42 | #2 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Самый лучший выбор для вас это Qt. Скачать здесь: http://qt-project.org/downloads (Qt libraries 4.8.5 for Windows (minGW 4.4, 317 MB) (это как раз gcc компилятор), советую эту версию, так как не смог подружить Qt5 и Qwt (об Qwt далее)).
Не забудьте поставить Qt Creator (скачать на той же странице). Ещё нужно поставить Qwt. Qwt максимально упрощает, к примеру, отображение в графическом виде (построение динамического графика). Скачать и установить по инструкции: http://qwt.sourceforge.net/qwtinstall.html С помощью Qt легко создать сервер, который будет опрашивать клиентов (клиенты-это приложения, которые будут считывать данные с COM-портов). Ещё один клиент - это программа оператора, которая будет отображать данные принятые от сервера. Вот видео, как работать с сокетами и создавать клиентов и сервер. Видео на английском, но можно не слушать, а просто смотреть и повторять: - C++ Qt 64 - QHttp download files from the web with ease - C++ Qt 65 - QTcpSocket basics - C++ Qt 66 - QTCPSocket using signals and slots - C++ Qt 67 - QTCPServer - a basic TCP server application - C++ Qt 68 - QTcpServer using multiple threads - C++ Qt 69 - QTcpServer using QThreadPool - C++ Qt 70 - Advanced Asynchronous QTcpServer with QThreadPool - C++ Qt 71 - QUDPSocket Ещё есть примеры в самой Qt SDK C:\Qt\4.8.5_MinGw\examples\network Нужно смотреть: fortuneclient, fortuneserver Пишите здесь, если что-то непонятно. Я сейчас сам в эту тематику подался (создание систем клиент-сервер, для сбора, обработки и отображения (в графическом виде) информации для предприятий). P.S. В Qwt есть папка examples, где можно найти примеры различного рода графиков. Пример легко адаптировать под свои нужды. Последний раз редактировалось 8Observer8; 03.09.2013 в 09:06. |
03.09.2013, 09:40 | #3 | ||
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...вот когда TC понадобится передавать данные по сети, тогда ему и понадобится работа с сетью, причем лучше сразу заложить ModbusTCP (а если заложить аппаратные конверторы RS-232/Ethernet, то может и не понадобится вовсе ). На данный момент задача сводится с считыванию данных по физическим интерфейсам RS-232 по Modbus RTU/аски.
Цитата:
Теория и практика работы с Modbus Первое что необходимо сделать, ознакомиться со спецификацией - Modicon Modbus Protocol. Reference Guide. PI-MBUS-300 Rev.J http://www.modbustools.com/PI_MBUS_300.pdf Библиотеки 1- Libmodbus. Библиотека Modbus for Linux, Mac OS X, FreeBSD, QNX and Win32 Цитата:
Документация: http://www.libmodbus.org/documentation. Пример: использования. Master-Slave исходники проекта: https://github.com/stephane/libmodbus/tree/master/tests 2- Modbus TCP class C# http://www.codeproject.com/Tips/16260/Modbus-TCP-class 3- есть либы и классы под Лазарус, Питон и пых-пых, но вам это не нужно судя по разделу. Литература и дополнительные материалы Материалы и статьи (краткий список): • http://ru.wikipedia.org/wiki/ModBus • http://www.modbusdriver.com/doc/mbus...hi/modbus.html • http://raxp.radioliga.com/cnt/s.php?p=m1.pdf • http://raxp.radioliga.com/cnt/s.php?p=m2.pdf • http://raxp.radioliga.com/cnt/s.php?p=m3.djvu • http://raxp.radioliga.com/cnt/s.php?p=m4.pdf • http://raxp.radioliga.com/cnt/s.php?p=m5.pdf На нижнем уровне (по статьям выше) http://www.youtube.com/watch?v=Rkk1tGnz4qY p.s.: и на будущее - рано или поздно вам придется передавать данные на расстояние, это может быть и Ethernet и сеть опсоса через GSM-терминалы и vdsl-линия, но чаще всего используется промышленная сеть RS-485. 14 заповедей RS-485
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 03.09.2013 в 09:51. |
||
03.09.2013, 11:24 | #4 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Вам виднее. Я про Modbus ничего не знаю.
Тогда на Qt - GUI, а за Qwt - графики. Последний раз редактировалось 8Observer8; 03.09.2013 в 11:28. |
03.09.2013, 13:55 | #5 |
Регистрация: 03.09.2013
Сообщений: 4
|
Огромное спасибо за информацию, сейчас буду во всем разбираться.
Преподаватель поставил задачу так: "Я хочу сидя дома, заходить в интернет, и отслеживать работу измерителей(то есть температуру в помещении) в реальном времени". Отсюда вопрос, если я снимаю показания с приборов, затем представляю полученные данные в графическом виде, как сделать так чтобы за всем этим можно было наблюдать через браузер? Вобщем как это все залить в интернет? Заранее благодарю за помощь |
03.09.2013, 14:00 | #6 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
OFFTOP >
TC запостил свою задачу во фрилансе в другом месте как дипломную. Нет смысла помогать, когда кто-то за это денежку получит. Вам TC стоит почитать руководство и даташиты на указанные вами, наконец-то там, овеновские и термодатовские регуляторы, там все написано, мало того, там и dll-ки готовые предоставляются. На сим вопрос закрыт.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
03.09.2013, 15:33 | #7 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Цитата:
На этой же машине запущена другая программа (назовём её сервер). Она опрашивает программы-клиеты и получает от них значения измерителей. На удалённой машине запущена программа-оператор. Она подключается к серверу, как клиент (через IP и номер порта). Программа-оператор делает запросы серверу. В ответ сервер посылает ответ в виде, к примеру: количество клиентов и их значения. Программа-оператор выводит эти значения в таблицу и на график. Посмотрите видео, на которые я давал ссылке выше. Там всё это есть. Лучше закажите свою программу профессионалу. Он сделает, а Вы разбирётесь по работающему коду. Узнаете, как правильно реализовывать такие вещи. Убережёте свой лоб от множества шишек (правда бывают бесценные шишки, которые потом всю жизнь помнишь, как уроки). Профи Вас нужным инструментом обеспечит. Если бы у меня были лишние деньги - я может быть так же на Вашем месте поступил. На хорошем коде можно многому научиться. Как сделать программу-оператор в браузере я не знаю. Знаю, как строить графики в браузере с помощью jQuery и jpPlot: http://www.jqplot.com/ Последний раз редактировалось 8Observer8; 03.09.2013 в 15:45. |
|
10.02.2014, 16:52 | #8 | |
Регистрация: 10.02.2014
Сообщений: 5
|
Есть уже готовое решение
Цитата:
"Программа ТРМ-138" с http://maasoftware.ru/trm138.htm Можно установить MySQL сервер (http://mysql.ru), протоколировать программой данные с приборов "Овен" или Modbus-приборов в MySQL базу в режиме серверной версии, а на компе препода программой в режиме клиентской версии видеть на табло программы температуру и строить графики, читая данные из MySQL базы. Если IP адрес сервера "серый" (не доступный извне), то, не рассматривая вариант с мэппигном внешних портов на внутренние порты программы и MySQL сервера, можно в качестве MySQL сервера использовать внешний хостинг (где MySQL сервер доступен из Интернет), на табло, правда, в этом случае информацию в реальном времени не увидишь. Для отображения данных в браузере придётся написать CGI-программу на хостинге (например, на php), которая из базы читает данные и строит графики. Кое-какие наработки по этому вопросу есть у автора "Программы ТРМ-138". Но программа платная, хотя для студентов и физ. лиц можно получить скидку. |
|
08.09.2017, 14:38 | #9 |
Регистрация: 08.09.2017
Сообщений: 6
|
Как нибудь решили задачу?
|
08.09.2017, 14:58 | #10 |
Регистрация: 10.02.2014
Сообщений: 5
|
libmodbus
Я не внимательно читал пост (offtop), но мои рекомендации такие:
Мне под Линукс не нужно было. Но могу дополнить, там есть библиотека libmodbus, её можно использовать для опроса приборов, а передача по сети - по протоколу TCP через интерфейс сокетов, например, с использованием библиотеки ToolsLib: git clone git://git.maasoftware.ru/ToolsLib ToolsLib В Linux Debian 8 Jessie поискать необходимые пакеты libmodbus можно так: # aptitude search libmodbus p libmodbus-dev - development files for the Modbus protocol p libmodbus5 - library for the Modbus protocol А GUI писать на QT. Кстати, если не хотите в QT'шную программу объединять и подключать непереносимую между платформами библиотеку libmodbus, то можно ещё абстрагироваться так: 1. Написать серверное сетевое консольное приложение, получающее данные с приборов по ModBus через libmodbus и предоставляющее данные по сети клиентам. 2. Программа GUI QT устанавливает соединение с программой 1) и служит только для отображения данных, а в продвинутом варианте - и для конфигурирования и перезапуска процесса протоколирования 1). |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с SMPP протоколом... | MatriX_OLeG | Общие вопросы C/C++ | 1 | 20.08.2010 20:13 |
Ассоциировать приложение с протоколом | Namolem | Общие вопросы .NET | 1 | 12.06.2010 01:53 |
Работа с протоколом SIP в С++ | Mazorrmo | Общие вопросы C/C++ | 1 | 21.09.2008 22:21 |
Работа с протоколом GameSpy | Shouldercannon | Работа с сетью в Delphi | 8 | 08.03.2008 12:51 |
Помогите с протоколом HTTP | SalasAndriy | Свободное общение | 2 | 12.02.2008 01:37 |