国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

單片機(jī)MODBUS通訊程序開(kāi)發(fā)

2017-10-09 06:54:48雷俊峰襄陽(yáng)職業(yè)技術(shù)學(xué)院汽車工程學(xué)院湖北襄陽(yáng)441050
電子測(cè)試 2017年17期
關(guān)鍵詞:程序開(kāi)發(fā)下位主站

雷俊峰(襄陽(yáng)職業(yè)技術(shù)學(xué)院汽車工程學(xué)院,湖北襄陽(yáng),441050)

單片機(jī)MODBUS通訊程序開(kāi)發(fā)

雷俊峰
(襄陽(yáng)職業(yè)技術(shù)學(xué)院汽車工程學(xué)院,湖北襄陽(yáng),441050)

本文主要介紹單片機(jī)與計(jì)算機(jī)之間的串行通訊程序的功能結(jié)構(gòu)和部分源代碼,使用MODBUS RTU通訊協(xié)議實(shí)現(xiàn)兩者之間的工程數(shù)據(jù)交換,單片機(jī)作為從站,對(duì)主站的通訊操作要求進(jìn)行應(yīng)答,返回操作結(jié)果,實(shí)現(xiàn)現(xiàn)場(chǎng)數(shù)據(jù)的采集。

單片機(jī);MODBUS協(xié)議;通訊應(yīng)答程序

0 引言

某水處理公司希望為其產(chǎn)品添加遠(yuǎn)程監(jiān)控設(shè)備關(guān)鍵狀態(tài)的功能,筆者為其開(kāi)發(fā)一款通訊模塊,鑒于產(chǎn)品的功能要求較為簡(jiǎn)單,而成本控制較為嚴(yán)格,因而選擇采用計(jì)算機(jī)和單片機(jī)組成上下位機(jī)系統(tǒng),計(jì)算機(jī)放置于中控室,安裝組態(tài)監(jiān)控軟件,下位機(jī)就近裝設(shè)在水處理產(chǎn)品上,與現(xiàn)場(chǎng)傳感器相連,上下位機(jī)通過(guò)串行通訊實(shí)時(shí)交換數(shù)據(jù),本文重點(diǎn)探討下位機(jī)單片機(jī)的通訊應(yīng)答程序的開(kāi)發(fā)。

1 通訊協(xié)議的選擇

在確定采用串行通訊方式之后,可以保證數(shù)據(jù)的雙向傳送,但傳送的數(shù)據(jù)內(nèi)容的含義則需要通過(guò)通訊協(xié)議約定。經(jīng)過(guò)對(duì)比,通訊協(xié)議選擇MODBUS通訊協(xié)議,該協(xié)議具有標(biāo)準(zhǔn)、開(kāi)放、通俗易懂、適應(yīng)性好等特點(diǎn),應(yīng)用開(kāi)發(fā)較為簡(jiǎn)單。具體又分為RTU和ASCII兩種傳輸方式,性能區(qū)別主要在于,RTU方式通訊效率較高,ASCII方式可直接傳送ASCII字符,較為直觀,鑒于本應(yīng)用中無(wú)需顯示字符,故而選擇RTU方式,上位機(jī)的通訊程序集成在組態(tài)軟件中,可直接在軟件的通訊方式中選擇,下位機(jī)的通訊程序則需要自行開(kāi)發(fā)。

2 下位機(jī)通訊程序開(kāi)發(fā)

MODBUS RTU協(xié)議采用主、從站工作方式,規(guī)定了功能、數(shù)據(jù)幀格式,我們以上位機(jī)為主站,下位機(jī)為從站,從站只需要應(yīng)答主站的讀寫操作指令,返回相應(yīng)的讀寫結(jié)果,這樣設(shè)計(jì)可以減少程序開(kāi)發(fā)工作量。站在從站視角,以主站讀取數(shù)據(jù)為例,MODBUS RTU通訊模式的數(shù)據(jù)幀格式為:

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

