雷俊峰(襄陽職業(yè)技術(shù)學(xué)院汽車工程學(xué)院,湖北襄陽,441050)
單片機MODBUS通訊程序開發(fā)
雷俊峰
(襄陽職業(yè)技術(shù)學(xué)院汽車工程學(xué)院,湖北襄陽,441050)
本文主要介紹單片機與計算機之間的串行通訊程序的功能結(jié)構(gòu)和部分源代碼,使用MODBUS RTU通訊協(xié)議實現(xiàn)兩者之間的工程數(shù)據(jù)交換,單片機作為從站,對主站的通訊操作要求進行應(yīng)答,返回操作結(jié)果,實現(xiàn)現(xiàn)場數(shù)據(jù)的采集。
單片機;MODBUS協(xié)議;通訊應(yīng)答程序
某水處理公司希望為其產(chǎn)品添加遠程監(jiān)控設(shè)備關(guān)鍵狀態(tài)的功能,筆者為其開發(fā)一款通訊模塊,鑒于產(chǎn)品的功能要求較為簡單,而成本控制較為嚴(yán)格,因而選擇采用計算機和單片機組成上下位機系統(tǒng),計算機放置于中控室,安裝組態(tài)監(jiān)控軟件,下位機就近裝設(shè)在水處理產(chǎn)品上,與現(xiàn)場傳感器相連,上下位機通過串行通訊實時交換數(shù)據(jù),本文重點探討下位機單片機的通訊應(yīng)答程序的開發(fā)。
在確定采用串行通訊方式之后,可以保證數(shù)據(jù)的雙向傳送,但傳送的數(shù)據(jù)內(nèi)容的含義則需要通過通訊協(xié)議約定。經(jīng)過對比,通訊協(xié)議選擇MODBUS通訊協(xié)議,該協(xié)議具有標(biāo)準(zhǔn)、開放、通俗易懂、適應(yīng)性好等特點,應(yīng)用開發(fā)較為簡單。具體又分為RTU和ASCII兩種傳輸方式,性能區(qū)別主要在于,RTU方式通訊效率較高,ASCII方式可直接傳送ASCII字符,較為直觀,鑒于本應(yīng)用中無需顯示字符,故而選擇RTU方式,上位機的通訊程序集成在組態(tài)軟件中,可直接在軟件的通訊方式中選擇,下位機的通訊程序則需要自行開發(fā)。
MODBUS RTU協(xié)議采用主、從站工作方式,規(guī)定了功能、數(shù)據(jù)幀格式,我們以上位機為主站,下位機為從站,從站只需要應(yīng)答主站的讀寫操作指令,返回相應(yīng)的讀寫結(jié)果,這樣設(shè)計可以減少程序開發(fā)工作量。站在從站視角,以主站讀取數(shù)據(jù)為例,MODBUS RTU通訊模式的數(shù)據(jù)幀格式為:

表1 主站操作命令發(fā)送幀(8個字節(jié))

表2 從站操作結(jié)果返回幀(6+N個字節(jié))
主站發(fā)送讀指令后,從站返回讀取結(jié)果,在這一問一答過程中,完成數(shù)據(jù)的交換,因此單片機端的開發(fā)主要是通訊應(yīng)答程序的編寫。
單片機上的通訊程序主要完成以下任務(wù):串行通訊初始化、接收主站數(shù)據(jù)幀、校驗數(shù)據(jù)幀是否合法完整、執(zhí)行主站讀寫操作命令、發(fā)送結(jié)果返回幀到主站。

圖1 流程圖
可以在單片機里面設(shè)置接收和發(fā)送緩沖區(qū),該區(qū)域是上位機和下位機共享的,均可以向該區(qū)域讀取或?qū)懭胫担械耐ㄓ嵵噶疃际轻槍υ摽靺^(qū)域的操作,下位機也是根據(jù)這塊區(qū)域的值做相應(yīng)的操作。
程序的結(jié)構(gòu)為main函數(shù)、串行中斷處理程序(接收主站數(shù)據(jù)幀,發(fā)送從站返回幀)、串口初始化子函數(shù)等。
為敘述簡便,在頭文件中已將8位無符號整形變量預(yù)定義為Uint8,16位無符號整形變量預(yù)定義為Uint16。

3.2 串行通訊初始化函數(shù)

3.3 串行中斷處理程序


單片機側(cè)通訊程序通常需要自行開發(fā),調(diào)試工作量比較大,通訊程序目前可以實現(xiàn)數(shù)據(jù)交換,下一步計劃進一步提高通訊的穩(wěn)定性和傳輸效率,希望筆者的開發(fā)經(jīng)歷能夠給讀者提供借鑒和啟發(fā)。
[1] http://blog.gkong.com/jiayoua_65051.ashx.
[2] 劉杰.王慧組態(tài)王與單片機多機串口通信的設(shè)計[J].電子設(shè)計工程 2009(7).
[3] http://blog.csdn.net/tiemufeng1122/article/details/17791903.
SCM MODBUS communication program development
Lei Junfeng
(School of automotive engineering,Xiangyang Vocational and Technical College,Xiangyang Hubei,441050)
This paper mainly introduces the serial communication between SCM and computer program of the function structure and part of the source code, using the MODBUS RTU communication protocol engineering data exchange between them. The single chip microcomputer as from the station, the main station communication operation request response, return the results of the operation, realize data acquisition.
single chip microcomputer;MODBUS protocol;communication answering program