蔣 爽,倪福生,滕俊迪,戴 偉
(1.河海大學(xué) 疏浚技術(shù)教育部工程研究中心,江蘇 常州 213022;2.河海大學(xué) 機(jī)電工程學(xué)院,江蘇 常州 213022)
基于VC++的S7-300PLC高速采集系統(tǒng)設(shè)計(jì)
蔣 爽1,2,倪福生1,2,滕俊迪1,2,戴 偉1,2
(1.河海大學(xué) 疏浚技術(shù)教育部工程研究中心,江蘇 常州 213022;2.河海大學(xué) 機(jī)電工程學(xué)院,江蘇 常州 213022)
由于進(jìn)行疏浚實(shí)驗(yàn)時(shí),泥泵揚(yáng)程、真空和管道流速、濃度等關(guān)鍵參數(shù)的變化較快,為了更為準(zhǔn)確地研究泥泵性能和管道輸送特性,需要進(jìn)一步提高泥砂輸送實(shí)驗(yàn)平臺的數(shù)據(jù)采集和存儲速度;下位機(jī)S7-300PLC控制系統(tǒng)選擇了利用逐次逼近法進(jìn)行采樣的高速采集模塊,使其AD轉(zhuǎn)換速度縮短至μs級,同時(shí)采用中斷定時(shí)技術(shù),保證了傳感器數(shù)據(jù)每隔50ms更新、緩存一次,并通過OPC通訊協(xié)議將采樣信號傳送至上位機(jī);上位機(jī)軟件采用多線程技術(shù)保證采集的連續(xù)性和可靠性,同時(shí)采用順序存儲標(biāo)志位確保Excel中存儲的數(shù)據(jù)順序與實(shí)際變化完全一致,解決了存儲時(shí)易造成的數(shù)據(jù)重復(fù)、跳變等問題;通過對多個(gè)傳感器的長時(shí)間采集、存儲實(shí)驗(yàn)發(fā)現(xiàn),在生成的Excel報(bào)表中數(shù)據(jù)的采集次數(shù)恒定為20次/秒,且無重復(fù)、跳變現(xiàn)象,滿足了疏浚泥沙實(shí)驗(yàn)對數(shù)據(jù)采集系統(tǒng)的要求。
高速采集;可編程邏輯控制器;多線程;疏浚
河海大學(xué)疏浚泥沙輸送實(shí)驗(yàn)臺主要用于大型疏浚泥泵的能量特性、磨損特性、汽蝕特性研究,以及泥沙在管道內(nèi)的高濃度、長距離輸送工藝開發(fā)等[1-3]。由于進(jìn)行各類疏浚實(shí)驗(yàn)時(shí),泥泵揚(yáng)程、真空和管道流速、濃度等關(guān)鍵參數(shù)的變化速度較快,要求PLC控制系統(tǒng)的采集周期不能大于100 ms,才能實(shí)時(shí)反映出實(shí)驗(yàn)變化規(guī)律,尤其在研究泥沙啟動或管道堵塞的臨界流速時(shí),所需的采集周期更短。
實(shí)驗(yàn)臺控制系統(tǒng)所選用的西門子S7-300系列PLC通常配合WINCC等組態(tài)軟件進(jìn)行現(xiàn)場數(shù)據(jù)的采集,并將其存儲在WINCC數(shù)據(jù)庫或進(jìn)行歸檔或顯示在界面上。但WINCC的最小刷新周期只有250 ms,遠(yuǎn)遠(yuǎn)大于疏浚泥沙實(shí)驗(yàn)所需的采樣周期。因此,本文利用VC++軟件數(shù)據(jù)處理速度快、開放性和靈活性好、軟件成本低等特點(diǎn)[4-5],配合OPC(OLE for Process Control)通訊技術(shù)和多線程技術(shù),開發(fā)上位機(jī)監(jiān)控程序。同時(shí)下位機(jī)選用S7-300PLC高速采集模塊,并采用中斷定時(shí)的方法進(jìn)行數(shù)據(jù)采集程序的循環(huán),最終實(shí)現(xiàn)了實(shí)驗(yàn)數(shù)據(jù)20次/秒的穩(wěn)定高速采集、存儲。
VC++軟件和S7-300PLC構(gòu)成的監(jiān)控系統(tǒng)進(jìn)行數(shù)據(jù)采集時(shí),通常采用普通的SM331模塊進(jìn)行模數(shù)轉(zhuǎn)換,并利用PLC的定時(shí)器功能實(shí)現(xiàn)數(shù)據(jù)在CPU中的緩存,然后通過以太網(wǎng)模塊和OPC通訊協(xié)議,將數(shù)據(jù)傳送至上位機(jī)VC++程序,實(shí)現(xiàn)數(shù)據(jù)的顯示與存儲[6]。這種方式通常應(yīng)用于每秒10次以下的數(shù)據(jù)采集,當(dāng)進(jìn)一步提高采集速度時(shí),會出現(xiàn)以下4個(gè)方面的問題:首先是普通的SM331模塊采用積分轉(zhuǎn)換的方式,模數(shù)轉(zhuǎn)換時(shí)間較長;其次,PLC中定時(shí)器定時(shí)精度較低,不能保證更短間隔時(shí)間的精確循環(huán)采集;再次,PLC采集周期與OPC刷新周期起始時(shí)間的不一致,可能會造成上位機(jī)存儲數(shù)據(jù)時(shí)局部次序顛倒,當(dāng)數(shù)據(jù)變化較快時(shí),局部數(shù)據(jù)的次序混亂對數(shù)據(jù)分析的影響更大;最后,上位機(jī)如果采用單線程技術(shù),當(dāng)同時(shí)實(shí)現(xiàn)數(shù)據(jù)的高速采集、顯示、存儲和多個(gè)現(xiàn)場設(shè)備的控制、調(diào)節(jié)時(shí),很容易造成線程的超負(fù)荷運(yùn)行,使得數(shù)據(jù)丟失甚至程序的崩潰。
因此,針對上述問題,本文從PLC采集模塊選型、PLC定時(shí)采集方式、采集周期和刷新周期的一致性以及上位機(jī)的線程處理方式等4個(gè)方面進(jìn)行了改進(jìn)設(shè)計(jì),原采集方式和改進(jìn)后的采集方式對比如圖1所示。

