什么是neuron
Neuron 是一款開源的、輕量級工業(yè)協(xié)議網(wǎng)關軟件,支持數(shù)十種工業(yè)協(xié)議的一站式設備連接、數(shù)據(jù)接入、MQTT 協(xié)議轉換,為工業(yè)設備賦予工業(yè) 4.0 時代關鍵的物聯(lián)網(wǎng)連接能力。
為什么選擇neuron
1. 開放源碼-核心框架和 Modbus 驅動的代碼在 LGPL 下授權。
2. 多種協(xié)議-支持訪問 20 多種工業(yè)協(xié)議,包括 Modbus、OPC-UA,以及更多。
3. 邊緣原生-實時運行以利用邊緣的超低延遲的工業(yè)數(shù)據(jù)處理。
4. 高性能-連接數(shù)百個工業(yè)設備,輕易地處理超過 10,000 個數(shù)據(jù)點。
5. 超輕量級-具有較低的內(nèi)存佔用,小于 10M,在低配置的硬件上運行。
6. 便攜式部署-可在 X86、ARM、RISC-V 和其他架構的邊緣硬件上進行部署。
產(chǎn)品架構
Neuron 是基于現(xiàn)代消息總線架構設計的,具有高性能、可擴展性和可延伸性。
快速上手
Nruron服務器的部署
1. 下載
Neuron: 開源工業(yè)協(xié)議網(wǎng)關軟件 (neugates.io),從官方網(wǎng)站上點擊下載
選擇符合對應服務器的安裝包或選擇docker部署
2. 安裝
此次演示通過二進制安裝包安裝.
(1) 首先將下載的安裝包上傳到服務器上,然后選擇合適位置創(chuàng)建文件夾方便統(tǒng)一管理
(2) 解壓壓縮包- tar -zxvf neuron-2.6.7-linux-amd64.tar.gz
(3)然后通過./neuron –d 啟動neuron.
(4)啟動neuron之后可以通過http://x.x.x.x:7000登錄到neuron的管理控制臺,初始用戶名密碼為admin 0000
(5) 登陸進入后可以通過右上角切換中文
此次演示選用modbus tcp作為北向設備連接協(xié)議,使用Modbus Slave模擬器模擬設備連接
1. 啟動modbus模擬器,配置存儲區(qū)為4區(qū),可支持讀寫操作
2. 選擇地址框輸入模擬數(shù)據(jù)
3. 配置完成后回到管理頁面選擇南向連接,選擇添加設備,插件選擇modbus tcp
4. 然后配置設備連接
配置完成后在工作狀態(tài)欄會顯示運行中
5. 點擊設備名進入組列表
6. 點擊創(chuàng)建創(chuàng)建分組
7. 創(chuàng)建完成后點擊組名進入點位列表點擊創(chuàng)建創(chuàng)建點位
8. 其中感嘆號前面1代表設備id后面40001代表地址位
9. 配置完成之后便可以在主頁數(shù)據(jù)監(jiān)控除查看設備上報數(shù)據(jù)
注意: 需要先選擇設備及分組
建立北向連接
本次演示通過mqttx客戶端來進行建立連接
1. 選擇北向應用菜單,選擇添加應用
2. 然后配置mqtt服務器地址及端口用以建立mqtt連接收發(fā)消息
3. 選擇應用添加訂閱將設備上報消息發(fā)送值emqx服務器,再通過mqttx監(jiān)聽對應topic接收消息
訂閱topic接收消息
通過mqttx客戶端連接emqx消息隊列,監(jiān)聽在創(chuàng)建北向應用中創(chuàng)建分組時指定的topic,便可以接收到設備上報的消息
接收到的消息會在mqttx的頁面顯示
可通過查看消息內(nèi)容確定是否與模擬器上設置的值相同.
通過mqttx向neuron發(fā)送讀寫請求從而操作設備
讀請求
通過往固定的topic”/neuron/{node_name}/read/req”發(fā)送消息,來讀取指定的設備,指定點位的數(shù)據(jù)
消息格式:
{
"uuid": "bca54fe7-a2b1-43e2-a4b4-1da715d28eab",
"node": "modbus",
"group": "grp"
}
node: 某個南向節(jié)點名字。
group: 南向節(jié)點的某個組的名字。
uuid: 唯一的標志,會在響應中原樣返回用以區(qū)分對應的請求。
注意:
topic中的node_name是北向應用的名稱,消息中的node和group為南向設備的名稱和其中的分組,因為可能某些設備不支持讀取單個點位,所以neuron優(yōu)化了讀取,每次讀取一組點位.
讀響應
固定的topic
”/neuron/{node_name}/read/resp”
消息格式:
{
"uuid": "bca54fe7-a2b1-43e2-a4b4-1da715d28eab",
"tags": [
{
"name": "tag0",
"value": 4,
},
{
"name": "tag1",
"error": 2014
}
]
}
其中tags便是這一組點位數(shù)據(jù)的集合,里面包含請求中指定組的所有點位一次完整的讀請求響應流程
寫請求
Topic: 寫請求的topic是可以在創(chuàng)建北向應用時自定義設置的
無固定的topic.
消息體:
{
"uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",
"node": "modbus",
"group": "grp",
"tag": "tag0",
"value": 1234
}
Uuid: 唯一的標志,會在響應中原樣返回用以區(qū)分對應的請求。
Node: 某個南向節(jié)點名字。
Group: 南向節(jié)點的某個組的名字。
Tag: 要寫入的點位名字。
Value: 要寫入的值
寫響應
Topic: 與請求topic相同都是自定義
消息體:
{
"uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",
"error": 0
}
uuid:與對應請求的uuid相同,
error: 錯誤碼,為0則代表,寫入成功
一次完整的流程,再發(fā)送完寫請求之后可以通過模擬器查看值是否被更改了
一次寫多個
Topic與寫請求相同,只是消息體有所不同
消息體:
{
"uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",
"node": "modbus",
"group": "grp",
"tags": [
{
"tag": "tag0",
"value": 1234
},
{
"tag": "tag1",
"value": 5678
}
]
}
將單獨一個tag放入到了一個tags集合從而實現(xiàn)一次請求寫多個點位.
完整流程如下:
以上便是對于neuron的一些入門操作,如有不足望大家指正.