蔣 爽,倪福生,滕俊迪,戴 偉
(1.河海大學 疏浚技術教育部工程研究中心,江蘇 常州 213022;2.河海大學 機電工程學院,江蘇 常州 213022)
基于VC++的S7-300PLC高速采集系統(tǒng)設計
蔣 爽1,2,倪福生1,2,滕俊迪1,2,戴 偉1,2
(1.河海大學 疏浚技術教育部工程研究中心,江蘇 常州 213022;2.河海大學 機電工程學院,江蘇 常州 213022)
由于進行疏浚實驗時,泥泵揚程、真空和管道流速、濃度等關鍵參數的變化較快,為了更為準確地研究泥泵性能和管道輸送特性,需要進一步提高泥砂輸送實驗平臺的數據采集和存儲速度;下位機S7-300PLC控制系統(tǒng)選擇了利用逐次逼近法進行采樣的高速采集模塊,使其AD轉換速度縮短至μs級,同時采用中斷定時技術,保證了傳感器數據每隔50ms更新、緩存一次,并通過OPC通訊協(xié)議將采樣信號傳送至上位機;上位機軟件采用多線程技術保證采集的連續(xù)性和可靠性,同時采用順序存儲標志位確保Excel中存儲的數據順序與實際變化完全一致,解決了存儲時易造成的數據重復、跳變等問題;通過對多個傳感器的長時間采集、存儲實驗發(fā)現,在生成的Excel報表中數據的采集次數恒定為20次/秒,且無重復、跳變現象,滿足了疏浚泥沙實驗對數據采集系統(tǒng)的要求。
高速采集;可編程邏輯控制器;多線程;疏浚
河海大學疏浚泥沙輸送實驗臺主要用于大型疏浚泥泵的能量特性、磨損特性、汽蝕特性研究,以及泥沙在管道內的高濃度、長距離輸送工藝開發(fā)等[1-3]。由于進行各類疏浚實驗時,泥泵揚程、真空和管道流速、濃度等關鍵參數的變化速度較快,要求PLC控制系統(tǒng)的采集周期不能大于100 ms,才能實時反映出實驗變化規(guī)律,尤其在研究泥沙啟動或管道堵塞的臨界流速時,所需的采集周期更短。
實驗臺控制系統(tǒng)所選用的西門子S7-300系列PLC通常配合WINCC等組態(tài)軟件進行現場數據的采集,并將其存儲在WINCC數據庫或進行歸檔或顯示在界面上。但WINCC的最小刷新周期只有250 ms,遠遠大于疏浚泥沙實驗所需的采樣周期。因此,本文利用VC++軟件數據處理速度快、開放性和靈活性好、軟件成本低等特點[4-5],配合OPC(OLE for Process Control)通訊技術和多線程技術,開發(fā)上位機監(jiān)控程序。同時下位機選用S7-300PLC高速采集模塊,并采用中斷定時的方法進行數據采集程序的循環(huán),最終實現了實驗數據20次/秒的穩(wěn)定高速采集、存儲。
VC++軟件和S7-300PLC構成的監(jiān)控系統(tǒng)進行數據采集時,通常采用普通的SM331模塊進行模數轉換,并利用PLC的定時器功能實現數據在CPU中的緩存,然后通過以太網模塊和OPC通訊協(xié)議,將數據傳送至上位機VC++程序,實現數據的顯示與存儲[6]。這種方式通常應用于每秒10次以下的數據采集,當進一步提高采集速度時,會出現以下4個方面的問題:首先是普通的SM331模塊采用積分轉換的方式,模數轉換時間較長;其次,PLC中定時器定時精度較低,不能保證更短間隔時間的精確循環(huán)采集;再次,PLC采集周期與OPC刷新周期起始時間的不一致,可能會造成上位機存儲數據時局部次序顛倒,當數據變化較快時,局部數據的次序混亂對數據分析的影響更大;最后,上位機如果采用單線程技術,當同時實現數據的高速采集、顯示、存儲和多個現場設備的控制、調節(jié)時,很容易造成線程的超負荷運行,使得數據丟失甚至程序的崩潰。
因此,針對上述問題,本文從PLC采集模塊選型、PLC定時采集方式、采集周期和刷新周期的一致性以及上位機的線程處理方式等4個方面進行了改進設計,原采集方式和改進后的采集方式對比如圖1所示。
圖1 原有采集方式和改進后采集方式的對比圖
泥砂輸送實驗平臺數據采集系統(tǒng)的下位機主要完成對泥泵及管道沿線共約30個模擬量信號的采集、緩存和上傳,需要在對PLC采集模塊工作原理充分了解的基礎上,進行高速采集模塊的選型設計,同時對CPU的定時功能進行分析,實現精確的定時循環(huán)采集。
2.1 高速采集模塊選型
S7-300PLC的普通模擬量采集模塊采用的是積分方法進行A/D轉換[7],即將輸入電壓進行積分得到平均值,并根據基準電壓值將平均電壓轉化為數字量,采集原理如圖2(a)所示。積分方法采集轉換的數據精度較高,但采集速度較慢,如果選擇常用的50 Hz濾波頻率,模數轉換的時間為196 ms[8],即使不考慮通訊、存儲等環(huán)節(jié)的時間損耗,1 s內的最高采樣次數也只能達到5次,遠遠不能滿足實驗要求。
因此,本文選用了采用逐次逼近法進行采樣的高速采集模塊,即通過將寄存器發(fā)生的狀態(tài)值,經過數模轉化器轉化為模擬量,并在比較器中與初始值V0進行比較,根據比較的結果最終在緩存寄存器得到數字量的值,具體的轉換原理如圖2所示。相比較積分型轉換模塊,采用高速采集模塊后,其轉換速度可達μs級,在整個采樣存儲周期中所耗費的時間幾乎可以忽略,只是在精度方面有所損失(分辨率小于<12位),但對于疏浚泥沙輸送實驗研究已經足夠。
圖2 積分型和逐次逼近型AD轉換原理圖
2.2 中斷定時采集
高速采集模塊的選擇解決了AD轉換時間過長的問題,但在利用程序定時器進行循環(huán)采集時發(fā)現,定時器的定時時間實際為設定時間和程序運行時間之和。通過查看OB1塊程序的運行時間,如圖3所示,可以看出掃描循環(huán)監(jiān)視時間為1~4 ms不等,也就是定時器所設置的定時時間都會在1~4 ms之間變化,因此要實現精確的50 ms數據更新,這種方式難以滿足。
圖3 PLC程序掃描周期監(jiān)測圖
相比之下,中斷組織塊可以實現更為精確的定時操作,因為中斷發(fā)生時,由操作系統(tǒng)自動調用中斷程序,而非程序塊本身,程序循環(huán)周期排除了不斷變化的掃描周期的影響,定時間隔恒定不變,定時精度較高??刂葡到y(tǒng)選用了定時中斷組織塊OB32,并設定時間間隔50 ms,保證了數據每隔50 ms更新一次。相應OPC Scout的數據刷新周期設定為最短的250 ms,這樣就保證了一個OPC刷新周期內采集到同一變量的5個不同時刻數據,然后在每次OPC數據刷新時,傳送至上位機進行數據的顯示和存儲[8]。
為了實現數據的穩(wěn)定顯示和存儲,上位機采用多線程技術保證采集的連續(xù)性和可靠性,同時采用順序存儲程序確保Excel中存儲的數據順序與實際變化的數據完全一致。
3.1 數據存儲線程設計
使用多線程處理多任務系統(tǒng)時,是將任務分布到幾個獨立線程中運行[9-10]。本文采用專有線程實現數據存儲,而主線程用來實現數據顯示、變頻器和閥門控制等。考慮到現有計算機均配置有多核CPU,所以無需對某條線程進行掛起操作,主線程與數據采集線程同步運行,消息處理級別相同。數據存儲線程的具體實現步驟如下:
1)構建線程控制函數:線程控制的全局函數聲明extern DWORD WINAPI ThreadProc1(LPVOID lpParam);考慮到上位機需要兩個界面同時控制數據存儲,所以多線程函數使用全局函數。
2)啟動線程,創(chuàng)建Excel,存儲數據:點擊“開始保存”按鈕,程序調用OnStartSave()函數,然后通過AfxBeginThread()函數,啟動線程,進行數據的持續(xù)寫入。實驗結束后,點擊“停止保存”按鈕,進行Excel表格存儲。
3)中止線程:停止保存數據之后,直接在線程函數內部使用AfxEndThread()來中止自身的運行,并釋放線程所占用的資源,釋放內存。
3.2 順序存儲程序設計
一個OPC刷新周期內的數據采集過程如圖4所示。圖中ABCDE代表的是第一個OPC刷新周期內PLC采集到的5個數據,FGHIJ代表下一個OPC刷新周期內采集到的數據。K代表PLC中的循環(huán)狀態(tài)字,用以確保250 ms內對同一數據進行5次不同時間的采集。
圖4 實驗數據的采集及存儲流程圖
由于PLC采集周期(50 ms)與OPC刷新周期(250 ms)起始時間點的不一致,存儲到Excel中的數據可能產生圖4右邊所示的幾種不同結果。其中ABCDE的順序存儲是我們期望出現的結果,但后面的4種數據存儲情況也會隨機出現,造成數據的非正常跳變,給實驗數據的分析帶來障礙。因此,本文將PLC循環(huán)狀態(tài)字K發(fā)送到上位機,使其在實現PLC數據循環(huán)采集的同時,也能夠實時反映最新數據的位置。上位機根據K值重新調整數據在Excel中的存儲順序,使得實驗數據與實際變化情況符合。
本文調試時對泥沙輸送實驗臺的22個現場數據進行了4小時的數據采集,并記錄每間隔半小時的數據采集次數,繪制出如圖5中所示的曲線,圖中縱坐標為采集次數,橫坐標為采集時間,兩條曲線分別代表采集方式改進前后的采集次數,曲線頂端的公式即為采集次數和時間的關系。
圖5 改進前后的采集次數對比曲線
通過曲線可以很明顯地看到,改進后采集系統(tǒng)的擬合曲線斜率大于原系統(tǒng)。根據擬合曲線公式計算出1小時數據采集次數為75493-3905=71588次,即1 s采集到的數據次數為71588/3600=19.88,符合20次/s的采集速度要求。但由于條件所限,沒有進行更長采集時間的實驗驗證,也沒有針對多種疏浚工況下的實驗數據進行多組別的采集驗證,這些都有待于進一步的研究分析。
本文對基于VC ++的S7-300PLC高速采集技術進行了分析研究,針對高速采集時可能出現的數據重復、跳變等問題,給出了高速采集模塊、中斷定時和OPC緩存及多線程技術相結合的解決方案,實現了對多個傳感器信號20 次/ 秒的高速、穩(wěn)定采集及存儲。本系統(tǒng)已經成功應用于河海大學泥砂輸送實驗臺監(jiān)控系統(tǒng),在生成的Excel報表中可以看到數據的采集次數恒定為20 次/ 秒,且無重復、跳變現象,滿足了疏浚泥沙實驗對數據采集系統(tǒng)的要求,也為進一步提高PLC系統(tǒng)的數據采集速度提供了新的思路。
[1] 倪福生,趙立娟.粗砂水力輸送多峰阻力特性[J].中國港灣建設,2010,(1):23-24.
[2] 楊 斌. 泥沙輸送實驗臺控制系統(tǒng)的研制[D]. 南京:河海大學,2011.
[3] 余方超. 基于冗余技術的疏浚實驗臺控制系統(tǒng)研制[D]. 南京:河海大學, 2014.
[4] 王 歡,井社民. 利用VC++ 6.0 實現上位機與PLC 通信[J]. 科技創(chuàng)業(yè)家,2011(5):38-40.
[5] 李豐堂,謝明紅. 基于VC++的PC與PLC的通信軟件設計[J]. 計算機技術與發(fā)展,2008,18(8):219-222.
[6] 倪福生,余方超,楊 斌. 基于 S7-300 PLC 的泥沙輸送實驗臺數據采集系統(tǒng)設計[J]. 電子測試,2013,11: 012.
[7] 廖常初. 西門子工業(yè)通訊網絡組態(tài)編程與故障診斷[M].北京:機械工業(yè)出版社,2009.
[8] 王紀森, 楊洪音, 梁海毅.液壓綜合試驗臺測控系統(tǒng)設計[J].計算機測量與控制,2011,19(4):759-761.
[9] 駱 斌, 費翔林. 多線程技術的研究與應用[J]. 計算機研究與發(fā)展, 2000, 37(4): 407-412.
[10] 賈廣雷, 劉培玉. 多線程技術及其在串口通信中的應用[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-),男,河南南陽人,在讀博士,實驗師,主要從事疏浚技術自動化方面的研究。
倪福生(1961-),男,安徽無為人,教授,博士生導師,主要從事疏浚工程“土、機、水”相互作用基礎理論研究、疏浚裝備關鍵機具研究開發(fā)和疏浚工藝及仿真研究。
1671-4598(2017)04-0156-03DOI:10.16526/j.cnki.11-4762/tp
TP
A