圖1 原有采集方式和改進(jìn)后采集方式的對比圖
泥砂輸送實(shí)驗(yàn)平臺數(shù)據(jù)采集系統(tǒng)的下位機(jī)主要完成對泥泵及管道沿線共約30個(gè)模擬量信號的采集、緩存和上傳,需要在對PLC采集模塊工作原理充分了解的基礎(chǔ)上,進(jìn)行高速采集模塊的選型設(shè)計(jì),同時(shí)對CPU的定時(shí)功能進(jìn)行分析,實(shí)現(xiàn)精確的定時(shí)循環(huán)采集。
2.1 高速采集模塊選型
S7-300PLC的普通模擬量采集模塊采用的是積分方法進(jìn)行A/D轉(zhuǎn)換[7],即將輸入電壓進(jìn)行積分得到平均值,并根據(jù)基準(zhǔn)電壓值將平均電壓轉(zhuǎn)化為數(shù)字量,采集原理如圖2(a)所示。積分方法采集轉(zhuǎn)換的數(shù)據(jù)精度較高,但采集速度較慢,如果選擇常用的50 Hz濾波頻率,模數(shù)轉(zhuǎn)換的時(shí)間為196 ms[8],即使不考慮通訊、存儲等環(huán)節(jié)的時(shí)間損耗,1 s內(nèi)的最高采樣次數(shù)也只能達(dá)到5次,遠(yuǎn)遠(yuǎn)不能滿足實(shí)驗(yàn)要求。
因此,本文選用了采用逐次逼近法進(jìn)行采樣的高速采集模塊,即通過將寄存器發(fā)生的狀態(tài)值,經(jīng)過數(shù)模轉(zhuǎn)化器轉(zhuǎn)化為模擬量,并在比較器中與初始值V0進(jìn)行比較,根據(jù)比較的結(jié)果最終在緩存寄存器得到數(shù)字量的值,具體的轉(zhuǎn)換原理如圖2所示。相比較積分型轉(zhuǎn)換模塊,采用高速采集模塊后,其轉(zhuǎn)換速度可達(dá)μs級,在整個(gè)采樣存儲周期中所耗費(fèi)的時(shí)間幾乎可以忽略,只是在精度方面有所損失(分辨率小于<12位),但對于疏浚泥沙輸送實(shí)驗(yàn)研究已經(jīng)足夠。

