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

基于虛擬儀器和Arduino的多路物體計數(shù)報警統(tǒng)計分析系統(tǒng)設(shè)計

2023-02-19 14:28:16魏元焜吳丹陽
電子制作 2023年3期
關(guān)鍵詞:分析

魏元焜,吳丹陽

(遼寧機(jī)電職業(yè)技術(shù)學(xué)院,遼寧丹東, 118009)

0 引言

在貨物裝箱統(tǒng)計、人流量分析等領(lǐng)域中,計數(shù)統(tǒng)計或計數(shù)報警功能使用廣泛。尤其在對數(shù)據(jù)分析有要求的背景下,單一的數(shù)據(jù)統(tǒng)計的價值相對較低,更多時候人們期望對統(tǒng)計到的計數(shù)數(shù)據(jù)進(jìn)行時段、峰谷平等更加智能的分析。這一需求要求系統(tǒng)具備多點控制能力,且需要一個高度可制定的數(shù)據(jù)分析平臺。針對這一需求,本文設(shè)計了基于虛擬儀器和Arduino的多路物體計數(shù)報警統(tǒng)計分析系統(tǒng)。虛擬儀器的靈活性,使系統(tǒng)具有高度的可制定特性。為實現(xiàn)多點管理,以Modbus協(xié)議構(gòu)建數(shù)據(jù)通信網(wǎng)絡(luò),以Arduino作為終端主控芯片,簡化終端的設(shè)計。

1 系統(tǒng)概述

系統(tǒng)分為采集終端和數(shù)據(jù)分析平臺兩個部分。采集終端負(fù)責(zé)檢測物體的經(jīng)過,在完成指定個次數(shù)的計數(shù)后,發(fā)出報警信號,并將報警信息也上傳到數(shù)據(jù)分析平臺。報警可選擇由采集終端的操作人員手動解除或由數(shù)據(jù)分析平臺解除。

數(shù)據(jù)分析平臺記錄各個終端的報警參數(shù)和歷史數(shù)據(jù)。除了可以查詢各個終端的實時數(shù)據(jù)外,還可以根據(jù)各個平臺的歷史數(shù)據(jù)給出分析結(jié)果,以適應(yīng)不同終端的特殊計數(shù)和報警需求,并分析出不同終端位置的數(shù)據(jù)量特點。

多個終端和平臺之間以Mod bus總線連接。分析平臺作為Modbus主機(jī),掛接由采集終端構(gòu)成的Modbus從機(jī)。Modbus為平臺與終端之間提供了規(guī)范化的接口,既便于系統(tǒng)的擴(kuò)展,也方便終端尋址、報警類型區(qū)分等個性化控制。系統(tǒng)整體設(shè)計框圖如圖1所示。

圖1 系統(tǒng)整體設(shè)計框圖

2 系統(tǒng)實現(xiàn)

■2.1 制定Modbus-RTU通信規(guī)則

Modbus是一種工業(yè)協(xié)議標(biāo)準(zhǔn),由Modicon(現(xiàn)為施耐德電氣)于20世紀(jì)70年代后期創(chuàng)建,如今已普遍用于可編程控制器、智能儀表之間的通信,是連接工業(yè)設(shè)備的最廣泛使用的協(xié)議。Modbus協(xié)議規(guī)范是公開發(fā)布的,該協(xié)議的使用是免費的[1~3]。

本文采用的是RS-485上的Modbus-RTU協(xié)議,這是Modbus協(xié)議中一種常用的、相對簡單的串行協(xié)議,可以通過傳統(tǒng)的UART技術(shù)進(jìn)行傳輸。

系統(tǒng)實現(xiàn)Modbus-RTU通信的關(guān)鍵在于采集終端上Modbus寄存器的布局使用情況,以及采集終端和分析平臺上的Modbus軟件實現(xiàn)。本文系統(tǒng)中的計數(shù)報警采集終端的Modbus寄存器布局如表1所示。

采集終端和分析平臺分別采用不同的軟件平臺實現(xiàn),因此Modbus的實現(xiàn)方式有所不同。但只要都遵循表1的寄存器布局規(guī)則,則上下位機(jī)就可以建立統(tǒng)一的通信規(guī)則,進(jìn)而實現(xiàn)計數(shù)和報警數(shù)據(jù)的分布存儲和分析。

