HART протокол в C++ Builder и 'Метран-150
HART протокол в C++ Builder редко встречаемая в сети тема. Управление датчиком абсолютного давления "Метран-150" по HART протоколу реализовано многими программистами в виде OPC серверов и программы "HART master". Но для частного случая применения датчика "Метран-150", например в составе какого-либо изделия такие варианты не подходят.
Тестовый частный случай вполне можно реализовать на C++ Builder. Допустим нам необходимо по HART протоклу читать данные с "Метран-150" об абсолютном давлении при этом имея возможность изменять нижний и верхний диапазон измерения датчика. Вначале необходимо определить команды HART протокола которые для этого понадобятся. Итак для чтения данных об абсолютном давлении необходимо послать датчику команду "Считать первичную переменную" (команда 1 - в Hex виде 0x01), а для изменения диапазона необходимо послать команду "Записать значения диапазона" (команда 35 - в Hex виде 0x23). Не будем останавливаться на особенностях HART протокола, все необходимое можно изучить в документе по представленной чуть выше ссылке.
В соответствии с вышеизложенными требованиями была написана тестовая программа в C++ Builder которая читает с датчика "Метран-150" первичную переменную, тоесть в нашем случае абсолютное давление и дает возможность оператору менять верхний и нижний диапазоны измерения плюс чтение некоторой служебной информация, без которой невозможен обмен с датчиком, как например его идентификатор. Кроме того программа отображает в HEX виде управляющие и ответные слова в двух разных окнах, что наглядно показывает как работает HART протокол. Обмен с прибором осуществляется посредством порта COM1 персонального компьютера через HART модем "Метран-681".
В проекте, который выполнен на C++ Builder 5 были использованы дополненные и подправленные функции OPC сервера. В частности функция cFloatCtoIEEE754 преобразования данных из float в стандарт IEEE754 содержала серъезную ошибку - возвращаемый, локально созданный указатель, который создается фактически в стеке, который в свою очередь, при выходе их функции, раскручивается в обратную сторону, указывал не на вычисленные данные, а на случайное число. В проекте функция подправлена таким образом, чтоуказатель привносится в нее из вне, занимая жесткое положение в памяти (функция cFloatCtoIEEE754new). Саме неприятное, что Метран в своих ответных словах не всегда посылает синхронизирующие байты 0xFF (подтверждающий скриншот ниже по тексту) количеством больше 3_х. Функции OPC сервера начинают учитывать принятые данные при количестве принятых синхробайт 0xFF больше трех.
Это пришлось учитывать в функциях OPC запроса-приема. Думаю именно эта особенность прибора не учтена в широко известной программе "HART-MASTER", поскольку надежность ее общения с Метраном оставляет желать лучшего. Поскольку проект, ссылка на который выше по тексту, а точнее его исходники, снабжены комментариями то наверняка он будет полезен тем, кто сталкивается с проблемой освоения HART протокола в части управления датчиком абсолютного давления "Метран-150" и частных случаев его применения.
Электроника :
- Техника электроника (11)
- Полезная электроника (4)
- Электроника для всех (5)
- Техника для дома (6)
- Cхемотехника ПЛИС (11)
- Пректирование PCAD (4)
Программирование :
- Микроконтроллеры (9)
- ПЛИС VHDL Verilog (29)
- C++ Builder (7)
- Visual Studio C++ C# (7)
- Java programming (7)
- Matlab programming (4)
Сайтостроение :
- Сайтостроение HTML (5)
- Сайтостроение PHP (8)
- PHP CMS на файлах (3)
- Web инструменты (9)
- Полезное вебмастеру (11)
- SEO раскрутка сайта (4)
- PHP скрипты (3)
Реклама :
Книги и учебники :
- Шаблоны сайтов (6)
- Книги и учебники (2)
Компьютер и интернет :
Поиск по сайту :
Реклама :
Облако меток :
Бесплатная подписка :
Статистика :
- Популярность (3)
- Посещаемость (3)
- Поисковые запросы (3)