馬曉飛,袁永明,,張紅燕,陳浩成,劉彥娜
(1.南京農業大學 無錫漁業學院,江蘇 無錫 214128;2.中國水產科學研究院 淡水漁業研究中心 國家羅非魚產業技術研發中心農業部淡水漁業和種質資源利用重點實驗室,江蘇 無錫 214081)
基于Modbus的水產物聯設備驅動服務系統設計*
馬曉飛1,袁永明1,2,張紅燕2,陳浩成1,劉彥娜1
(1.南京農業大學 無錫漁業學院,江蘇 無錫 214128;2.中國水產科學研究院 淡水漁業研究中心 國家羅非魚產業技術研發中心農業部淡水漁業和種質資源利用重點實驗室,江蘇 無錫 214081)
通過對水產物聯設備主流通信方式的研究,設計了基于Modbus協議中ASCII和RTU 兩種數據傳輸模式的設備驅動模版,負責完成設備的查詢響應。水產物聯設備驅動服務系統基于Modbus通信協議,能夠在確定物聯設備的地址、功能及校驗方法之后,完成設備同水產物聯服務系統的即聯即用,以及物聯設備之間的互聯和通信。對6個不同廠家的12種傳感設備和ER繼電器進行了驅動模版的設計,并通過GPRS或Zig Bee模塊連接到水產物聯服務系統進行了測試試驗。結果表明:基于Modbus的水產物聯設備驅動服務系統能夠快速準確地生成設備查詢命令,并且能夠解析響應的數據,返回準確的監測數值,驅動服務系統的設計與開發是一種實現物聯設備即聯即用的有效手段。
Modbus;水產物聯;驅動服務;傳感器;自動化
水產物聯服務系統[1,2]是一個面向水產養殖各個生產環節(養殖、加工、物流、市場等),應用現代物聯網技術集成適用于水產養殖不同生產環節的事務處理應用系統,能夠為用戶提供水產物聯服務的綜合性信息系統。水產物聯服務系統支持國內外市場存在的絕大多數水產物聯設備的即聯即用,具有現場監測與數據采集傳輸、生產環境和設備的智能化管理與控制、生產信息情報的及時發送與告知功能,用戶可以通過PC、智能手機、短信等信息發布展示平臺獲取到及時有效的水產物聯服務。物聯網技術在水產養殖各個生產環節的應用,有助于加快我國漁業現代化信息化發展的步伐。
水產物聯設備,即能夠應用于水產養殖各生產環節的各類傳感設備和控制器設備,能夠為水產物聯服務系統的穩定運行提供最基礎的技術支撐,實現對于生產狀態的實時監測和對于遠程控制指令的有效執行。當前,水產物聯設備種類繁多,不同設備在測控精度、穩定性、成本等方面存在較大差異[3]。面對著種類和功能各異的眾多設備,用戶往往會根據自身需求,選擇最適用于自身生產狀況的設備組合。相對于設備種類的復雜和用戶需求的多樣,水產物聯設備通信方式較為統一[4],普遍都支持Modbus協議的數據傳輸。
在目前國內外物聯網技術未形成統一標準的前提下,研究并開發基于Modbus協議的能夠支持全部物聯設備的驅動服務系統具有很高的可行性和必要性。
Modbus是OSI模型第7層上的應用層報文傳輸協議,它在連接至不同類型總線或網絡的設備之間提供客戶機/服務器通信。自從1979年出現工業串行鏈路的事實標準以來,Modbus使成千上萬的自動化設備能夠通信[5,6]。
Modbus協議允許在各種網絡體系結構內進行簡單通信:每種設備(PLC、HMI、控制面板、驅動程序、動作控制、I/O設備)都能使用Modbus協議來啟動遠程操作;在基于串行鏈路和以太TCP/IP網絡的Modbus上可以進行相同通信;一些網關允許在幾種使用Modbus協議的總線或網絡之間進行通信。Modbus網絡體系結構如圖1所示。

