C# OPC UA服務器 OPC UA網關 三菱 西門子 歐姆龍 Modbus轉OPC UA 服務器 可配置的OPC UA服務器網關 HslSharp軟件文檔
前言
本文將使用一個基於開源項目HslCommunication創建的OPC UA網關,方便通過配置創建一個OPC UA的網關中心。具體的操作及支持的設備信息項目參照下面:
開源項目HslCommunication的github地址:https://github.com/dathlin/HslCommunication 如果喜歡可以star或是fork,還可以打賞支持。此項目在工業界非常的流行,用來采集設備的數據以及在多個軟件之間進行數據傳送,以及一些簡單的控件顯示。
聯系作者及加群方式(激活碼在群里發放):http://www.hslcommunication.cn/Cooperation
在Visual Studio 中的NuGet管理器中可以下載安裝,也可以直接在NuGet控制台輸入下面的指令安裝:
1
|
Install-Package HslCommunication
|
NuGet安裝教程 http://www.cnblogs.com/dathlin/p/7705014.html
Demo軟件下載
版本將會隨着更新功能會有所變化,相應的本博客也會有更新,如下也會做一些更新日志的聲明:
v0.0.1
2018年5月1日 13:47:22
預發行版,初步的測試。
特性支持
- 支持空設備節點,創建單純的節點以供設備讀寫
- 支持三菱PLC的設備節點,針對的MC協議的二進制和ASCII的機制
- 支持西門子設備節點,支持S7協議,Fetch/Write
- 支持歐姆龍設備節點,支持FINS/TCP節點
- 支持Modbus-Tcp設備節點
- 支持異形Modbus-Tcp設備節點
- 支持NetSimplify客戶端節點,這個協議可以在多個電腦之前傳送數據。
使用說明
本軟件的OPC UA的節點配置需要要節點配置器和解析規則配置器組成,節點配置器來配置OPC UA的節點分類規則,節點描述等信息,但是具體的數據標簽由解析規則配置器組成。
以下就具體說明下程序大致的配置步驟:
- 配置客戶端分類信息,新增想要的設備,新增設備時需要選擇相應的設備類型。
- 新建完設備類型之后,需要配置數據請求,指定讀取的地址,讀取的長度,然后配置解析規則代碼。
- 如果沒有解析規則代碼,那就需要先配置規則解析,本系統支持可視化的規則配置,具體的配置方法本文下文會深度講解。
主界面的簡單介紹
打開軟件的主界面,如下,在初次使用軟件的時候,系統默認了三個固定的根節點
- Devices 設備類的根節點
- ModbusServer Modbus服務器的節點,目前不支持
- ModbusAlien 異形ModbusTcp設備對象
如果沒有配置軟件節點信息,那就需要先點擊 系統配置 的 節點配置 菜單了。主界面如下
節點配置的界面如下,此處有個細節,點擊節點名稱,即可以在右側的數據列表里顯示出來當前選擇的節點的詳細信息,做左側節點的操作,通過鼠標右鍵的菜單來操作:
添加節點分類操作
此處簡單的演示添加一個簡單的分類操作信息。鼠標在Devices上右鍵即可操作
然后就會彈出一個編輯框,這樣我們就實現了一個類別節點的添加,注意:類別節點是可以相互嵌套的,可以形成復雜的分類
復雜類型節點舉例:
然后點擊 保存文件 菜單,然后關掉當前窗口,回到主界面,點擊 啟動引擎,點擊 測試客戶端 菜單,啟動一個通用的OPC UA客戶端來瀏覽服務器上有什么數據信息
可以看到OPC UA的服務器已經按照我們設想創建好了數據節點信息。然后重啟軟件,我們重新進入 節點配置器 節點進行操作。
編輯和刪除節點操作
想要對哪個節點進行操作,就選擇哪個節點,然后右鍵,發現就2個額外的操作選擇,編輯節點 和 刪除節點 。注意,這里的編輯和刪除適用於所有分類節點和設備節點,准確的說,除了3個根節點外不能修改外,其他節點都是可修改的。
刪除節點的時候需要注意有個細節:如果當前刪除的節點沒有子節點,該節點直接進行刪除,如果包含了子節點,將會彈出一個對話框。
新增一個演示設備示例,Modbus-Tcp設備
此處我們演示一個例子,添加一個Modbus-Tcp的設備,為啥要拿這個演示呢,因為基於HslCommunication組件的項目中提供了一個Modbus服務器演示項目,可以方便的進行本機的調試測試等等操作。
下載地址:ModbusTcpServer.zip
在開始開發前,還要說明個事情,雖然HslCommunication組件支持讀取線圈,寄存器,輸入點操作,但是此處只支持讀取寄存器,如果要讀取線圈怎么辦,可以采用的解決方案是把線圈的數據先挪到寄存器里,再進行解決。
OK,萬事俱備,開始吧。
然后我們輸入好設備的基本信息,比如說名字,描述,IP地址,端口號,客戶端的站號等等操作
然后點擊 確認 。回到節點配置器如下:
這樣就添加成功了一個設備,我們選中這個節點后,右側的數據列表就顯示了這個設備的相關信息。
先不要急着給設備添加訪問請求,因為目前沒有 配置解析規則 ,那么接下來的操作是點擊上圖的 保存文件 按鈕操作,然后回到主界面
這時候我們進入一個關鍵的操作,那就是配置解析規則,這個是什么意思呢,我先解釋下,我們從設備讀取數據通常是字節數據,並不是一些基礎的數據類型,比如說short,ushort,int,uint,float.double之類的數據,這個解析規則就是起這樣的作用的。比如ModbusTcp我們需要讀取20個地址長度的寄存器,那么讀取出來以后就是40字節長度,這些寄存器里都有什么數據呢
[ 0 - 1 ] 數據一 short類型
[ 2 - 3 ] 數據二 ushort類型
[ 4 - 7 ] 溫度 float類型
[ 8 - 31 ] 機器人關節數據 共計6個長度的float數組
[ 32 - 39 ] 條碼 共計8個字節長度
以上是我們假設的數據,因為我也不知道您實際中會碰到怎樣的情況,此處就做了一些比較經驗的假設,還假設了一個數組的存在,條碼的字符串存在,OK,有了這些信息,我們就可以添加解析規則了。
還是老的操作,我們接下來要看看需要我們輸入什么信息了。
隨便輸入一個規則名稱吧,然后點擊 確認。
接下來我們就需要來添加真正的規則解析了。
先根據上面的信息來填寫數據一的信息,索引為0,數據長度為1,因為沒有數組。點擊確認。
然后繼續添加規則
然后添加溫度數據
然后再添加機器人位置數據,注意,這是一個數組,長度為6,那么按照下面設置,數據長度的信息需要設置為6
在添加最后一個數據為條碼
到這里為止,我們添加了所有的數據了,回到 解析規則器配置界面 ,看看剛剛配置到的成果吧,
左邊顯示了字節的信息,共配置了40個字節的數據,每種數據類型的背景顏色都不一致,用於快速的區分不同種類的數據類型,可視化的界面顯示了所有配置的數據信息,類型,已經所在的字節位置。方便的快速檢查有沒有遺漏的信息。
確認可以之后,點擊菜單的 保存文件 按鈕,然后回到節點配置器
這下子可以真的完成數據配置界面了,這里再假設我們需要讀取的數據在地址0開始的20個地址的寄存器里。
接下來就按照我們假設的信息輸入
這里的請求地址是寄存器的地址,地址規則如下:
- Modbus協議 就是純數字的內容
- 三菱PLC D100,或是W1A0
- 西門子PLC M100,DB20.30之類的
- 歐姆龍 D100,A100
- SimplifyNet 純數字,或是1.0.3
這有什么規律呢,我們可以發現這些地址的格式需要HslCommunication支持,所以在配置前,最好使用HslCommunicationDemo軟件進行簡單的測試,關於該軟件的下載地址:
添加完成后,保存。回到軟件的主界面。然后點擊 啟動引擎 ,這時候我們還沒開始Modbus服務器,看看有什么效果。
下面顯示加載的設備信息中發現了一台設備,類型為ModbusTcp設備,這台設備的服務器我們還沒有開啟,所以在設備監控項里這個設備處於閃爍中,我們把鼠標移動這個小框框里看看,
可以看到一些設備的基本信息,名稱,狀態,上次接收時間,這里的上次接收時間是什么意思呢,初始化的情況下,默認為1天之前,好了,接下來我們開好服務器的軟件。
我們一點擊 啟動服務 按鈕后,運行日志立馬顯示有設備連接上來了,
當HslSharp的設備連接上了服務器之后,會怎么樣呢。
背景顏色已經變綠色了,上次接收時間也更新了,狀態也變成了 在線 狀態,然后我們在看看OPC UA的客戶端,有什么效果。
然后我們更改下數據試試,在Modbus服務器的界面,在地址2里寫入float類型的數據,123.456試試看
然后再去OPC UA的客戶端界面刷新數據看看數據效果
此處驗證成功,再寫一個吧,寫個條碼信息,在地址16-19里,寫入ABCDEFGH;
我們就可以看到
此處有個小BUG,做演示截圖的時候來不及改這個BUG了,后面肯定會修復。並在日志里聲明
特別說明
你看我們在配置數據解析規則的時候並沒有指定數據的大小端,比如三菱是小端在前,大端在后的,西門子是大端在前,小端在后的,Modbus協議和歐姆龍是以字為單位反轉的。實際上在本軟件中無需理會,我們只要關注什么數據,占了多少長度即可。還是相當方便的。如果有更好的建議,可以聯系作者改進。
ModbusTcp異形客戶端配置
異形ModbusTcp的配置和大體上和上面的ModbusTCP配置是一樣的,但有一些小區別,需要下次完善更新。