999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Libmodbus的走航式海表溫度傳感器總線協(xié)議設(shè)計(jì)

2020-12-30 06:40:18賀亞楠朱洪海
山東科學(xué) 2020年6期
關(guān)鍵詞:指令

賀亞楠,朱洪海

(齊魯工業(yè)大學(xué)(山東省科學(xué)院)山東省科學(xué)院海洋儀器儀表研究所 山東省海洋環(huán)境監(jiān)測(cè)技術(shù)重點(diǎn)實(shí)驗(yàn)室 國家海洋監(jiān)測(cè)設(shè)備工程技術(shù)研究中心,山東 青島266061)

海水表層溫度是我國海洋水文常規(guī)觀測(cè)中的重要測(cè)量參數(shù)[1]。基于船載平臺(tái)的海水表層水溫觀測(cè)由于受到船舶和波浪運(yùn)動(dòng)的影響,目前采用的主要手段是人工觀測(cè)。早期的海溫觀測(cè)以直接觀測(cè)為主,包括船舶觀測(cè)、浮標(biāo)觀測(cè)、船體感應(yīng)溫度計(jì)觀測(cè)。船體感應(yīng)海溫測(cè)量是利用船體上安裝的溫度計(jì)直接測(cè)量海溫[2]。溫度計(jì)需要放置在海面水下0.5 m的位置。為了使溫度計(jì)始終在船的吃水線以下,經(jīng)常垂直排列放置3~5個(gè)溫度計(jì)。

為了實(shí)現(xiàn)基于船載平臺(tái)的海水表層水溫自動(dòng)觀測(cè),需要在船體一側(cè)布放水溫傳感器,并且水溫傳感器始終處于船舶吃水線范圍。本文設(shè)計(jì)了基于Libmodbus的走航式海洋表層水溫總線,實(shí)現(xiàn)了表層水溫信息采集和船舶的海水表層水溫自動(dòng)監(jiān)測(cè)。

1 總體設(shè)計(jì)方案

RS485總線具有設(shè)備簡(jiǎn)單、價(jià)格低廉、控制方便、能進(jìn)行長(zhǎng)距離通信的優(yōu)點(diǎn),其收發(fā)器采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力[3]。使用RS485總線和一對(duì)雙絞線就能實(shí)現(xiàn)多站聯(lián)網(wǎng),構(gòu)成分布式系統(tǒng)。因此本系統(tǒng)使用4個(gè)水溫傳感器設(shè)計(jì)RS485作為硬件層協(xié)議,采用主從結(jié)構(gòu),構(gòu)成串行通信系統(tǒng)。

Modbus協(xié)議是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議[4],這是一個(gè)請(qǐng)求/應(yīng)答協(xié)議,并且提供功能碼規(guī)定的服務(wù)。Modbus協(xié)議定義了一個(gè)與基礎(chǔ)通信層無關(guān)的簡(jiǎn)單協(xié)議數(shù)據(jù)單元(PDU),其協(xié)議數(shù)據(jù)單元如圖1所示。

圖1 Modbus協(xié)議數(shù)據(jù)單元

Modbus串行鏈路協(xié)議是單主/多從通信協(xié)議。在同一時(shí)刻,只有一個(gè)主節(jié)點(diǎn)連接于總線,一個(gè)或多個(gè)子節(jié)點(diǎn)(最大編號(hào)為247)連接于同一個(gè)串行總線。在 Modbus 串行鏈路,地址域只含有子節(jié)點(diǎn)地址,主節(jié)點(diǎn)通過將子節(jié)點(diǎn)的地址放到報(bào)文的地址域?qū)ψ庸?jié)點(diǎn)尋址。當(dāng)子節(jié)點(diǎn)返回應(yīng)答時(shí),將自己的地址放到應(yīng)答報(bào)文的地址域以讓主節(jié)點(diǎn)知道哪個(gè)子節(jié)點(diǎn)在回答。Modbus定義了報(bào)文域的位內(nèi)容在線路上串行的傳送,并確定信息如何打包為報(bào)文和解碼。有兩種串行模式即:RTU模式和ASCII模式,區(qū)別見表1。

表1 Modbus-RTU和Modbus-ASCII區(qū)別

Modbus-ASCII模式的一個(gè)子節(jié)需要兩個(gè)字符,在波特率相同時(shí)RTU模式的傳輸數(shù)據(jù)密度以及吞吐率比 ASCII模式的要高。