表1 計數(shù)報警采集終端中的Modbus寄存器布局

■2.2 采集終端

2.2.1 采集端硬件構(gòu)成

采集終端采用Arduino Leonardo作為主控。Arduino Leonardo是基于ATmega32u4一個微控制器板。它有20個數(shù)字輸入/輸出引腳(其中7個可用于PWM輸出、12個可用于模擬輸入),一個16 MHz的晶體振蕩器,一個Micro USB接口,一個DC接口,一個ICSP接口,一個復(fù)位按鈕。它包含了支持微控制器所需的常用功能,可以簡單地通過將其連接到計算機(jī)的USB接口,或者使用AC-DC適配器,再或者用電池來驅(qū)動它[4]。

Leonardo與其他Arduino控制器的不同之處在于直接使用了ATmega32u4的USB通信功能,取消了USB轉(zhuǎn)UART芯片。這使得Leonardo不僅可以作為一個虛擬的(CDC)串行/COM端口,還可以作為鼠標(biāo)或者鍵盤連接到計算機(jī)[5]。

為實現(xiàn)采集終端的功能,將Arduino與光電開關(guān)模塊、LED和按鍵連接,光電開關(guān)模塊數(shù)據(jù)由D2引腳讀取,LED由D3引腳輸出控制信號,按鍵信號由D7引腳讀取。圖2給出了采集終端的實物圖。

圖2 采集終端實物圖

2.2.2 采集端軟件實現(xiàn)

Modbus在采集終端采用Arduino官方提供的Arduino Modbus庫來實現(xiàn)。這一工具庫可在ArduinoI DE的庫管理器中搜索并直接安裝。另外需要同時安裝Arduino Modbus庫依賴的Arduino RS485庫。由于Modbus總線的通信主要是主機(jī)發(fā)出查詢指令,從機(jī)被動應(yīng)答,因此Arduino的Modbus庫將Modbus從機(jī)看作服務(wù)器,Modbus主機(jī)看作客戶端,從機(jī)的Modbus對象被命名為Modbus RTUServer。從機(jī)利用Arduino Modbus庫實現(xiàn)Modbus通信分為初始化、查詢和更新幾個階段,涉及modbusServer對象的常用方法有:begin()、poll()、end()以及一些寄存器的配置和讀寫方法。

采集終端的軟件分為初始化和主循環(huán)兩個部分。初始化部分需要完成計數(shù)變量、報警變量等數(shù)據(jù)初始化以及LED狀態(tài)初始化,以及Modbus總線和寄存器的初始化。主循環(huán)部分包括光電開關(guān)數(shù)據(jù)更新、按鍵數(shù)據(jù)更新、LED狀態(tài)更新、計數(shù)變量、報警變量等數(shù)據(jù)的更新,以及Modbus請求查詢和按硬件情況更新Modbus寄存器。

采集終端的功能主要由以下幾個步驟實現(xiàn):(1)初始化變量和引腳

(2)初始化Modbus總線

ModbusRTUServer.begin(0x33, 9600); //指 定Modbus從機(jī)的設(shè)備號和通信波特率。

ModbusRTUServer.configureCoils(0x00, 2); //按表1為光電開關(guān)狀態(tài)和當(dāng)前報警狀態(tài)開辟Modbus線圈寄存器空間。

ModbusRTUServer.configureHoldingRegisters(0x00,2); //按表1為當(dāng)前計數(shù)值和計數(shù)報警值開辟Modbus保持寄存器空間。

(3)開始主循環(huán),更新硬件狀態(tài)

利用digitalWrite和digitalRead更新硬件狀態(tài)。其中,PeStateOld和PeStateNew分別記錄相鄰兩次的光電開關(guān)狀態(tài),光電開關(guān)輸出的上升沿代表有物體經(jīng)過,則PassState被賦值為HIGH。PassState的上升沿使當(dāng)前計數(shù)值CurCnt自增1,CurCnt也可由分析平臺或采集終端的按鍵清零。當(dāng)CurCnt數(shù)值超過AlmNum規(guī)定的報警上限時,則AlarmState置1,并以此數(shù)值驅(qū)動LED,使其點亮0.5s。