圖2 積分型和逐次逼近型AD轉(zhuǎn)換原理圖
2.2 中斷定時(shí)采集
高速采集模塊的選擇解決了AD轉(zhuǎn)換時(shí)間過長的問題,但在利用程序定時(shí)器進(jìn)行循環(huán)采集時(shí)發(fā)現(xiàn),定時(shí)器的定時(shí)時(shí)間實(shí)際為設(shè)定時(shí)間和程序運(yùn)行時(shí)間之和。通過查看OB1塊程序的運(yùn)行時(shí)間,如圖3所示,可以看出掃描循環(huán)監(jiān)視時(shí)間為1~4 ms不等,也就是定時(shí)器所設(shè)置的定時(shí)時(shí)間都會在1~4 ms之間變化,因此要實(shí)現(xiàn)精確的50 ms數(shù)據(jù)更新,這種方式難以滿足。

圖3 PLC程序掃描周期監(jiān)測圖
相比之下,中斷組織塊可以實(shí)現(xiàn)更為精確的定時(shí)操作,因?yàn)橹袛喟l(fā)生時(shí),由操作系統(tǒng)自動調(diào)用中斷程序,而非程序塊本身,程序循環(huán)周期排除了不斷變化的掃描周期的影響,定時(shí)間隔恒定不變,定時(shí)精度較高。控制系統(tǒng)選用了定時(shí)中斷組織塊OB32,并設(shè)定時(shí)間間隔50 ms,保證了數(shù)據(jù)每隔50 ms更新一次。相應(yīng)OPC Scout的數(shù)據(jù)刷新周期設(shè)定為最短的250 ms,這樣就保證了一個(gè)OPC刷新周期內(nèi)采集到同一變量的5個(gè)不同時(shí)刻數(shù)據(jù),然后在每次OPC數(shù)據(jù)刷新時(shí),傳送至上位機(jī)進(jìn)行數(shù)據(jù)的顯示和存儲[8]。
為了實(shí)現(xiàn)數(shù)據(jù)的穩(wěn)定顯示和存儲,上位機(jī)采用多線程技術(shù)保證采集的連續(xù)性和可靠性,同時(shí)采用順序存儲程序確保Excel中存儲的數(shù)據(jù)順序與實(shí)際變化的數(shù)據(jù)完全一致。
3.1 數(shù)據(jù)存儲線程設(shè)計(jì)
使用多線程處理多任務(wù)系統(tǒng)時(shí),是將任務(wù)分布到幾個(gè)獨(dú)立線程中運(yùn)行[9-10]。本文采用專有線程實(shí)現(xiàn)數(shù)據(jù)存儲,而主線程用來實(shí)現(xiàn)數(shù)據(jù)顯示、變頻器和閥門控制等。考慮到現(xiàn)有計(jì)算機(jī)均配置有多核CPU,所以無需對某條線程進(jìn)行掛起操作,主線程與數(shù)據(jù)采集線程同步運(yùn)行,消息處理級別相同。數(shù)據(jù)存儲線程的具體實(shí)現(xiàn)步驟如下:
1)構(gòu)建線程控制函數(shù):線程控制的全局函數(shù)聲明extern DWORD WINAPI ThreadProc1(LPVOID lpParam);考慮到上位機(jī)需要兩個(gè)界面同時(shí)控制數(shù)據(jù)存儲,所以多線程函數(shù)使用全局函數(shù)。
2)啟動線程,創(chuàng)建Excel,存儲數(shù)據(jù):點(diǎn)擊“開始保存”按鈕,程序調(diào)用OnStartSave()函數(shù),然后通過AfxBeginThread()函數(shù),啟動線程,進(jìn)行數(shù)據(jù)的持續(xù)寫入。實(shí)驗(yàn)結(jié)束后,點(diǎn)擊“停止保存”按鈕,進(jìn)行Excel表格存儲。
3)中止線程:停止保存數(shù)據(jù)之后,直接在線程函數(shù)內(nèi)部使用AfxEndThread()來中止自身的運(yùn)行,并釋放線程所占用的資源,釋放內(nèi)存。
3.2 順序存儲程序設(shè)計(jì)
一個(gè)OPC刷新周期內(nèi)的數(shù)據(jù)采集過程如圖4所示。圖中ABCDE代表的是第一個(gè)OPC刷新周期內(nèi)PLC采集到的5個(gè)數(shù)據(jù),F(xiàn)GHIJ代表下一個(gè)OPC刷新周期內(nèi)采集到的數(shù)據(jù)。K代表PLC中的循環(huán)狀態(tài)字,用以確保250 ms內(nèi)對同一數(shù)據(jù)進(jìn)行5次不同時(shí)間的采集。

