亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java實(shí)現(xiàn)的Modbus通信模塊電氣設(shè)備數(shù)據(jù)采集

        2020-01-05 12:53:12王勇平張英豪
        通信電源技術(shù) 2020年20期
        關(guān)鍵詞:下位寄存器上位

        王勇平,張英豪

        (廣州致新電力科技有限公司,廣東 廣州 510540)

        1 電力系統(tǒng)常用通信規(guī)約

        電力系統(tǒng)通信規(guī)約(協(xié)議)是指通信雙方必須共同遵守的約定,也叫做通信控制規(guī)程或傳輸控制規(guī)程。通信規(guī)約的內(nèi)容主要分為信息傳送的具體步驟和信息傳送格式兩部分。其中,信息傳送格式包括收發(fā)方式、傳送速率、幀結(jié)構(gòu)、幀同步字、位同步方式以及抗干擾措施等[1-3]。隨著科學(xué)技術(shù)的不斷發(fā)展,電力系統(tǒng)調(diào)度運(yùn)行的信息傳輸要求不斷提高,促使信息傳輸方式已逐步走向數(shù)字化和網(wǎng)絡(luò)化。為此,國(guó)際電工委員會(huì)電力系統(tǒng)控制及其通信技術(shù)委員(ITCTC57)根據(jù)形勢(shì)發(fā)展的要求,制定調(diào)度自動(dòng)化和變電站自動(dòng)化系統(tǒng)的數(shù)據(jù)通信標(biāo)準(zhǔn),以適應(yīng)和引導(dǎo)電力系統(tǒng)調(diào)度自動(dòng)化的發(fā)展,規(guī)范調(diào)度自動(dòng)化和遠(yuǎn)動(dòng)設(shè)備的技術(shù)性能[4]?;贛odbus的傳感器通信在數(shù)據(jù)采集方面有著廣泛應(yīng)用,常見(jiàn)的通信方式有基于串口(RTU)方式和基于傳輸控制協(xié)議(Transmission Control Protocol,TCP)方式兩類(lèi)[5]。

        2 Modbus通信過(guò)程

        Modbus通信協(xié)議基本可以分為上位機(jī)查詢和下位機(jī)回應(yīng)兩個(gè)部分的通信過(guò)程[6]。

        2.1 上位機(jī)查詢

        主機(jī)先確定通信鏈路中所有從機(jī)設(shè)備的地址信息,然后上位機(jī)發(fā)送數(shù)據(jù)查詢指令。為保證上位機(jī)能夠準(zhǔn)確查詢到下位機(jī)狀態(tài)信息,上位機(jī)的查詢指令中必須有和下位機(jī)一致的地址信息,同時(shí)保證此通信中下位機(jī)收到的數(shù)據(jù)是上位機(jī)發(fā)送的。下位機(jī)通過(guò)上位機(jī)數(shù)據(jù)中的功能碼執(zhí)行上位機(jī)所要完成的具體功能,同時(shí)在數(shù)據(jù)中還包含有下位機(jī)相應(yīng)功能碼的輔助信息。上位機(jī)發(fā)送的數(shù)據(jù)中還包含校驗(yàn)碼,在Modbus中一般是CRC16。校驗(yàn)碼主要是用來(lái)檢測(cè)下位機(jī)收到的查詢請(qǐng)求是否正確。在請(qǐng)求數(shù)據(jù)中加上校驗(yàn)碼,可有效驗(yàn)證通信過(guò)程中數(shù)據(jù)是否被完整且正確接收[7]。

        2.2 下位機(jī)回應(yīng)上位機(jī)

        下位機(jī)接收到上位機(jī)的請(qǐng)求后,對(duì)此數(shù)據(jù)幀進(jìn)行請(qǐng)求應(yīng)答即響應(yīng)。在響應(yīng)的數(shù)據(jù)中也必須包含相應(yīng)的功能碼。功能碼[8]是對(duì)下位機(jī)接收到上位機(jī)發(fā)送數(shù)據(jù)的執(zhí)行情況的響應(yīng),響應(yīng)中包括功能碼的實(shí)現(xiàn)情況和校驗(yàn)碼,以說(shuō)明數(shù)據(jù)的接收是否準(zhǔn)確和讀寫(xiě)操作的執(zhí)行情況等。

        3 基于Modbus的傳感器通信

        傳感器通信主要根據(jù)通信接口分為Modbus TCP和Modbus RTU串行兩大類(lèi)。

        3.1 基于Modbus TCP傳感器通信

        在一次網(wǎng)絡(luò)通信中,TCP協(xié)議要求每個(gè)通信對(duì)象必須要知道此通信鏈路中每個(gè)節(jié)點(diǎn)的地址和端口號(hào)[9]。根據(jù)地址和端口號(hào)確定一個(gè)通信節(jié)點(diǎn),識(shí)別通信節(jié)點(diǎn)中發(fā)送的數(shù)據(jù),并且產(chǎn)生對(duì)應(yīng)的響應(yīng)。響應(yīng)時(shí),通信節(jié)點(diǎn)將數(shù)據(jù)通過(guò)Modbus發(fā)出。其他網(wǎng)絡(luò)中包含了此Modbus數(shù)據(jù)轉(zhuǎn)換的包結(jié)構(gòu)。這種轉(zhuǎn)換為網(wǎng)絡(luò)解決節(jié)地址和路由路徑錯(cuò)誤檢測(cè)提供了借鑒。

        將傳感器與其接收裝置接電后,通過(guò)網(wǎng)線將傳感器接收裝置和PC連接進(jìn)行網(wǎng)絡(luò)通信。此通信是基于網(wǎng)絡(luò)傳輸?shù)?,在?yīng)用程序中應(yīng)用Socket技術(shù),通過(guò)傳感器接收裝置的IP和端口號(hào)建立連接。通信中傳感器接收裝置為下位機(jī),應(yīng)用程序?yàn)樯衔粰C(jī)。

        3.2 Modbus RTU傳感器通信過(guò)程

        將傳感器與其檢測(cè)裝置接電后,通過(guò)串口可與應(yīng)用程序端實(shí)現(xiàn)通信。此通信中,傳感器內(nèi)置寄存器作為通信中的下位機(jī),而應(yīng)用程序?yàn)樯衔粰C(jī)。

        3.3 基于Modbus傳感器通信中的數(shù)據(jù)格式

        Modbus協(xié)議定義了一個(gè)比較簡(jiǎn)單且和底層通信無(wú)關(guān)的協(xié)議數(shù)據(jù)單元(Protocol Data Unit,PDU)[10],包括功能碼和數(shù)據(jù)。Modbus協(xié)議的數(shù)據(jù)幀由地址域、功能碼、數(shù)據(jù)單元以及校驗(yàn)碼組成。上位機(jī)和下位機(jī)的數(shù)據(jù)格式也是如此,只是在數(shù)據(jù)單元中稍有區(qū)別。上位機(jī)的數(shù)據(jù)單元由寄存器地址和寄存器數(shù)量組成,而下位機(jī)數(shù)據(jù)單元由數(shù)據(jù)字節(jié)數(shù)量和響應(yīng)數(shù)據(jù)組成。

        上位機(jī)請(qǐng)求數(shù)據(jù)示例:01 03 00 00 00 02 C4 0B

        下位機(jī)響應(yīng)數(shù)據(jù)示例:01 03 04 02 DB 01 16 0B EE

        Modbus常見(jiàn)功能碼有01(讀線圈狀態(tài))、02(讀(開(kāi)關(guān))輸入狀態(tài))、03(讀保持寄存器)、04(讀輸入寄存器)、05(寫(xiě)單個(gè)線圈)、06(寫(xiě)單個(gè)保持寄存器)、15(寫(xiě)多個(gè)線圈)以及16(寫(xiě)多個(gè)保持寄存器)。

        3.4 基于Modbus傳感器通信中的數(shù)據(jù)解析與存儲(chǔ)

        上位機(jī)接收到下位機(jī)的響應(yīng)數(shù)據(jù)后,要按照一定的解析規(guī)則,在下位機(jī)返回消息幀中的數(shù)據(jù)單元中解析16進(jìn)制的消息幀。每種傳感器的解析規(guī)則都不相同,因此需要相應(yīng)傳感器的通信規(guī)約文檔,以說(shuō)明下位機(jī)響應(yīng)的數(shù)據(jù)中傳感器采集的監(jiān)測(cè)量字節(jié)數(shù)和比例轉(zhuǎn)換關(guān)系。

        數(shù)據(jù)解析以下位機(jī)響應(yīng)報(bào)文(16進(jìn)制)01 03 04 02 92 FF 9B 5A 3D為例。溫度計(jì)算規(guī)則是,若溫度小于0 ℃,則以補(bǔ)碼形式上傳,其中16進(jìn)制的FF9B轉(zhuǎn)10進(jìn)制是-101,再根據(jù)轉(zhuǎn)換關(guān)系除以10,得到真實(shí)溫度為-10.1 ℃。同理,可得相對(duì)濕度為65.8%。

        在應(yīng)用程序中,使用的開(kāi)發(fā)語(yǔ)言是Java,故根據(jù)實(shí)際業(yè)務(wù)需求在MySQL數(shù)據(jù)庫(kù)中建立數(shù)據(jù)采集表,在程序中使用定時(shí)任務(wù)將采集的數(shù)據(jù)解析后封裝為對(duì)應(yīng)的對(duì)象,并使用MyBatis進(jìn)行數(shù)據(jù)存儲(chǔ)。

        3.5 用Java實(shí)現(xiàn)Modbus傳感器通信與數(shù)據(jù)采集

        在Java中實(shí)現(xiàn)Modbus通信時(shí),根據(jù)通信規(guī)約不同,使用的實(shí)現(xiàn)方式也不相同,主要分為Modbus TCP和Modbus RTU。

        3.5.1 用Java實(shí)現(xiàn)Modbus TCP傳感器數(shù)據(jù)采集

        程序中,TCP方式采集傳感器數(shù)據(jù)的實(shí)現(xiàn)方式如下。

        (1)用Socket getSocketConn(String host,int port)接口獲取Socket連接對(duì)象,用此接口建立應(yīng)用程序與傳感器接收裝置之間的網(wǎng)絡(luò)通信連接。接口中,host參數(shù)表示下位機(jī)IP,參數(shù)port表示下位機(jī)端口。

        (2)用String getResponseCode(Socket socket,String reqCode,int len)接口獲取下位機(jī)響應(yīng)。接口中,socket參數(shù)表示建立網(wǎng)絡(luò)連接的Socket對(duì)象,參數(shù)reqCode表示應(yīng)用程序需要發(fā)送的請(qǐng)求數(shù)據(jù),參數(shù)len表示請(qǐng)求數(shù)據(jù)中寄存器數(shù)量。

        (3)用ListparseResponseCode(String code)接口解析下位機(jī)返回的響應(yīng)數(shù)據(jù)。接口中,參數(shù)code表示下位機(jī)響應(yīng)。

        (4)用ListgetPartialMapResult(Socket socket,String addr)接口獲取業(yè)務(wù)中的傳感器采集數(shù)據(jù)。接口中,參數(shù)socket表示建立網(wǎng)絡(luò)連接的Socket對(duì)象,參數(shù)addr表示請(qǐng)求數(shù)據(jù)中的數(shù)據(jù)單元。

        (5)用void socketClose(Socket socket)接口關(guān)閉網(wǎng)絡(luò)通信連接。接口中,參數(shù)socket表示建立網(wǎng)絡(luò)連接的Socket對(duì)象。

        (6)用List insert(List recordList)接口將解析后的業(yè)務(wù)數(shù)據(jù)存入MySQL。接口中,參數(shù)recordList表示業(yè)務(wù)數(shù)據(jù)對(duì)象。

        3.5.2 用Java實(shí)現(xiàn)Modbus RTU傳感器數(shù)據(jù)采集

        程序中,RTU方式采集傳感器數(shù)據(jù)的實(shí)現(xiàn)方式如下。

        (1)用ArrayListfindPorts()接口獲取當(dāng)前主機(jī)上的可用串口列表。

        (2)用SerialPort openPort(String portName,int baudrate)接口獲取串口連接對(duì)象。接口中,參數(shù)portName表示串口名稱,參數(shù)baudrate表示串口波特率。

        (3)用void sendToPort(SerialPort serialPort,byte[] order)接口實(shí)現(xiàn)上位機(jī)向下位機(jī)發(fā)送數(shù)據(jù)查詢請(qǐng)求。接口中,參數(shù)serialPort表示串口連接對(duì)象,參數(shù)order表示發(fā)送數(shù)據(jù)。

        (4)用byte[] readFromPort(SerialPort serialPort)接口從下位機(jī)獲取響應(yīng)結(jié)果。接口中,參數(shù)serialPort表示串口連接對(duì)象。

        (5)用void closePort(SerialPort serialPort)接口關(guān)閉串口連接。接口中,參數(shù)serialPort表示串口連接對(duì)象。

        (6)用T getJdrkTempAndHum(int comNum)接口解析傳感器響應(yīng),以獲取業(yè)務(wù)數(shù)據(jù)對(duì)象。接口中,參數(shù)comNum表示串口序號(hào)。

        (7)用List insert(List recordList)接口將解析后的業(yè)務(wù)數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)。接口中,參數(shù)recordList表示業(yè)務(wù)數(shù)據(jù)對(duì)象。

        4 結(jié) 論

        研究的技術(shù)主要通過(guò)ModBus TCP/IP和ModBus RTU兩種通信方式,分別實(shí)現(xiàn)電氣設(shè)備傳感器數(shù)據(jù)的采集和存儲(chǔ),方便了數(shù)據(jù)采集系統(tǒng)的快速集成開(kāi)發(fā)。這不僅簡(jiǎn)化了通信規(guī)約解析的開(kāi)發(fā)工作,也為電氣設(shè)備智能化運(yùn)維的數(shù)據(jù)采集分析提供了有效的實(shí)踐借鑒意義。目前,數(shù)據(jù)采集方案已經(jīng)實(shí)際應(yīng)用于多個(gè)項(xiàng)目,且采集程序運(yùn)行穩(wěn)定,對(duì)基于ModBus通信協(xié)議下的數(shù)據(jù)采集分析應(yīng)用場(chǎng)景具有借鑒意義。

        猜你喜歡
        下位寄存器上位
        Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
        發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
        特斯拉 風(fēng)云之老阿姨上位
        車(chē)迷(2018年12期)2018-07-26 00:42:22
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        “三扶”齊上位 決戰(zhàn)必打贏
        基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
        景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
        圍觀黨“下位”,吐槽帝“登基”
        以新思路促推現(xiàn)代農(nóng)業(yè)上位
        CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
        久久精品国产亚洲7777| 国产剧情亚洲一区二区三区| 成熟妇女毛茸茸性视频| 婷婷射精av这里只有精品| 亚洲男人天堂| 亚洲中文一本无码AV在线无码| 亚洲av高清一区三区三区| 国产精品偷窥熟女精品视频| 毛片亚洲av无码精品国产午夜| 免费看奶头视频的网站| 熟女人妻一区二区中文字幕| 婷婷久久国产综合精品| 欧美成人免费全部| 欧美人成在线播放网站免费| 中文字幕日韩精品亚洲精品| 日本在线视频www色| 国产99久久久久久免费看| 真实国产网爆门事件在线观看| 秋霞影院亚洲国产精品| 日本熟妇高潮爽视频在线观看| 国产熟女露脸91麻豆| 少妇人妻大乳在线视频不卡| 欧美黄色免费看| 东京热东京道日韩av| 狠狠色欧美亚洲狠狠色www| 久久人人爽天天玩人人妻精品 | 欧美黑人群一交| 白浆出来无码视频在线| 我的极品小姨在线观看| 欧美黑人又粗又大xxxx| 成人性生交大片免费看r | 亚洲精品高清你懂的| 一区二区三区精彩视频在线观看| 国产黄色一区二区三区av| 亚洲av综合av国产av中文| 麻豆精产国品| 在线观看一区二区女同| 亚洲肥婆一区二区三区| 偷国产乱人伦偷精品视频| 亚洲综合性色一区| 精品国产三级国产av|