Modbus總線廣泛應(yīng)用于智能儀器儀表、智能監(jiān)控設(shè)備等諸多領(lǐng)域[5],所以本系統(tǒng)采用Modbus-RTU作為軟件層協(xié)議。為了加強(qiáng)數(shù)據(jù)檢錯(cuò)能力,軟件方面使用CRC16算法校驗(yàn)數(shù)據(jù)。系統(tǒng)整體框圖如圖2所示。

圖2 海洋表層水溫采集系統(tǒng)整體框圖

2 溫度鏈硬件結(jié)構(gòu)設(shè)計(jì)

2.1 測(cè)溫電路設(shè)計(jì)

PT100是一種正溫度系數(shù)的熱敏電阻,隨著溫度的升高電阻增大,并且基本呈線性方式,很適合用作連續(xù)測(cè)溫。鉑電阻測(cè)溫工作原理為:鉑金屬材料在不同的溫度下電導(dǎo)率不同,鉑絲的電導(dǎo)率與溫度之間大致成正比的關(guān)系,其可測(cè)量的溫度范圍大致在-200 ℃~600 ℃。PT100溫度傳感器還具有抗振動(dòng)、穩(wěn)定、測(cè)溫精度高、壽命較長(zhǎng)等優(yōu)點(diǎn)[6]。因此,本設(shè)計(jì)采用PT100進(jìn)行測(cè)溫。圖3中電阻R2、R3、R4與PT100組成電橋電路,REF3030為電橋電路提供標(biāo)準(zhǔn)的3.3 V電壓。AD623用一個(gè)2 kΩ的放大反饋電阻精確地把電橋的壓差放大51倍。

圖3 測(cè)溫電路圖

2.2 RS485通信接口設(shè)計(jì)

本電路采用MAX485作為RS485總線的驅(qū)動(dòng)芯片,如圖4所示。將RE和DE短接,由單片機(jī)的I/O端口經(jīng)反相器控制半雙工通信時(shí)接收和發(fā)送的狀態(tài)切換。三極管Ql及電阻Rl、R2構(gòu)成反相電路,防止出現(xiàn)總線沖突問題;R3、R4為總線空閑時(shí)的箝位電阻,用于抗干擾;R7為阻抗匹配電阻,以減小信號(hào)反射;R5、R6及4個(gè)快恢復(fù)穩(wěn)壓管Dl~D4可將瞬態(tài)高電壓箝位在一定的電壓范圍之內(nèi),以保護(hù)通信接口,保證通信的可靠性。

圖4 RS485通信接口電路

2.3 RS232與RS485轉(zhuǎn)換模塊設(shè)計(jì)

RS232與RS485轉(zhuǎn)換模塊通過MAX232芯片把RS232標(biāo)準(zhǔn)電平轉(zhuǎn)換為TTL標(biāo)準(zhǔn)電平,然后使用MAX485芯片將TTL電平轉(zhuǎn)換為RS485電平。MAX485芯片包含一個(gè)驅(qū)動(dòng)器和一個(gè)接收器,適合于RS485通信標(biāo)準(zhǔn)的低功率收發(fā)器。MAX485芯片采用單一電源5 V工作,額定電流為300 μA,采用半雙工通信方式,可以將TTL電平轉(zhuǎn)換為RS485電平。RS232與RS485轉(zhuǎn)換電路如圖5所示。

圖5 RS232與RS485轉(zhuǎn)換電路

3 利用Modbus協(xié)議的上位機(jī)軟件開發(fā)

Libmodbus作為一個(gè)優(yōu)秀而且免費(fèi)開源的跨平臺(tái)庫,支持RTU和TCP模式的Modbus開發(fā)庫。本文利用Libmodbus開源類庫V3.0.6版本,在Win7操作系統(tǒng)下,使用Visual Studio 2013建立MFC工程,利用MFC類庫和Libmodbus類庫進(jìn)行Modbus上位機(jī)開發(fā)。

3.1 Modbus環(huán)境搭建

首先對(duì)Libmodbus庫進(jìn)行編譯,得到Modbus靜態(tài)庫和動(dòng)態(tài)庫。利用VS2013建立MFC應(yīng)用程序,將Modbus靜態(tài)庫(modbus.lib)和動(dòng)態(tài)庫添(modbus.dll)加進(jìn)工程文件。