(4)硬件狀態(tài)映射到Modbus寄存器

按表1映射關(guān)系,將光電開關(guān)狀態(tài)和報警狀態(tài)映射到線圈寄存器,關(guān)鍵代碼如下:

按表1映射關(guān)系,將當(dāng)前計數(shù)值和計數(shù)報警值映射到保持寄存器,關(guān)鍵代碼如下:

獲取ModbusClient(Modbus主機(jī))的數(shù)據(jù)查詢請求,關(guān)鍵代碼如下:

返回步驟(3),循環(huán)往復(fù)。

■2.3 分析平臺

分析平臺基于Windows PC運行,利用NI LabVIEW軟件編寫實現(xiàn)。LabVIEW具有所見即所得的界面設(shè)計特點,可縮減軟件設(shè)計周期;配合LabVIEW成熟的設(shè)計模式(軟件設(shè)計框架),可以提高軟件的可維護(hù)性,便于功能的增加或刪減。

2.3.1 分析平臺軟件框架

旅游開發(fā)價值-充分挖掘古建筑本身具有的歷史文化與象征意義,將其開發(fā)打造成旅游觀光場所,不僅可以促進(jìn)地方經(jīng)濟(jì)發(fā)展,而且是打造地方特色的重要實物載體。

本文采用LabVIEW的隊列消息處理器(Queued Message Handler,QMH)設(shè)計模式搭建分析平臺的軟件框架。

QMH可由模板創(chuàng)建。創(chuàng)建好的QMH模板中,Main.vi是整個程序的入口。Main.vi包含兩個while循環(huán),類似于兩個線程,它們是CPU分配時間的最小單位,可以共享局部變量。兩個while循環(huán)中,一個負(fù)責(zé)處理來自界面和用戶自定義的事件。根據(jù)具體事件要求,發(fā)送不同消息給另一個while循環(huán)— 消息處理循環(huán)。根據(jù)設(shè)計需要,也可以建立多個消息處理循環(huán),根據(jù)設(shè)計規(guī)劃,將同一類消息發(fā)送給不同的循環(huán)。在本文中,保留了模板中的事件處理循環(huán)和消息處理循環(huán)。消息處理循環(huán)用于統(tǒng)一處理Modbus通信,因此稱為Modbus通信循環(huán)。另外,為每一個采集終端單獨設(shè)置一個while循環(huán),用于處理不用采集終端的消息,這一設(shè)計方式對平臺對不同采集終端數(shù)據(jù)的獨立分析是有利的。

QMH中的第二個要素是消息隊列,在模板中以庫的形式出現(xiàn),被命名為Message Queue.lvlib。LabVIEW中的庫類似于面向?qū)ο缶幊讨械念悾谙㈥犃袔熘校庋b了消息隊列的數(shù)據(jù)類型、對外可見的公有函數(shù)和私有函數(shù)。對外的公有函數(shù)包括:Create All Message Queues(創(chuàng)建所有消息隊列)、Obtain Message Queue(獲取消息隊列)、Enqueue Message(消息入隊)和Dequeue Message(消息出隊)。Create All Message Queues函數(shù)一次性創(chuàng)建Main.vi所需的所有消息隊列,并以簇的形式將所有消息隊列的引用打包輸出。Obtain Message Queue可以創(chuàng)建單一的消息隊列。Enqueue Message將一個或多個消息壓入指定消息隊列,這是一個多態(tài)VI,可向指定隊列一次性壓入一個或多個消息,因而可以一次性發(fā)送多個連續(xù)的指令,這一特性在狀態(tài)機(jī)設(shè)計模式中可以用于一次性指定后續(xù)的連續(xù)多個狀態(tài)。消息入隊時可選擇消息入隊優(yōu)先級,低優(yōu)先級入隊,是將消息壓入隊尾,而高優(yōu)先級入隊是將消息壓入消息隊列隊首,便于在消息出隊時優(yōu)先出隊。Dequeue Message用于從指定隊列中從隊首提取一個消息。

本文為實現(xiàn)系統(tǒng)功能,為N個采集終端創(chuàng)建了N+1個消息隊列。即為每個采集終端獨立創(chuàng)建一個消息隊列,多出的一個消息隊列用于Modbus通信,即Modbus通信循環(huán)的專用消息隊列。