圖1 Modbus網絡體系結構示意圖Fig 1 Structure diagram of Modbus network system
Modbus協議定義了一個與基礎通信層無關的簡單協議數據單元(PDU);特定總線或網絡上的Modbus協議映射能夠在應用數據單元(ADU)上引入一些附加域。啟動Modbus事務處理的客戶機創建Modbus應用數據單元,功能碼向服務器指示將執行哪種操作。
2.1 物聯設備通信方式
物聯設備之間一般有兩種類型的通信方式,第一種是模擬量電流信號,即經變送器轉換為標準的電流信號(4~20 mA)由采樣保持電路和A/D轉換電路轉換為數字信號,再送往微型計算機進行處理[7]。電流信號通信方式的特點是處理速度快,易于進行系統的集成;但是模擬量的采集只能通過一對一的布線方式進行數據傳輸;電流信號在傳輸過程中抗干擾能力較弱,使得傳輸的距離、傳輸的數據量受到較大限制。
第二種也是目前比較常見的支持基于Modbus通信協議的RS—485/422/232接口的設備[8]。相對于電流信號通信,RS—485等通信方式的響應速度較慢,但是RS—485等通信可以傳輸較大位寬的數據,可以傳輸較多的數據內容。另外,在布線上,RS—485信號的采集可以采用一對多的總線方式(只用2條線就可以采集多個信號量),RS—485信號的傳輸距離也較遠,抗干擾能力也較強,所以,一般在工業上采用模擬量電流信號轉RS—485接口。一種常用的模擬電流信號4~20 mA/0~5V轉RS—485數據采集A/D轉換模塊內部框圖如圖2所示。

圖2 信號轉換采集模塊結構示意圖FIg 2 Structure diagram of module for signal conversion & collection
2.2 Modbus數據傳輸模式
在Modbus通信協議中,有兩種串行傳輸模式被定義:RTU模式和ASCII模式[9]。它定義了報文域的位內容在線路上串行的傳送,確定了信息如何打包為報文和如何解碼。Modbus協議規定,Modbus串行鏈路上所有設備的傳輸模式和串行口參數必須相同;若期望達到Modbus設備之間的互操作性,則每個設備都必須具有相同的模式,而RTU模式是所有設備必須實現的模式,ASCII模式為選項。換言之,設備可以由用戶設置為期望的模式,RTU或者ASCII傳輸模式,但是默認設置必須為RTU模式[5]。
RTU模式同ASCII模式具有不同的報文幀和傳輸狀態,如較3和圖4。
在RTU模式,報文幀由時長至少為3.5個字符時間的空閑間隔區分,這個時間區間被稱作t3.5;整個報文幀必須以連續的字符流發送,如果2個字符之間的空閑間隔大于1.5個字符時間,則報文幀被認為不完整,應該被接收節點丟棄。

圖3 RTU報文幀和RTU傳輸模式狀態Fig 3 RTU message frame and transmission mode of RTU
在ASCII模式,報文幀為帶有已知起始和結束標記的幀,這使得設備可以在報文的開始接收新幀,并且知道何時報文結束。一個ASCII報文幀必須以一個“冒號”(:)(ASCII十六進制3A)起始,以“回車—換行”(CR LF)(ASCII十六進制0D和0A)結束。報文中字符間的時間間隔可以達1 s,如果有更大的間隔,則默認為發生了錯誤,應被接收節點丟棄。

