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

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

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

3天內不再提示

邊緣網關教程-Modbus協議轉MQTT協議

IOTRouter ? 來源:IOTRouter ? 作者:IOTRouter ? 2024-07-03 10:37 ? 次閱讀

需求概述

主要實現一個流程:

1.采集Modbus電表數據上傳到MQTT指定topic

2.如果傳感器未響應需要發送報警信息到指定topic

3.MQTT連接成功時發送注冊信息

4.周期推送心跳到指定topic

5.云端下發控制EG8200繼電器并回復

對接資料

1.南向接口 RS485對接協議(標準modbus)

點位 字段 寄存器地址 解析方式
A相電壓 voltageA 40001~40002 float32 ABCD
B相電壓 voltageB 40003~40004 float32 ABCD
C相電壓 voltageC 40005~40006 float32 ABCD
A相電壓 currentA 40007~40008 float32 ABCD
B相電壓 currentB 40009~40010 float32 ABCD
C相電壓 currentC 40011~40012 float32 ABCD

2.北向接口協議說明:

MQTT連接信息
Broker 139.129.229.113
Clientid TestClient
Username 82000000305E144F
Password EG12345678
Topic報文格式
功能 Topic 數據流向 報文示例
信息注冊 data/sg/${sn}/info 網關->平臺 {
"sn":"82000000305E144F",
"time":"2023-01-01 12:00:00"
}
數據上報 data/sg/${sn}/report 網關->平臺 {
"sn":"82000000305E144F",
"data":{
"voltageA":0,
"voltageB":0,
"voltageC":0,
"currentA":0,
"currentB":0,
"currentC":0
},
time:"2023-01-01 12:00:00"
}
心跳 data/sg/${sn}/heart 網關->平臺 {
"sn":"82000000305E144F",
"data":{},
"message":"heart",
"time":"2023-01-01 12:00:00"
}
報警 data/sg/${sn}/warn 網關->平臺 {
"sn":"82000000305E144F",
"data":{},
"message":"offline",
"time":"2023-01-01 12:00:00"
}
平臺控制 /data/sg/${sn}/request 平臺->網關 {
"event_id":"HsUCigC4Jk",
"data": {
"parameter": "DO1",
"value": 0
}
}
控制回復 data/sg/${sn}/response 網關->平臺 {
"event_id":"HsUCigC4Jk",
"message":"OK",
"data":{},
"time":"2023-01-01 12:00:00"
}

需求分析

注冊與連接工作

a.建立MQTT連接,發布到注冊主題(MQTT發布節點)注:MQTT訂閱發布節點連接信息共享,其他MQTT無需在配置連接參數,選擇第一次配置的連接參數即可

b.監聽MQTT連接狀態(狀態變化節點)

c.封裝注冊信息(函數節點)

數據上報

a.modbus讀取電表數據(modbus讀節點)

b.判斷傳感器是否有回復并封裝上報報文(函數節點)

c.配置對應的發布主題(MQTT發布節點)

心跳推送

a.注入節點周期觸發(注入節點)

b.封裝心跳報文(函數節點)

c.MQTT發布數據(MQTT發布節點)

下發控制

a.MQTT訂閱云端下發主題(MQTT訂閱節點)

b.解析云端數據,并控制對應DO(函數節點)

c.響應MQTT控制情況(函數節點)

d.上報響應報文(MQTT發布)

實現流程框架

wKgZomaEt1uAGN4qAABu4JP5xmw397.png

需求實現

1.監聽MQTT狀態并發布注冊信息

a.從節點庫拖出一個MQTT發布節點,函數節點,調試節點,狀態監測節點和條件判斷節點,MQTT發布用于消息發布,函數節點用于注冊信息封裝,狀態檢測節點用于檢測MQTT的連接狀態,調試節點用于打印發布的報文

wKgZomaEt2uAWCAWAAF4ebgsg2A254.png

b.從上可以看見日志打印了注冊報文,以及MQTTx端以及接收到了注冊信息

wKgaomaEt32AM3yLAAGesr-MT8g037.png

c.注冊流程使用的代碼塊:

const fmt = dateFormat("YYYY-mm-dd HH:MM:SS", new Date())

let obj = {
    "sn": "82000000305E144F",
    "time": fmt
}

