紫金橋軟件不僅可以從外部的設(shè)備或程序采集數(shù)據(jù)到實時數(shù)據(jù)庫,同時為了良好的開放性,也必須能夠提供一些通用的外部接口,讓其它的系統(tǒng)可以采集自己內(nèi)部的數(shù)據(jù)。為了這一個目的,紫金橋系統(tǒng)提供了DDE和OPC等對外接口。但是這兩種接口有一些缺點,那就是對客戶端要求較高,一般來說只有復(fù)雜的軟件系統(tǒng)才能夠通過這兩種接口采集紫金橋內(nèi)部的數(shù)據(jù)。而很多相對簡單的系統(tǒng)或功能比較固定的系統(tǒng),卻沒有可以使用的數(shù)據(jù)接口。比如,一些簡單程序、PLC或一些DCS等都要求能有一個相對簡單的接口,來采集紫金橋內(nèi)部的數(shù)據(jù)。Modbus服務(wù)器的出現(xiàn),就解決了這類問題。
Modbus協(xié)議最早是莫迪康公司的PLC設(shè)備支持的一種協(xié)議,用于完成上位機與PLC設(shè)備的通訊過程。后來因為Modbus協(xié)議的通用性、可靠性,現(xiàn)在許多其它的儀表和各種控制系統(tǒng)也都使用此協(xié)議進(jìn)行通訊。所以Modbus服務(wù)器出現(xiàn)后,紫金橋系統(tǒng)的開發(fā)性大大的提高了,很多儀表或控制系統(tǒng)都可以通過Modbus協(xié)議采集紫金橋系統(tǒng)的內(nèi)部數(shù)據(jù)。
紫金橋的Modbus服務(wù)器從1.0開始到3.1版本,功能不斷提升,但是都只能仿真一個Modbus設(shè)備的HR區(qū)域。新的紫金橋Modbus服務(wù)器為4.0版本,它無論在界面上,還是功能上都有了很大的提高。80%以上的代碼都使用.NET開發(fā)工具進(jìn)行了重寫?,F(xiàn)在紫金橋Modbus服務(wù)器已經(jīng)可以把實時數(shù)據(jù)庫中的數(shù)據(jù)映射為任意數(shù)量的Modbus設(shè)備的所有區(qū)域。
下面將介紹一下紫金橋新版Modbus服務(wù)器的一些特性。
-
紫金橋新版服務(wù)器是使用VC++.Net重新開發(fā)的,界面更加美觀,使用更加方便。 紫金橋新版服務(wù)器可以同時支持多個地址的映射,也就是說可以把實時數(shù)據(jù)庫中的數(shù)據(jù)一部分映射為地址1的Modbus設(shè)備,一部分映射為地址2的Modbus設(shè)備等等。 紫金橋新版服務(wù)器可以同時支持多種通訊介質(zhì)的映射,比如以太網(wǎng)和串口。 紫金橋新版服務(wù)器可以同時映射Modbus設(shè)備的所有區(qū)域,包括DI、DO、HR和AR區(qū)。 紫金橋新版服務(wù)器可以同時映射多種數(shù)據(jù)格式,包括16位無符號數(shù)、16位有符號數(shù)、32位無符號數(shù)、32位有符號數(shù)和32位浮點數(shù)。
紫金橋新版服務(wù)器分為服務(wù)器的配置程序和運行程序,下面分別給于簡單的介紹。
-
Modbus服務(wù)器的配置程序
Modbus服務(wù)器的配置程序在紫金橋軟件的安裝目錄中,名為ModbusSerSet.exe,運行時的界面如下圖所示:
Modbus服務(wù)器運行的時候,把紫金橋的數(shù)據(jù)庫點映射到Modbus中的寄存器區(qū)域中,運行時的邏輯結(jié)構(gòu)如下所示:
使用Modbus服務(wù)器配置程序的工具條或菜單就可以定義通訊介質(zhì)和通訊設(shè)備,如下圖所示:
此工具條的前4個按鈕是定義、修改或刪除通道(也就是通訊介質(zhì))的,后三個按鈕是進(jìn)行設(shè)備相關(guān)操作的。
比如下圖是定義串口通道的對話框:
下圖是設(shè)備屬性設(shè)置對話框:
當(dāng)增加了一個設(shè)備之后,該設(shè)備就自動地?fù)碛辛?個區(qū)域,分別是DI、DO、AR、HR區(qū)域。它們和Modbus命令的對應(yīng)關(guān)系如下表所示:
區(qū)域 |
對應(yīng)的可以操作該區(qū)域的Modbus命令號 |
DI |
2號命令讀取 |
DO |
1號命令讀取,5號命令下置 |
AR |
4號命令讀取 |
HR |
3號命令讀取,6號命令下置一個地址,16號下置多個地址。 |
當(dāng)定義完通道和設(shè)備之后就可以給設(shè)備增加寄存器了。
可以使用紫金橋Modbus服務(wù)器設(shè)置程序的右側(cè)的、或來增加、修改或刪除寄存器。
寄存器的屬性對話框如下圖所示:
當(dāng)區(qū)域是DI或DO區(qū)域的時候,只可以選擇開關(guān)量格式。當(dāng)區(qū)域選擇了AR或HR區(qū)域后,可以選擇如下的數(shù)據(jù)格式:
數(shù)據(jù)格式 |
數(shù)據(jù)范圍 |
占用地址個數(shù) |
16位有符號數(shù) |
-32768到32767 |
1 |
16位無符號數(shù) |
0到65535 |
1 |
32位有符號數(shù) |
-2147483648到2147483647 |
2 |
32位無符號數(shù) |
0到4294967295 |
2 |
32位浮點數(shù) |
1.4e-45 到 3.4e+38 |
2 |
在定義寄存器的過程中可能需要調(diào)整寄存器的排列,此時可以使用或來進(jìn)行調(diào)整。
紫金橋Modbus服務(wù)器支持寄存器的批量導(dǎo)入導(dǎo)出功能,同老版本相比,導(dǎo)入導(dǎo)出的文件格式更加清晰易懂。
選擇工具條,就可以把當(dāng)前的內(nèi)容導(dǎo)出為txt文件。
文件的格式如下面Excel表格所示:
意義如下:
第一列是通道名稱,Com1表示通道是串口的,串口號為1,Net502表示通道是以太網(wǎng),端口為502。
第二列是設(shè)備名稱,Dev1表示設(shè)備的地址為1。
第三列是區(qū)域名稱,可以為,DI、DO、AR、HR。
第四列是紫金橋數(shù)據(jù)庫中的點名,注意需要包括參數(shù)名。
第五列是該寄存器的地址,從0開始。
第六列為數(shù)據(jù)格式,可以為BOOL、WORD等,對應(yīng)關(guān)系見下表:
列內(nèi)容 |
數(shù)據(jù)格式 |
數(shù)據(jù)范圍 |
占地址個數(shù) |
BOOL |
開關(guān)量 |
0或1 |
1 |
SHORT |
16位有符號數(shù) |
-32768到32767 |
1 |
WORD |
16位無符號數(shù) |
0到65535 |
1 |
INT |
32位有符號數(shù) |
-2147483648到2147483647 |
2 |
DWORD |
32位無符號數(shù) |
0到4294967295 |
2 |
FLOAT |
32位浮點數(shù) |
1.4e-45 到 3.4e+38 |
2 |
通過Excel,結(jié)合紫金橋軟件的點組態(tài)界面的導(dǎo)出到Excel編輯的功能,可以快速的生成此表格。然后使用批量導(dǎo)入功能,就可以迅速的創(chuàng)建大量的寄存器。
-
Modbus服務(wù)器的運行
紫金橋的Modbus服務(wù)器運行程序在紫金橋軟件的安裝目錄中,名稱為ModbusServer.exe,運行時的界面如下圖所示:
右側(cè)是信息顯示區(qū),共有3個標(biāo)簽,它們的意義如下所示:
-
系統(tǒng)信息
系統(tǒng)信息頁面顯示系統(tǒng)的總體的運行情況,包括顯示的版本號,系統(tǒng)啟動的時間,系統(tǒng)連接的數(shù)據(jù)庫點個數(shù),和數(shù)據(jù)庫連接的情況,以及各個通道的運行狀態(tài)。其中通道的運行狀態(tài)中顯示通道的打開情況,收發(fā)命令的字節(jié)數(shù),各個設(shè)備處理的讀寫命令的個數(shù)。
-
寄存器瀏覽
寄存器瀏覽頁面顯示寄存器的詳細(xì)信息,包括寄存器的當(dāng)前數(shù)值。此頁面中顯示的寄存器是由左側(cè)的導(dǎo)航樹來指定的,通過在導(dǎo)航樹上選擇不同的位置,就可以更新此處顯示的寄存器。
-
通訊信息
通訊信息頁面,顯示了當(dāng)前的通道收發(fā)的具體的內(nèi)容,可以根據(jù)此內(nèi)容來診斷通訊的情況。它一次只能顯示一個通道的通訊情況,可以通過在左側(cè)導(dǎo)航樹上切換選擇的內(nèi)容來更新此處顯示的通道。
另外,缺省情況下,此處顯示的通訊信息是自動向上滾動的,如果為了方便觀察,可以把通訊的信息保存成文件,這可以通過選擇菜單“文件”項下面的“保存通訊信息”命令來實現(xiàn)。
-
應(yīng)用實例
紫金橋新版的Modbus服務(wù)器的實際投用是在大慶的某水廠,當(dāng)時需要從多個支持Modbus協(xié)議的PLC中采集數(shù)據(jù)。但是由于已經(jīng)有系統(tǒng)通過GPRS同時采集這幾個PLC中的數(shù)據(jù),PLC的通訊通道已經(jīng)被占用。而采集數(shù)據(jù)的系統(tǒng)采集的數(shù)據(jù)較少,也比較緩慢,同時很難找到系統(tǒng)的制作人員來對系統(tǒng)進(jìn)行修改,所以也無法通過正在運行的系統(tǒng)得到數(shù)據(jù)。最后使用紫金橋新版的Modbus服務(wù)器圓滿的解決了這個問題。
采取的方案是,紫金橋首先采用Modbus驅(qū)動從幾個PLC中獲得數(shù)據(jù),然后通過新版的Modbus服務(wù)器完全仿真了原來系統(tǒng)采集的PLC的通訊環(huán)境,讓原來的系統(tǒng)通過紫金橋新版的Modbus服務(wù)器來獲得數(shù)據(jù),由于新版Modbus服務(wù)器的靈活功能,使得原來的系統(tǒng)并不知道采集的已不是原來的幾個PLC了,仍然可以穩(wěn)定的獲得數(shù)據(jù)。
使用紫金橋新版的Modbus服務(wù)器后,紫金橋系統(tǒng)獲得了全面的實時變化的數(shù)據(jù),同時原來的系統(tǒng)仍然可以穩(wěn)定的獲得所希望的數(shù)據(jù),從而圓滿的完成了任務(wù)。