消息的數(shù)據(jù)類型是一個簇(類似于C語言中的結(jié)構(gòu)體),包含了消息本身(字符串類型)和一個消息參數(shù)(變體類型,類似于C語言中的空類型,即void)。這樣的設(shè)計方式可以將任意類型的數(shù)據(jù)以變體的形式發(fā)送,在接收時按對應(yīng)數(shù)據(jù)類型從變體中恢復(fù)出來。但這種類型的數(shù)據(jù)發(fā)送需要開辟大量內(nèi)存空間,因此對于大量數(shù)據(jù),最好發(fā)送引用,以減少不必要的內(nèi)存開銷。

2.3.2 分析平臺Modbus通信實現(xiàn)

分析平臺的Modbus通信可通過NI的Modbus庫1.21實現(xiàn)。NI Modbus庫不是LabVIEW自帶的,但安裝過程相對簡單,其提供了較為完整的功能。NI Modbus庫提供了LabVIEW 7.1、8.2、8.5以及8.6幾個早期關(guān)鍵版本,但8.6版的兼容性較好,可以使其兼容LabVIEW2019乃至更高版本的LabVIEW。因此安裝時將86文件夾中的三個文件夾:help、user.lib以及vi.lib復(fù)制到安裝目錄下,并直接與同名文件夾合并即可。重啟LabVIEW軟件,在程序框圖右擊,調(diào)出函數(shù)選板,在用戶庫大類下,看到NI Modbus項則表明安裝成功。

工具包中有幾個關(guān)鍵函數(shù),是實現(xiàn)分析平臺作為Modbus主機(jī)(即Arduino Modbus庫中的Modbus Client)與作為Modbus從機(jī)的采集終端進(jìn)行Modbus通信所必需的,包括:

(1)MB Serial Init:用于對初始化Modbus總線所在的串口資源,包括指定串口號、波特率、校驗位、是否采用流控、超時毫秒以及Modbus模式等信息,完成初始化后,即輸出初始化成功的串口資源號。

(2)MB Serial Master Query:用于Modbus主機(jī)向從機(jī)發(fā)起查詢指令。這是一個多態(tài)VI,可根據(jù)查詢寄存器類型選擇對應(yīng)參數(shù)類型的重寫VI。其中的關(guān)鍵參數(shù)包括指定從機(jī)號、寄存器類型對應(yīng)的起始寄存器地址和要讀寫的數(shù)量。

2.3.3 分析平臺數(shù)據(jù)分析功能實現(xiàn)

就實現(xiàn)單一采集終端數(shù)據(jù)讀取而言,LabVIEW的程序框圖非常簡單,如圖3所示。

圖3 單一采集終端的數(shù)據(jù)查詢的LabVIEW程序

圖中給出的示例分為初始化、數(shù)據(jù)讀寫和資源回收三個階段。在初始化階段,利用MB Serial Init函數(shù)指定Modbus主機(jī)所連接的串口號,從而打開所在串口資源引用,后續(xù)的Modbus操作都需要利用這個引用找到需要讀寫的硬件資源。在數(shù)據(jù)讀寫階段,相應(yīng)的Modbus從機(jī)寄存器進(jìn)行讀寫,同時需要指定Modbus通信模式(RTU)和從機(jī)號。由于Modbus從機(jī)有運行周期,所以主機(jī)的讀寫頻率應(yīng)適應(yīng)從機(jī)讀寫周期。當(dāng)程序退出后,需要回收相應(yīng)的硬件資源,關(guān)閉打開的串口。

但當(dāng)采集中端數(shù)量變多時,主機(jī)對從機(jī)的請求數(shù)據(jù)就會出現(xiàn)積壓,因此必須分類管理,否則會出現(xiàn)通信沖突。這時就需要利用分析平臺的QMH軟件框架對數(shù)據(jù)通信進(jìn)行規(guī)劃管理。即為每一個采集終端設(shè)置一個消息請求循環(huán)(while循環(huán)實現(xiàn)的消息處理循環(huán)),每個采集終端的消息處理循環(huán)將自己的Modbus請求發(fā)送給QMH的Modbus消息循環(huán),即使出現(xiàn)消息積壓,所有消息也都會在Modbus消息處理循環(huán)的隊列中被有序組織,并依次發(fā)送給Modbus總線。從而有效地避免了數(shù)據(jù)沖突。每一個采集中端的消息處理循環(huán)可按其優(yōu)先級設(shè)置不同的采樣周期,以最大化提升信息傳輸效率。