function dateFormat(fmt, timestamp) {
    let ret;
    const opt = {
        "Y+": timestamp.getFullYear().toString(), // 年
        "m+": (timestamp.getMonth() + 1).toString(),  // 月
        "d+": timestamp.getDate().toString(), // 日
        "H+": timestamp.getHours().toString(), // 時
        "M+": timestamp.getMinutes().toString(), // 分
        "S+": timestamp.getSeconds().toString() // 秒
        // 有其他格式化字符需求可以繼續添加,必須轉化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}

msg.payload = JSON.stringify(obj)
return msg

2.數據上報

a.從節點庫拖出一個注入節點,函數節點和一個MQTT發布節點,注入節點用于周期觸發,函數節點用于封裝心跳報文,MQTT發布節點用于心跳發布

wKgaomaEt5yAGYc1AAHXgK03t6I764.png

b.從上面可以看到日志窗口打印了數據報文,MQTTx也接收到了上報數據

wKgZomaEt6qAblqPAAHzi27BQzo469.png

c.數據上報流程使用的代碼塊:

function dateFormat(fmt, timestamp) {
    let ret;
    const opt = {
        "Y+": timestamp.getFullYear().toString(), // 年
        "m+": (timestamp.getMonth() + 1).toString(),  // 月
        "d+": timestamp.getDate().toString(), // 日
        "H+": timestamp.getHours().toString(), // 時
        "M+": timestamp.getMinutes().toString(), // 分
        "S+": timestamp.getSeconds().toString() // 秒
        // 有其他格式化字符需求可以繼續添加,必須轉化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}

var flag = msg.status
var data = msg.payload
var payload
const fmt = dateFormat("YYYY-mm-dd HH:MM:SS", new Date())

if (flag == "TIMEOUT") {
    payload = {
        "sn": "82000000305E144F",
        "data": {},
        "message": "offline",
        "time": fmt
    }
    msg.payload = JSON.stringify(payload)
    return [msg, null]
}
else if (flag == "OK") {
    payload = {
        sn: "02C00081275A574E",
        data,
        time: fmt
    }
    msg.payload = JSON.stringify(payload)
    return [null, msg]
}

3.心跳推送

a.從節點庫拿出一個注入節點,函數節點,MQTT發布節點。注入節點用于周期發發送心跳,函數節點用于封裝心跳報文,MQTT發布節點用于發布到MQTT

wKgZomaEt7-AWVocAAJlZz-ZS_Y845.png

b.從上面可以看到日志窗口打印了心跳報文,MQTTx也接收到了心跳報

wKgaomaEt8eAQMTlAAHOWaHue9g429.png

心跳上報流程使用的代碼塊:

const fmt = dateFormat("YYYY-mm-dd HH:MM:SS", new Date())

function dateFormat(fmt, timestamp) {
  let ret;
  const opt = {
    "Y+": timestamp.getFullYear().toString(), // 年
    "m+": (timestamp.getMonth() + 1).toString(),  // 月
    "d+": timestamp.getDate().toString(), // 日
    "H+": timestamp.getHours().toString(), // 時
    "M+": timestamp.getMinutes().toString(), // 分
    "S+": timestamp.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以繼續添加,必須轉化成字符串
  };
  for (let k in opt) {
    ret = new RegExp("(" + k + ")").exec(fmt);
    if (ret) {
      fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
    };
  };
  return fmt;
}

let obj = {
  "sn": "82000000305E144F",
  "data": {},
  "message": "heart",
  "time": fmt
}
msg.payload = JSON.stringify(obj)
return msg;

4.下發控制及響應

a.從節點庫拿出一個MQTT訂閱節點,MQTT發布節點,函數節點和DO節點,MQTT訂閱節點和MQTT發布節點用于接收云端發來的數據和控制響應,函數節點用于解析下發的報文和控制的響應報文封裝

wKgaomaEt9aAYWXtAAJQ_PKGmCk107.png

b.從上面可以看到日志窗口打印了報文,MQTTx也接收到了控制響應

wKgZomaEt-aANZv_AAGjccNC5Zk976.png

c.控制流程使用的代碼塊


//云端下發解析
//############################
if (msg.payload.length < 10) { return }

if (typeof (msg.payload) == "object") {
    var obj = msg.payload
    //信息獲取
    let event_id = obj.event_id;
    global.set("event_id", event_id)
    let parameter = obj.data.parameter
    let value = obj.data.value
    let arr = []
    switch (parameter) {
        case "DO1":
            arr = value
            break
        case "DO2":
            arr = value
            break
    }

    msg.payload = arr


    return msg;
}
//############################

//反饋響應封裝
//############################
let event_id = global.get("event_id")
const fmt = dateFormat("YYYY-mm-dd HH:MM:SS", new Date())
function dateFormat(fmt, timestamp) {
    let ret;
    const opt = {
        "Y+": timestamp.getFullYear().toString(), // 年
        "m+": (timestamp.getMonth() + 1).toString(),  // 月
        "d+": timestamp.getDate().toString(), // 日
        "H+": timestamp.getHours().toString(), // 時
        "M+": timestamp.getMinutes().toString(), // 分
        "S+": timestamp.getSeconds().toString() // 秒
        // 有其他格式化字符需求可以繼續添加,必須轉化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}

let obj = {
    "event_id": event_id,
    "message": "OK",
    "data": {},
    "time": fmt

}

msg.payload = JSON.stringify(obj);
return msg;
//############################

通過以上步驟,你可以在邊緣網關上成功實現 Modbus 協議到 MQTT 協議的轉換。這種集成方式不僅簡化了工業設備與物聯網平臺的通信,還增強了數據的實時性和可靠性。希望本文能為你提供有用的指導,助你更好地利用 Modbus 和 MQTT 技術

審核編輯 黃宇

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

    關注

    28

    文章

    1825

    瀏覽量

    77358
  • 網關
    +關注

    關注

    9

    文章

    4611

    瀏覽量

    51558
  • MQTT
    +關注

    關注

    5

    文章

    655

    瀏覽量

    22725
收藏 人收藏

    評論

    相關推薦

    Modbus協議Profinet協議網關與氣體監測系統配置案例

    Modbus協議和Profinet協議作為工業領域常見的兩種通訊協議,各自具有一定的特點和應用范圍。ModbusProfinet
    的頭像 發表于 06-13 17:50 ?1475次閱讀
    <b class='flag-5'>Modbus協議</b><b class='flag-5'>轉</b>Profinet<b class='flag-5'>協議</b><b class='flag-5'>網關</b>與氣體監測系統配置案例

    Modbus協議Profibus協議網關接溫控表與PLC通訊

    Modbus協議Profibus協議網關(XD-MDPB100)則是實現這一通訊的重要工具。Modbus
    的頭像 發表于 06-21 11:31 ?2004次閱讀
    <b class='flag-5'>Modbus協議</b><b class='flag-5'>轉</b>Profibus<b class='flag-5'>協議</b><b class='flag-5'>網關</b>接溫控表與PLC通訊

    巴圖自動化Profinet協議Modbus協議網關模塊連接智能儀表與PLC通訊

    巴圖自動化Profinet協議Modbus協議網關模塊(BT-MDPN10)的主要功能是實現Modbus協議和Profinet
    的頭像 發表于 07-04 11:35 ?2766次閱讀
    巴圖自動化Profinet<b class='flag-5'>協議</b><b class='flag-5'>轉</b><b class='flag-5'>Modbus協議</b><b class='flag-5'>網關</b>模塊連接智能儀表與PLC通訊

    Modbusprofient網關連接Smart PLC實現Profinetmodbus協議轉換

    Modbusprofinet網關連接西門子/DCS及機器人Profinetmodbus協議轉換,不需要PLC或者Profinet主站編程
    發表于 03-22 19:13

    西門子S7協議Modbus協議網關

    西門子S7協議Modbus協議網關
    發表于 11-13 15:03 ?1885次閱讀

    歐姆龍CP1L-ELModbus協議歐姆龍PLCModbus協議

    歐姆龍PLCModbus協議 歐姆龍CP1L-ELModbus協議
    的頭像 發表于 11-06 15:55 ?3167次閱讀
    歐姆龍CP1L-EL<b class='flag-5'>轉</b><b class='flag-5'>Modbus協議</b>歐姆龍PLC<b class='flag-5'>轉</b><b class='flag-5'>Modbus協議</b>

    4G無線ModbusMQTT協議網關BL100產品簡介

    4G無線ModbusMQTT協議網關
    發表于 08-19 15:22 ?22次下載

    Modbus協議網關是什么?Modbus協議網關的功能

    數據的互聯互通。Modbus協議作為一種廣泛應用于工業控制領域的通信協議,主要用于在主設備(如PLC、SCADA系統)與從設備(如傳感器、執行器、智能儀表等)之間交換數據。 Modbus協議
    的頭像 發表于 04-11 15:51 ?830次閱讀

    Profibus協議Modbus協議網關模塊在船舶中的應用

    本文主要介紹了Profibus協議Modbus協議網關模塊(XD-MDPB100)在船舶中的應用。 Profibus
    的頭像 發表于 06-27 17:25 ?569次閱讀
    Profibus<b class='flag-5'>協議</b><b class='flag-5'>轉</b><b class='flag-5'>Modbus協議</b><b class='flag-5'>網關</b>模塊在船舶中的應用

    鋇錸協議網關輕松實現ModbusMQTT協議

    效的數據交換。本文從Modbus協議轉換為MQTT協議的必要性為出發點,分析鋇錸ModbusMQTT
    的頭像 發表于 07-23 15:51 ?440次閱讀
    鋇錸<b class='flag-5'>協議</b><b class='flag-5'>網關</b>輕松實現<b class='flag-5'>Modbus</b><b class='flag-5'>轉</b><b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>

    基于MQTT協議云平臺的ModbusMQTT網關

    鋇錸ModbusMQTT網關BL100是一款高性能、高性價比的物聯網網關,它支持將Modbus協議
    的頭像 發表于 07-29 17:59 ?852次閱讀
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>云平臺的<b class='flag-5'>Modbus</b><b class='flag-5'>轉</b><b class='flag-5'>MQTT</b><b class='flag-5'>網關</b>

    鋇錸技術ModbusMQTT網關:橋接Modbus協議MQTT協議

    提供了一鍵對接亞馬遜云平臺的解決方案。 BL101網關是鋇錸技術研發的一款高性能工業物聯網設備,通過橋接Modbus協議MQTT通信協議,實現了工業設備與云端平臺之間的高效互聯。支持
    的頭像 發表于 07-30 16:28 ?463次閱讀
    鋇錸技術<b class='flag-5'>Modbus</b><b class='flag-5'>轉</b><b class='flag-5'>MQTT</b><b class='flag-5'>網關</b>:橋接<b class='flag-5'>Modbus協議</b>與<b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>

    BACnetModbus協議網關實現設備無縫對接GE Digital iFIX

    與整合,實現協議間的無縫轉換,鋇錸技術隆重推出BACnetModbus協議網關BL120BN,為用戶提供了一個既高效又可靠的解決方案。 一、BACnet
    的頭像 發表于 08-06 17:32 ?476次閱讀
    BACnet<b class='flag-5'>轉</b><b class='flag-5'>Modbus協議</b><b class='flag-5'>網關</b>實現設備無縫對接GE Digital iFIX

    Modbus、樓宇自控、電力協議Modbus協議網關BL120ML支持一鍵對接LabVIEW

    Modbus樓宇自控電力協議Modbus協議網關BL120ML在LabVIEW中的實際應用中,我們首先需要理解LabVIEW和
    的頭像 發表于 08-10 10:40 ?485次閱讀
    <b class='flag-5'>Modbus</b>、樓宇自控、電力<b class='flag-5'>協議</b><b class='flag-5'>轉</b><b class='flag-5'>Modbus協議</b><b class='flag-5'>網關</b>BL120ML支持一鍵對接LabVIEW

    使用Modbus、樓宇自控、電力協議Modbus協議網關實現生產設備的遠程監控和管理

    Modbus協議、樓宇自控、電力協議Modbus協議網關,將不同類型的生產設備數據集中傳輸到監控系統,實現遠程監控和管理。 我們先來看整
    的頭像 發表于 08-08 17:29 ?445次閱讀
    使用<b class='flag-5'>Modbus</b>、樓宇自控、電力<b class='flag-5'>協議</b><b class='flag-5'>轉</b><b class='flag-5'>Modbus協議</b><b class='flag-5'>網關</b>實現生產設備的遠程監控和管理
    主站蜘蛛池模板: 日本黄色网址大全 | 国产伦精品一区二区三区 | 男子扒开美女尿口做羞羞的事 | 一区二区三区四区在线免费观看 | 青草青青产国视频在线 | www.av网站 | 久久久久国产精品 | 大蕉久久伊人中文字幕 | 99久久精品免费观看国产 | 免费抓胸吻胸激烈视频网站 | 456成人免费高清视频 | 国产日本三级在线播放线观看 | 日本a级特黄三级三级三级 日本边添边爱边摸边做边爱 | 亚洲色图欧美在线 | 国产精品你懂的在线播放 | 很黄很色的网站 | 特级毛片a级毛免费播放 | 日日干视频 | 欧美色图亚洲激情 | 国产成人经典三级在线观看 | 色综合久久天天综合观看 | 能在线观看的一区二区三区 | 亚洲色图日韩 | 国产小视频你懂的 | 色视频大全 | 日本五十交尾在线观看 | 日本高清色视频www 日本高清色视频在线观看免费 | 日韩一级一片 | 影院成人区精品一区二区婷婷丽春院影视 | 成人看片免费无限观看视频 | 男女做视频网站免费观看 | 亚洲成人av| 亚洲情a成黄在线观看动 | 激情五月综合综合久久69 | 人人揉揉香蕉大免费不卡 | 亚洲夜夜操 | 一级特级女人18毛片免费视频 | 亚洲影视一区二区 | 色多视频| 欧美黄色免费 | 四虎国产成人亚洲精品 |