在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術ESM6802支持Qt MODBUS程序開發簡介

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-05 11:28 ? 次閱讀

ESM6802使用iMX6DL作為CPU,支持硬件圖形加速,使得用戶可以開發具有較好圖形界面的工業控制程序。Qt是嵌入式開發中常用的圖形庫,MODBUS作為工控中常用的通信協議,已經作為Qt的模塊引入了Qt中。我們在ESM6802上移植了最新的Qt 5.8.0版本,包括MODBUS模塊,用戶在使用中可以方便的調用Qt提供的API進行MODBUS協議相關的程序編寫。Qt對于MODBUS協議的封裝使得用戶能夠更加便捷快速的進行MODBUS應用程序開發,我們將在下面根據Qt源碼中的modbusmaster例程簡單介紹Qt的MODBUS相關函數接口。文中使用的程序可以在http://doc.qt.io/qt-5/qtserialbus-modbus-master-example.html獲取或向我們的工程師索取。

在使用Qt提供的MODBUS相關API時需要使用Qt提供的MODBUS數據類:QModbusDataUnit,類中有公共數據RegisterType表示此數據代表的MODBUS數據類型:

enum RegisterType { Invalid, DiscreteInputs, Coils, InputRegisters, HoldingRegisters }

可以使用構造函數進行初始化:

QModbusDataUnit(RegisterType type,intaddress, quint16 size)

對于MODBUS client相關的函數,Qt將其封裝在類QModbusClient中,部分函數如下:

intnumberOfRetries()const

QModbusReply *sendRawRequest(constQModbusRequest &request,intserverAddress)

QModbusReply *sendReadRequest(constQModbusDataUnit &read,intserverAddress)

QModbusReply *sendReadWriteRequest(constQModbusDataUnit &read,constQModbusDataUnit &write,intserverAddress)

QModbusReply *sendWriteRequest(constQModbusDataUnit &write,intserverAddress)

voidsetNumberOfRetries(intnumber)

voidsetTimeout(intnewTimeout)

int timeout()const

其中numberOfRetries以及setTimeout是用于設置重試次數和超時時間的。send*Request系列函數是用于發送MODBUS數據包的函數,其中數據相關的都用之前介紹的QModbusDataUnit類對象作為函數參數。

截取部分Qt例程modbusmaster發送讀請求的代碼如下:

首先設置連接類型(RTU/TCP)、重試次數、超時時間等,然后建立連接:

if(static_cast(ui->connectType->currentIndex()) == Serial) {

modbusDevice->setConnectionParameter(QModbusDevice::SerialPortNameParameter,

ui->portEdit->text());

modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,

m_settingsDialog->settings().parity);

modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter,

m_settingsDialog->settings().baud);

modbusDevice->setConnectionParameter(QModbusDevice::SerialDataBitsParameter,

m_settingsDialog->settings().dataBits);

modbusDevice->setConnectionParameter(QModbusDevice::SerialStopBitsParameter,

m_settingsDialog->settings().stopBits);

}else{

const QUrl url = QUrl::fromUserInput(ui->portEdit->text());

modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter, url.port());

modbusDevice->setConnectionParameter(QModbusDevice::NetworkAddressParameter, url.host());

}

modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);

modbusDevice->setNumberOfRetries(m_settingsDialog->settings().numberOfRetries);

if(!modbusDevice->connectDevice()) {

statusBar()->showMessage(tr("Connect failed: ") + modbusDevice->errorString(), 5000);

}

設置讀取數據類型、地址等參數:

QModbusDataUnit MainWindow::readRequest()const

{

constautotable =

static_cast(ui->writeTable->currentData().toInt());

intstartAddress = ui->readAddress->value();

Q_ASSERT(startAddress >= 0 && startAddress < 65535);

// do not go beyond 10 entries

int numberOfEntries = qMin(ui->readSize->currentText().toInt(), 65535 - startAddress);

return QModbusDataUnit(table, startAddress, numberOfEntries);

}

發送讀數據請求:

voidMainWindow::on_readButton_clicked()

{

if (!modbusDevice)

return;

ui->readValue->clear();

statusBar()->clearMessage();

if (auto*reply = modbusDevice->sendReadRequest(readRequest(), ui->serverEdit->value())) {

if (!reply->isFinished())

connect(reply, &QModbusReply::finished,this, &MainWindow::readReady);

else

deletereply; // broadcast replies return immediately

}else{

statusBar()->showMessage(tr("Read error: ") + modbusDevice->errorString(), 5000);

}

}

可以看到使用Qt提供的API進行MODBUS通訊編程很便捷,只需要首先設置數據QModbusDataUnit,然后調用相應的Request函數發送請求即可。

modbusmaster程序運行效果如下圖:

我們使用ESM6802連接ADAM模塊進行測試連接圖如下:

ADAM-4117進行電流采集時電流輸入量程為4~20mA,對應的采樣值為0x0000~0xffff。有關AMAM-4117的介紹可以參考我們官網上的文章:《4~20mA模擬電流采集應用方案》。當輸入12.0mA(半量程)時讀到采樣值為0x8007,可見modbusmaster與AMAM模塊正確進行了數據通信。