3 結(jié)束語

傳統(tǒng)的技術(shù)報警設(shè)備通常是主機(jī)和從機(jī)的一對一控制,對于一個主機(jī)掛有多個從機(jī)的情況,則需要對數(shù)據(jù)通信進(jìn)行統(tǒng)一調(diào)度。Modbus總線為這種消息集中管理提供了硬件基礎(chǔ),而LabVIEW的QMH軟件架構(gòu)為消息統(tǒng)一調(diào)度提供了軟件基礎(chǔ)。本文的設(shè)計方法擴(kuò)展性強(qiáng),有望應(yīng)用于實際的產(chǎn)品設(shè)計當(dāng)中。

猜你喜歡
分析
禽大腸桿菌病的分析、診斷和防治
隱蔽失效適航要求符合性驗證分析
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統(tǒng)及其自動化發(fā)展趨勢分析
經(jīng)濟(jì)危機(jī)下的均衡與非均衡分析
對計劃生育必要性以及其貫徹實施的分析
GB/T 7714-2015 與GB/T 7714-2005對比分析
出版與印刷(2016年3期)2016-02-02 01:20:11
中西醫(yī)結(jié)合治療抑郁癥100例分析
偽造有價證券罪立法比較分析
在線教育與MOOC的比較分析
主站蜘蛛池模板: 91精品网站| 精品国产Av电影无码久久久| 亚洲天堂在线免费| 在线观看亚洲天堂| 成人在线观看不卡| 久久综合丝袜日本网| 国产靠逼视频| 亚洲中文字幕在线观看| 国内精品久久久久鸭| 老司机精品一区在线视频| 久久国产高清视频| a级毛片免费网站| 9久久伊人精品综合| 日本AⅤ精品一区二区三区日| 狠狠久久综合伊人不卡| 亚洲无码精品在线播放| 中文字幕在线播放不卡| 性激烈欧美三级在线播放| 一区二区三区四区精品视频| 欧美色图第一页| 日韩毛片免费观看| 男人天堂亚洲天堂| 欧美视频在线第一页| 91精品福利自产拍在线观看| 日韩亚洲高清一区二区| 国产jizz| 国产91在线免费视频| 欧美国产日韩在线观看| 国产亚卅精品无码| 国产亚洲精品97AA片在线播放| 欧美视频在线播放观看免费福利资源| 国产精品美女自慰喷水| 欧美一道本| 亚洲精品手机在线| 伊在人亞洲香蕉精品區| 色亚洲激情综合精品无码视频 | 日韩高清在线观看不卡一区二区 | 国产91精品最新在线播放| 成人91在线| 久久香蕉国产线看观看亚洲片| 中文字幕欧美日韩| 国产精品九九视频| 成人第一页| 国产无码精品在线| 成人在线亚洲| 国产精品性| 亚洲不卡影院| 欧美一级夜夜爽| 国产无码制服丝袜| Aⅴ无码专区在线观看| 国产在线97| 午夜爽爽视频| 性欧美久久| 青青青国产精品国产精品美女| 青青青视频91在线 | 91福利免费| 亚洲视频黄| 亚洲区欧美区| 97精品国产高清久久久久蜜芽| 国产精品丝袜视频| 日韩欧美中文| 波多野结衣爽到高潮漏水大喷| 欧美亚洲一区二区三区导航| 色婷婷成人| 超清无码一区二区三区| 女人18毛片一级毛片在线| 大香伊人久久| 香蕉eeww99国产在线观看| 欧美日在线观看| 精品撒尿视频一区二区三区| 国产亚洲精| 色综合五月| 91精品情国产情侣高潮对白蜜| 亚洲人成高清| 91免费精品国偷自产在线在线| 99久久99视频| 日本不卡视频在线| 欧美成人一级| 国产精品蜜臀| 国产精品亚洲片在线va| 又猛又黄又爽无遮挡的视频网站 | 久久男人视频|