在本次開發(fā)中需要用到的文件有:modbus.h;modbus-rtu.h;modbus-tcp.h;modbus-version.h;modbus.lib;modbus.dll。在modbus.h文件中,宏定義了Modbus的功能碼,還定義最大可讀/可寫線圈數(shù)量、最大可讀/可寫寄存器數(shù)量及各種錯(cuò)誤碼常量,并提供串口設(shè)置模式、modbus-tcp環(huán)境、釋放modbus環(huán)境、設(shè)置從站ID、讀寫數(shù)據(jù)等一系列MODBUS_API的聲明。modbus-version.h是modbus類庫的版本信息。

完整的Modbus指令支持很多功能碼,但一個(gè)項(xiàng)目里只用到其中的一部分功能碼,因此本文實(shí)現(xiàn)的上位機(jī)包含讀保持寄存器、寫單個(gè)保持寄存器這2個(gè)指令。

3.2 Modbus讀指令實(shí)現(xiàn)

首先要檢測(cè)讀取的寄存器數(shù)量是否在允許范圍內(nèi),之后再對(duì)查詢幀報(bào)文進(jìn)行預(yù)處理以實(shí)現(xiàn)查詢幀的構(gòu)造,發(fā)送報(bào)文。對(duì)接收到的報(bào)文進(jìn)行數(shù)據(jù)完整性檢測(cè),比較從設(shè)備地址,并進(jìn)行CRC計(jì)算比較。數(shù)據(jù)完整性檢測(cè)完畢之后,得到的才是各個(gè)寄存器的值。本機(jī)將查詢幀報(bào)文預(yù)處理、查詢幀構(gòu)造、數(shù)據(jù)完整性檢測(cè)、CRC校驗(yàn)這些功能分別封裝成函數(shù)。讀指令由modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t*dest)利用函數(shù)調(diào)用的思想實(shí)現(xiàn)。流程圖如圖6所示。

圖6 讀指令流程圖

3.3 Modbus寫指令實(shí)現(xiàn)

首先創(chuàng)建相對(duì)應(yīng)的Modbus-RTU環(huán)境。在讀指令操作中,查詢幀報(bào)文預(yù)處理、查詢幀構(gòu)造、數(shù)據(jù)完整性檢測(cè)、CRC校驗(yàn)這些功能分別封裝成函數(shù)。同以上讀指令一樣,利用函數(shù)調(diào)用的思想,由modbus_write_registers(modbus_t*ctx, int addr, int nb, const uint16_t*data)函數(shù)實(shí)現(xiàn)寫指令的操作。寫指令模塊運(yùn)行流程圖如圖7所示。

圖7 寫指令流程圖

4 實(shí)驗(yàn)結(jié)果

編寫好的上位機(jī)(圖8)先在實(shí)驗(yàn)室利用虛擬串口軟件VSPD進(jìn)行測(cè)試,可以正確讀寫寄存器。而后在2019年11月,于青島中苑碼頭岸基實(shí)驗(yàn)站進(jìn)行測(cè)試。本機(jī)物理端口為COM3,因此串口設(shè)置為COM3,波特率設(shè)為19 200,校驗(yàn)位設(shè)為無,數(shù)據(jù)位設(shè)為8,停止位設(shè)為1。將傳感器固定在船體側(cè)面,處于船舶吃水線變動(dòng)范圍內(nèi),分別采集海水表層溫度、水下1 m處的溫度、水下2 m處的溫度及氣溫。采集的溫度數(shù)據(jù)由Matlab處理如圖9所示。

圖8 軟件界面

由圖9可知,冬季青島岸基實(shí)驗(yàn)站附近的海水,氣溫要比表層水溫高3 ℃左右,表層水溫相差不多,水下1 m處的水溫基本穩(wěn)定在18.62 ℃,水下2 m處的水溫基本穩(wěn)定在18.60 ℃。溫度鏈與水溫精度為0.05、電導(dǎo)率0.05 mS/cm的亞力克溫鹽傳感器同時(shí)測(cè)量海水表層溫度,其最大標(biāo)準(zhǔn)差約為0.1 ℃。誤差分析如圖10所示。

圖9 溫度曲線圖

圖10 誤差分析

5 結(jié)語

本文設(shè)計(jì)的上位機(jī)經(jīng)測(cè)試,各項(xiàng)功能正常,運(yùn)行穩(wěn)定,操作簡(jiǎn)單方便,并具有可移植性和可擴(kuò)展性。該設(shè)計(jì)可以在計(jì)算機(jī)上實(shí)現(xiàn)Modbus-RTU遠(yuǎn)程監(jiān)測(cè),并擴(kuò)展了Modbus-TCP模塊,設(shè)計(jì)了任務(wù)欄托盤功能,實(shí)現(xiàn)了用戶可視化,方便了用戶的操作與使用。為了能夠在沒有安裝VS的計(jì)算機(jī)上使用,可以生成Release版本。