圖4 實(shí)驗(yàn)數(shù)據(jù)的采集及存儲流程圖
由于PLC采集周期(50 ms)與OPC刷新周期(250 ms)起始時(shí)間點(diǎn)的不一致,存儲到Excel中的數(shù)據(jù)可能產(chǎn)生圖4右邊所示的幾種不同結(jié)果。其中ABCDE的順序存儲是我們期望出現(xiàn)的結(jié)果,但后面的4種數(shù)據(jù)存儲情況也會隨機(jī)出現(xiàn),造成數(shù)據(jù)的非正常跳變,給實(shí)驗(yàn)數(shù)據(jù)的分析帶來障礙。因此,本文將PLC循環(huán)狀態(tài)字K發(fā)送到上位機(jī),使其在實(shí)現(xiàn)PLC數(shù)據(jù)循環(huán)采集的同時(shí),也能夠?qū)崟r(shí)反映最新數(shù)據(jù)的位置。上位機(jī)根據(jù)K值重新調(diào)整數(shù)據(jù)在Excel中的存儲順序,使得實(shí)驗(yàn)數(shù)據(jù)與實(shí)際變化情況符合。
本文調(diào)試時(shí)對泥沙輸送實(shí)驗(yàn)臺的22個(gè)現(xiàn)場數(shù)據(jù)進(jìn)行了4小時(shí)的數(shù)據(jù)采集,并記錄每間隔半小時(shí)的數(shù)據(jù)采集次數(shù),繪制出如圖5中所示的曲線,圖中縱坐標(biāo)為采集次數(shù),橫坐標(biāo)為采集時(shí)間,兩條曲線分別代表采集方式改進(jìn)前后的采集次數(shù),曲線頂端的公式即為采集次數(shù)和時(shí)間的關(guān)系。