表2 從站操作結(jié)果返回幀(6+N個(gè)字節(jié))

主站發(fā)送讀指令后,從站返回讀取結(jié)果,在這一問(wèn)一答過(guò)程中,完成數(shù)據(jù)的交換,因此單片機(jī)端的開(kāi)發(fā)主要是通訊應(yīng)答程序的編寫。

3 單片機(jī)通訊程序

單片機(jī)上的通訊程序主要完成以下任務(wù):串行通訊初始化、接收主站數(shù)據(jù)幀、校驗(yàn)數(shù)據(jù)幀是否合法完整、執(zhí)行主站讀寫操作命令、發(fā)送結(jié)果返回幀到主站。

圖1 流程圖

可以在單片機(jī)里面設(shè)置接收和發(fā)送緩沖區(qū),該區(qū)域是上位機(jī)和下位機(jī)共享的,均可以向該區(qū)域讀取或?qū)懭胫?,所有的通訊指令都是針?duì)該快區(qū)域的操作,下位機(jī)也是根據(jù)這塊區(qū)域的值做相應(yīng)的操作。

程序的結(jié)構(gòu)為main函數(shù)、串行中斷處理程序(接收主站數(shù)據(jù)幀,發(fā)送從站返回幀)、串口初始化子函數(shù)等。

為敘述簡(jiǎn)便,在頭文件中已將8位無(wú)符號(hào)整形變量預(yù)定義為Uint8,16位無(wú)符號(hào)整形變量預(yù)定義為Uint16。

3.1main函數(shù)

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

3.3 串行中斷處理程序

4 結(jié)論

單片機(jī)側(cè)通訊程序通常需要自行開(kāi)發(fā),調(diào)試工作量比較大,通訊程序目前可以實(shí)現(xiàn)數(shù)據(jù)交換,下一步計(jì)劃進(jìn)一步提高通訊的穩(wěn)定性和傳輸效率,希望筆者的開(kāi)發(fā)經(jīng)歷能夠給讀者提供借鑒和啟發(fā)。

[1] http://blog.gkong.com/jiayoua_65051.ashx.

[2] 劉杰.王慧組態(tài)王與單片機(jī)多機(jī)串口通信的設(shè)計(jì)[J].電子設(shè)計(jì)工程 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

猜你喜歡
程序開(kāi)發(fā)下位主站
APP應(yīng)用程序開(kāi)發(fā)模式探究
電子制作(2019年19期)2019-11-23 08:42:02
發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
基于TestStand的自動(dòng)檢測(cè)程序開(kāi)發(fā)
基于嵌入式系統(tǒng)Windows CE的應(yīng)用程序開(kāi)發(fā)
基于App inventor 2手機(jī)程序開(kāi)發(fā)過(guò)程的學(xué)習(xí)與實(shí)——以“喵喵定時(shí)器”APP開(kāi)發(fā)為例
電子制作(2017年1期)2017-05-17 03:54:08
基于OS2主站系統(tǒng)的海量數(shù)據(jù)共享技術(shù)研究
多表遠(yuǎn)程集抄主站系統(tǒng)
電子制作(2017年23期)2017-02-02 07:17:07
景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
圍觀黨“下位”,吐槽帝“登基”
CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
新田县| 井冈山市| 华容县| 泰安市| 雷州市| 双流县| 高台县| 新巴尔虎右旗| 西畴县| 海晏县| 杭锦后旗| 额济纳旗| 四平市| 西吉县| 石河子市| 荃湾区| 鹿邑县| 太湖县| 邢台县| 东明县| 青龙| 庐江县| 绿春县| 西乌珠穆沁旗| 贡觉县| 光山县| 班戈县| 固安县| 铁力市| 河源市| 海南省| 惠州市| 平塘县| 马尔康县| 基隆市| 临潭县| 永年县| 波密县| 新绛县| 桂林市| 静宁县|