圖4 ASCII報文幀和ASCII傳輸模式狀態Fig 4 Message frame and transmission mode state of ASCII
2.3 驅動模版設計
以Modbus協議為基礎,設計并開發適用于不同物聯設備的驅動模版由起始標記、地址位、供能位、數據位、校驗位以及結束標記組成。
1)起始標記:起始標記在驅動模板中相當于一份信的“信封”。當數據幀到達終端設備時該設備去掉數據幀的“信封”(數據頭),讀取數據,如果沒有錯誤,就執行數據所請求任務,然后,它將自己生成的數據加入到取得的“信封”中,把數據幀返回給發送者。使用ASCII模式傳輸的物聯設備,往往配置有不同的起始標記,有的是以“:”ASCII十六進制3A)開頭,有的用“#”(ASCII十六進制23),返回數據時,很多用“>”(ASCII十六進制62)開頭;而使用RTU模式傳輸的物聯設備,一般不設置起始標記。
為應對起始標記的不同,在驅動模板設計中,無論是什么樣的起始標記,均可以直接放進命令的開頭位。
2)地址位:地址位在驅動模板中用“a”或者“A”來表示。當從設備發送響應消息時,它把自己的地址放入相應的地址位中,以便主設備知道是哪一個設備作出響應。每個終端設備的地址必須是唯一的。地址位大小為8位(RTU模式)或者2字符(ASCII模式)。
3)功能位:功能位在驅動模板中用“F”字母表示。當消息從主設備發往從設備時,功能位代碼告訴了被尋址到的終端執行何種功能。不同的代碼表示不同的功能;不同的物聯設備功能代碼各不相同,由廠家進行賦值,在編寫驅動模版時只需要將代表功能的代碼放到功能位即可。功能位大小為8位(RTU模式)或者2字符(ASCII模式)。
4)數據位:包含了終端執行特定功能所需要的數據或者終端響應查詢時采集到的數據,這些數據的內容可能是數值、參量地址或者設置值。如果沒有錯誤發生,從從設備返回的數據位包含請求的數據;如果有錯誤發生,此位包含一異議代碼,主設備應用程序可以用來判斷采取下一步行動。在驅動模板中數據位用“D”或者“d”表示。不同的廠家采用的數據段長度不一樣,有的采用5位99.999,有的是6位9999.99的形式。在模板中統一用D0x0F表示多少位的數據段。
5)校驗位:錯誤校驗能夠保證主機或者終端不去響應那些傳輸過程中發生了改變的數據,這就提高了系統的安全性和效率。校驗位在驅動模板中尤其重要,是為了校驗前面的從開頭得到功能位到數據位的數據段是否有誤,如果正確,正常輸送到終端,返回響應命令;如果錯誤,就返回一段亂碼。校驗位在模板中用"C"表示。在Modbus兩種傳輸模式中,RTU模式采用CRC—16校驗方法,ASCII模式采用LRC校驗方法;在驅動模版中用C0x01定義LRC方法,用C0x02定義CRC—16方法,其他校驗方法可以由0x03到0xFF定義。
LRC生成函數(C/C++ 語言)
static unsigned char LRC(auchMsg,usDataLen)
unsigned char *auchMsg;
unsigned short usDataLen;
{
unsigned char uchLRC=0;
while (usDataLen--)
uchLRC +=*auchMsg++;
return((unsigned char)(-((char)uchLRC)));
}
CRC—16生成函數(C/C++ 語言),其中高字節表uchCRCHi[]和低字節表uchCRCLo[]的定義省略。
static unsigned short CRC16(puchMsg, usDataLen)
unsigned char *puchMsg;
unsigned short usDataLen;
{
unsigned char uchCRCHi=0xFF;
unsigned char uchCRCLo=0xFF;
unsigned uIndex;
while (usDataLen--)
{
uIndex=uchCRCLo ^ *puchMsg++;
uchRCRLo=uchRCRHi ^ auchCRCHi[uIndex];
uchCRCHi=auchCRCLo[uIndex];
}
return(uchCRCHi?8 | uchCRCLo);
}
6)結束標記:結束標記表示生成的查詢或者響應命令的結束。以ASCII模式進行傳輸的物聯設備,一般使用“換行—回車”(CR LF)(ASCII十六進制0D和0A)作為命令的結束標記,在驅動模版中用/0D/0A表示;以RTU模式進行傳輸的物聯設備,一般沒有結束標記,但根據其通信編碼格式,仍然能夠設計出適用于設備的驅動模版。
3.1 實驗方法
設備列表如表1所示。

表1 實驗設備列表Tab 1 Table of experimental devices
以表1羅列設備為基礎,對面積667 m2的羅非魚養殖池塘進行了30 天的實時水質監測,物聯設備每60 s采集一次數據,監測數據每1 200 s保存一次,在實時監測的基礎上進行了增氧機遠程控制。
3.2 實時監測與遠程控制
本實驗選取2013年8月3日全天的水質監測數據作為實時監測實驗數據。使用DABECO溫濕度變送器測量測量空氣溫度,使用Kelan溶氧測定儀測定水溫,使用MP TROLL 9500水質監測儀測量溶解氧濃度,使用Kelan酸度計測量pH,由ER繼電器狀態功能監測增氧機狀態(增氧機開啟設置為15.00 mg·L-1,關閉設置為0)。當日水質實時監測和增氧機控制狀況如圖5所示。