海洋表層水溫是研究海氣間水汽交換、了解海區(qū)水文及水質(zhì)狀況的重要參數(shù)[7],是海洋科學(xué)研究、海洋環(huán)境監(jiān)測(cè)、海上交通安全、國防軍事建設(shè)的重要參考依據(jù)[8]。基于船舶進(jìn)行海水表層水溫自動(dòng)監(jiān)測(cè),能夠使志愿船自動(dòng)觀測(cè)實(shí)現(xiàn)從氣象觀測(cè)擴(kuò)展到水文觀測(cè),增加了觀測(cè)要素,對(duì)研究、開發(fā)和利用海洋都具有重要意義。

猜你喜歡
指令
聽我指令:大催眠術(shù)
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
殺毒軟件中指令虛擬機(jī)的脆弱性分析
巧用G10指令實(shí)現(xiàn)橢圓輪廓零件倒圓角
中斷與跳轉(zhuǎn)操作對(duì)指令串的影響
科技傳播(2015年20期)2015-03-25 08:20:30
基于匯編指令分布的惡意代碼檢測(cè)算法研究
一種基于滑窗的余度指令判別算法
歐盟修訂電氣及電子設(shè)備等產(chǎn)品安全規(guī)定
家電科技(2014年5期)2014-04-16 03:11:28
MAC指令推動(dòng)制冷劑行業(yè)發(fā)展
汽車零部件(2014年2期)2014-03-11 17:46:27
主站蜘蛛池模板: 六月婷婷综合| 免费在线看黄网址| 91偷拍一区| 一级毛片视频免费| 强乱中文字幕在线播放不卡| 91亚瑟视频| 成人免费午夜视频| 天天色综合4| 久久精品国产精品青草app| 国产乱码精品一区二区三区中文 | 久久久久久久久18禁秘| 免费无码网站| 一本色道久久88| 久久人与动人物A级毛片| 欧美日韩资源| 欧美综合成人| 亚洲狼网站狼狼鲁亚洲下载| 日本一区二区不卡视频| 97se亚洲综合在线天天| 动漫精品啪啪一区二区三区| 在线欧美日韩国产| 国产一级小视频| 国产幂在线无码精品| 国产亚洲精品资源在线26u| 国产日韩欧美一区二区三区在线 | 国产日韩精品一区在线不卡| 国产欧美又粗又猛又爽老| 综合色婷婷| 亚洲AV无码乱码在线观看裸奔| 色网在线视频| 日韩在线播放中文字幕| 日韩a级片视频| 国产交换配偶在线视频| 在线观看国产精品第一区免费| 免费高清a毛片| 国产午夜无码片在线观看网站| a毛片在线播放| 国产综合色在线视频播放线视| 综合社区亚洲熟妇p| 欧美亚洲另类在线观看| 呦系列视频一区二区三区| 亚洲a免费| 国产簧片免费在线播放| A级毛片无码久久精品免费| 好紧太爽了视频免费无码| 国模沟沟一区二区三区| 成人永久免费A∨一级在线播放| 91久久国产综合精品女同我| 天堂亚洲网| 国产亚洲男人的天堂在线观看| 伊人久综合| 999精品视频在线| 欧美性猛交xxxx乱大交极品| 亚洲一区二区三区中文字幕5566| 国产无遮挡裸体免费视频| 国产精品成人一区二区不卡| 欧美色丁香| 亚洲三级片在线看| 美女被狂躁www在线观看| 成人精品午夜福利在线播放| 亚洲va欧美va国产综合下载| 亚洲成人精品在线| 一本久道久综合久久鬼色| 亚洲日韩精品欧美中文字幕| 国产成人91精品| 欧美精品亚洲二区| 五月婷婷中文字幕| 一区二区欧美日韩高清免费| 成人精品亚洲| 一本大道无码高清| 久久这里只精品热免费99 | 2021国产乱人伦在线播放| 91丝袜乱伦| 91久久青青草原精品国产| 四虎AV麻豆| 日韩欧美91| 黄片一区二区三区| 黄色片中文字幕| 四虎成人在线视频| 欧美激情视频二区三区| 国产精品黑色丝袜的老师| 日韩欧美视频第一区在线观看|