圖5 改進(jìn)前后的采集次數(shù)對比曲線
通過曲線可以很明顯地看到,改進(jìn)后采集系統(tǒng)的擬合曲線斜率大于原系統(tǒng)。根據(jù)擬合曲線公式計(jì)算出1小時(shí)數(shù)據(jù)采集次數(shù)為75493-3905=71588次,即1 s采集到的數(shù)據(jù)次數(shù)為71588/3600=19.88,符合20次/s的采集速度要求。但由于條件所限,沒有進(jìn)行更長采集時(shí)間的實(shí)驗(yàn)驗(yàn)證,也沒有針對多種疏浚工況下的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行多組別的采集驗(yàn)證,這些都有待于進(jìn)一步的研究分析。
本文對基于VC ++的S7-300PLC高速采集技術(shù)進(jìn)行了分析研究,針對高速采集時(shí)可能出現(xiàn)的數(shù)據(jù)重復(fù)、跳變等問題,給出了高速采集模塊、中斷定時(shí)和OPC緩存及多線程技術(shù)相結(jié)合的解決方案,實(shí)現(xiàn)了對多個(gè)傳感器信號20 次/ 秒的高速、穩(wěn)定采集及存儲。本系統(tǒng)已經(jīng)成功應(yīng)用于河海大學(xué)泥砂輸送實(shí)驗(yàn)臺監(jiān)控系統(tǒng),在生成的Excel報(bào)表中可以看到數(shù)據(jù)的采集次數(shù)恒定為20 次/ 秒,且無重復(fù)、跳變現(xiàn)象,滿足了疏浚泥沙實(shí)驗(yàn)對數(shù)據(jù)采集系統(tǒng)的要求,也為進(jìn)一步提高PLC系統(tǒng)的數(shù)據(jù)采集速度提供了新的思路。
[1] 倪福生,趙立娟.粗砂水力輸送多峰阻力特性[J].中國港灣建設(shè),2010,(1):23-24.
[2] 楊 斌. 泥沙輸送實(shí)驗(yàn)臺控制系統(tǒng)的研制[D]. 南京:河海大學(xué),2011.
[3] 余方超. 基于冗余技術(shù)的疏浚實(shí)驗(yàn)臺控制系統(tǒng)研制[D]. 南京:河海大學(xué), 2014.
[4] 王 歡,井社民. 利用VC++ 6.0 實(shí)現(xiàn)上位機(jī)與PLC 通信[J]. 科技創(chuàng)業(yè)家,2011(5):38-40.
[5] 李豐堂,謝明紅. 基于VC++的PC與PLC的通信軟件設(shè)計(jì)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(8):219-222.
[6] 倪福生,余方超,楊 斌. 基于 S7-300 PLC 的泥沙輸送實(shí)驗(yàn)臺數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 電子測試,2013,11: 012.
[7] 廖常初. 西門子工業(yè)通訊網(wǎng)絡(luò)組態(tài)編程與故障診斷[M].北京:機(jī)械工業(yè)出版社,2009.
[8] 王紀(jì)森, 楊洪音, 梁海毅.液壓綜合試驗(yàn)臺測控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2011,19(4):759-761.
[9] 駱 斌, 費(fèi)翔林. 多線程技術(shù)的研究與應(yīng)用[J]. 計(jì)算機(jī)研究與發(fā)展, 2000, 37(4): 407-412.
[10] 賈廣雷, 劉培玉. 多線程技術(shù)及其在串口通信中的應(yīng)用[J]. 計(jì)算機(jī)工程,2003,29(1): 247-24.
DesignofHighSpeedDataAcquisitionSystemofS7-300PLCBasedonVC++
JiangShuang1,2,NiFusheng1,2,TengJundi1,2,DaiWei1,2
(1.EngineeringResearchCenterofDredgingTechnology,HohaiUniversity,Changzhou213022,China;2.CollegeofMechanicalandElectricalEngineering,HohaiUniversity,Changzhou213022,China)
In order to study the performance of the pump and the characteristics of transporting slurry through pipeline more accurately, the speed of data acquisition and storage of the sand transport test stand should be increased with quick change of the key parameters, such as pump head, vacuum degree, velocity in pipeline and concentration during dredging experiment. In S7-300PLC control system, the time of AD conversion can be shorten to microsecond by using high speed acquisition modules, which sampling by successive approximation method. The timer interruption is used for updating and saving sensors’ data every 50 ms. Then the communication protocol of OPC is used to transmit the signals to the host computer. The multi thread technology is used in the PC software to keep the process of collecting data continuously and reliably, and the sequential storage flag is used to ensure that the sequence of data stored in Excel is consistent with the actual changes, then the problems such as data duplication, jumps, can be solved in the host computer. Through long time collection and storage experiment by multi-sensors, the results show that the stable data collection and storage with the speed of 20 times per second in Excel can be achieved in the improved system.
high speed data acquisition; PLC; multi thread technology; dredging
2016-11-05;
2016-12-08。
蔣 爽(1981-),男,河南南陽人,在讀博士,實(shí)驗(yàn)師,主要從事疏浚技術(shù)自動化方面的研究。
倪福生(1961-),男,安徽無為人,教授,博士生導(dǎo)師,主要從事疏浚工程“土、機(jī)、水”相互作用基礎(chǔ)理論研究、疏浚裝備關(guān)鍵機(jī)具研究開發(fā)和疏浚工藝及仿真研究。
1671-4598(2017)04-0156-03DOI:10.16526/j.cnki.11-4762/tp
TP
A