圖5 水質監測與控制折線圖Fig 5 Chart of water quality monitoring and control
由圖5可以得出:1)為物聯設備設計驅動模版能夠完成設備同物聯服務系統的通信。在實驗過程中,通過驅動服務系統進行增氧機遠程控制,能夠及時有效地完成增氧機的開啟/關閉動作;2)數據的獲取和存儲具有一定的連續性,能夠做到接近于理想狀態的實時監測;3)受限于設備工作環境和設備自身誤差,氣溫數據出現較為明顯的突變性波動。
1)基于Modbus協議中的ASCII和RTU傳輸模式的驅動模版的設計,能夠快速準確地生成設備查詢命令,并且能夠解析響應的數據,返回準確的監測數值。
2)以驅動模版為基礎的驅動服務系統的設計與開發是一種實現物聯設備即聯即用的有效手段,有效保證了物聯服務系統的穩定高效運行,滿足生產實際需求。
3)使用驅動模版的物聯設備驅動服務系統,具有靈活的可擴充性能,而繼續不斷的增加系統兼容設備數量,需要繼續開展大量設備搜集和調試工作。
[1] 馬曉飛,袁永明,張紅燕,等.水產物聯服務平臺研究與開發[J].農業網絡信息,2013(10):15-19.
[2] 袁永明,袁 媛,張紅燕,等.水產物聯服務系統設計與開發[J].漁業現代化,2013,40(4):8-12.
[3] 蔣建明,史國棟,李正明,等.基于無線傳感器網絡的節能型水產養殖自動監控系統[J].農業工程學報,2013,29(13):166-174.
[4] 薛海濤,和衛星,陳曉平.數據采集系統中Modbus協議的實現[J].微計算機信息,2007,23(10-1):68-69,281.
[5] GB/T 19582.1—2008基于Modbus協議的工業自動化網絡規范第一部分:Modbus應用協議[S].北京:中國質檢出版社,2008.
[6] GB/T 19582.2—2008基于Modbus協議的工業自動化網絡規范第二部分:Modbus協議在串行鏈路上的實現指南[S].北京:中國質檢出版社,2008.
[7] 鄭黎明,王書柢,唐春暉.基于4~20 mA標準的智能儀表設計[J].汕頭大學學報:自然科學版,1999,14(2):47-50.
[8] Costa L,Fernandes J.On-line control systems using RS485[C]∥Proc of ISA TECH/EXPO Technology Update Conf,Houston: Instrument Society of America,2001:695-700.
[9] 耿立中,王 鵬,馬 騁,等.RS485高速數據傳輸協議的設計與實現[J].清華大學學報:自然科學版,2008,48(8):1311-1314.
Design of Modbus-based drive service system for devices of aquaculture Internet of things*
MA Xiao-fei1, YUAN Yong-ming1,2, ZHANG Hong-yan2, CHEN Hao-cheng1, LIU Yan-na1
(1.Wuxi Fisheries College,Nanjing Agricultural University,Wuxi 214128,China;2.Freshwater Fisheries Research Center of Chinese Academy of Fishery Sciences,Tilapia industrial Research Center of China Agriculture Research System(CARS49),Key Laboratory of Freshwater Fisheries and Germplasm Resources Utilization of Ministry of Agriculture,Wuxi 214081,China)
Through research on main stream way of communication in aquaculture Internet of things devices,device driver templates are designed based on ASCII and RTU transmission modes in Modbus protocol,which can complete query and answer.Aquaculture Internet of things device driver service system is based on Modbus communication protocol achieve devices to interconnect and intercommunicate with aquaculture Internet of things service system or between each others when it made sure that the device address,function,and calibration methods.The effects of system and driver templates are tested,respectively,designing of driver templates of 12 kinds of sensing devices and ER relay are carried out and are connected with aquaculture Internet of things service system by GPRS or Zig Bee module.The results show that the Modbus-based drive service system for devices of aquaculture Internet of things can quickly and accurately generate device query command,and can parse responsing data,return accurate monitoring values,design and development of drive service system is an effective means to realize aquaculture Internet of things devices.
Modbus; aquaculture Internet of things; drive service; sensor; automation
10.13873/J.1000—9787(2014)10—0065—04
2014—02—20
國家現代農業產業技術體系專項(羅非魚產業技術體系)(CARS—49);中央級公益性科研院所基本科研業務費專項(中國水產科學研究院淡水漁業研究中心)(2013JBFM13)
TP 274.2
A
1000—9787(2014)10—0065—04
馬曉飛(1989-),男,山東陽信人,碩士研究生,研究方向為漁業經濟與信息技術。