更多Qt MODBUS相關內容請參考Qt官方資料:http://doc.qt.io/qt-5/qtmodbus-backends.html。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6097

    瀏覽量

    36197
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    K230支持ONVIF上傳視頻嗎?

    K230支持ONVIF上傳視頻嗎
    發表于 06-20 07:11

    請問ADS1255/6支持菊花鏈嗎?

    ADS1255/6支持菊花鏈嗎?連接方法是否同ADS1271?菊花鏈連接以后各ADC是否同步采集,順序輸出數據?
    發表于 02-12 06:05

    P82B96支持HDCP嗎?

    你好:我用P89B96用做HDMI的DDC通道的I2C的轉換,我現在是解決了II2問題,但是它里面有個HDCP保護協議通過DDC通道,感覺它有延時一樣,不穩定。請問是否用P82B96支持HDCP?
    發表于 12-27 07:01

    ADS1256支持菊花鏈連接嗎?

    求助:1、ADS1256支持菊花鏈連接嗎? 2、如果不支持菊花鏈連接,能否把多片ADS1256掛在同一個SPI(CLK,MISO,MOSI)總線上,通過不同的CS來選擇芯片? 3、多片ADS1256能否支持廣播,來啟動所有芯片
    發表于 12-24 06:03

    請問PCM9211支持HDMI音頻輸入嗎?

    請問PCM9211支持HDMI 2.1 eARC 標準的幀的專用輸入,是否同時支持HDMI音頻輸入。
    發表于 10-17 07:53

    TMS320DM6467支持HDMI發射器/接收器

    電子發燒友網站提供《TMS320DM6467支持HDMI發射器/接收器.pdf》資料免費下載
    發表于 10-15 11:36 ?0次下載
    TMS320DM6467<b class='flag-5'>支持</b>HDMI發射器/接收器

    請問TAS5727支持幾段EQ?

    TAS5727支持幾段EQ? 比如PCM5121支持7段以上,TAS5727可以么?
    發表于 10-14 07:02

    TPS272C45支持遠程I/Os的智能電源管理

    電子發燒友網站提供《TPS272C45支持遠程I/Os的智能電源管理.pdf》資料免費下載
    發表于 09-25 11:13 ?4次下載
    TPS272C45<b class='flag-5'>支持</b>遠程I/Os的智能電源管理

    請問OPA2541支持單電源嗎?如果支持此時功放范圍是多少?

    請問OPA2541支持單電源嗎?如果支持此時功放范圍是多少?
    發表于 09-02 07:42

    TUBS8041支持從設備嗎?

    TUBS8041支持從設備么?
    發表于 08-19 06:22

    請問TL072支持單端供電嗎?

    TL072支持單端供電嗎?看到規格書上的建議運行條件,VCC-的電壓最大值為-5V,沒有0;現在有電路上VCC+接的是12V,VCC-接的是地,單端供電,這樣貌似芯片也能正常運行,可靠嗎?
    發表于 08-02 06:57

    ESP32支持OpenHarmony嗎?

    ESP32支持OpenHarmony嗎,可以用AT命令卡控制鴻蒙智聯的連接嗎,使用ESP32模組的情況下帶寬是否能支持視頻流的上傳
    發表于 07-19 06:07

    TUSB6250支持USB 2.0 HS的功能控制器數據表

    電子發燒友網站提供《TUSB6250支持USB 2.0 HS的功能控制器數據表.pdf》資料免費下載
    發表于 07-12 09:47 ?0次下載
    TUSB6250<b class='flag-5'>支持</b>USB 2.0 HS的功能控制器數據表

    請問visionFive2支持哪些操作系統?

    visionFive2支持哪些操作系統?
    發表于 07-03 07:30

    esp32-S3支持arduino編程嗎?

    arduino選開發板的時候沒有es32-s3, 只有s2可選。 請問: 1. esp32-S3支持arduino編程嗎 2. arduino下sample下的BLE庫能用嗎? 3. esp32-s3能作為usb host嗎?相應的arduino庫是不是USBSeria
    發表于 06-27 08:23
    主站蜘蛛池模板: 国产色中色 | 日韩三级精品 | 欧美一区中文字幕 | 亚洲一区二区黄色 | 一级片免费在线观看视频 | 天天在线天天在线天天影视 | 亚洲国产成人精品女人久久久 | 亚洲乱亚洲乱妇41p国产成人 | 亚洲精品一区二区中文 | 中国男女全黄大片一级 | 成人免费国产gav视频在线 | 亚洲国产午夜精品理论片的软件 | 黄色视屏在线免费播放 | 在线观看一级片 | 午夜视频久久 | 日本天天射| 夜夜春色 | 伊人天堂在线 | 四虎永久在线精品影院 | 天堂网中文 | 男人视频网 | 一区二区中文字幕在线观看 | 欧美网色 | 欧美成人性色区 | 91精品啪国产在线观看免费牛牛 | 成年片色大黄全免费网址 | 7777奇米| 人成电影免费观看在线 | 亚色中文字幕 | 欧美影院一区二区 | 男啪女视频免费观看网站 | 天堂最新版资源www在线 | 欧美三级视频网站 | 欧美日韩精品乱国产 | 国产福利你懂的 | 在线永久免费观看黄网站 | 2019国产情侣| 日本黄色短视频 | 久操久操| 四虎网址在线观看 | 天天插日日干 |