前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇程序編程范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞:ZeroMQ;多線程編程;阻塞;無鎖編程
1、多線程編程的挑戰(zhàn)
自摩爾定律提出以來,CPU主頻一直以指數(shù)級的速度在增長。為了充分利用硬件性能,改善程序體驗,軟件業(yè)廣泛采用了多線程編程技術(shù)。但是由于多個線程是動態(tài)運行的,使得這類程序的編寫和調(diào)試異常困難[1-2]。與單線程程序相比,軟件開發(fā)人員往往需要付出數(shù)十倍的精力。近幾年,隨著CPU主頻逐漸逼近物理極限,芯片工業(yè)逐步向多核發(fā)展,但新增加的CPU性能無法全面發(fā)揮出來。除了像Erlang[3]這樣的少數(shù)語言外,絕大多數(shù)編程語言,包括C和C++,并沒有提供對于并發(fā)編程的支持。在傳統(tǒng)多線程編程技術(shù)中,采用加鎖以及信號量的方式來實現(xiàn)線程同步。這樣的方式存在如下一些問題:(1)編寫以及維護(hù)這類代碼代價非常高昂。根據(jù)經(jīng)驗估算,編寫多線程代碼的成本是編寫單線程代碼成本的10~100倍;(2)這類方法很難擴(kuò)展到更多線程。大多數(shù)多線程應(yīng)用使用2個線程(例如典型的生產(chǎn)者消費者線程),有一些會用到3個或者4個。這表明對于一個有著16個或者更多核心的CPU,其硬件性能沒有充分利用起來;(3)即便代碼是多線程的,它往往也不能受益于多核CPU,因為不同的線程間經(jīng)常彼此阻塞。開發(fā)者很難發(fā)現(xiàn)精巧的多線程程序?qū)嶋H上已經(jīng)退化成了一個單線程;(4)即便在最理想的情況下,應(yīng)用程序被設(shè)計成避免大范圍使用加鎖操作,還是很難擴(kuò)展到超過10個核心的CPU上。隨著線程數(shù)以及CPU核數(shù)的增加,硬件資源的利用率會急劇下降;(5)線程被換入CPU中會引發(fā)程序的上下文切換,以及CPU緩沖區(qū)中的內(nèi)容失效,這也將極大地影響整個程序的執(zhí)行效率。為了避免加鎖導(dǎo)致的阻塞,最新的編程理論提出了無鎖算法來實現(xiàn)數(shù)據(jù)共享。該算法需要用到硬件指令集中的“比較以及交換原子操作”[4]來避免加鎖。為了達(dá)到無鎖編程的準(zhǔn)確性以及安全性,程序員需要具備硬件以及編譯器方面的知識背景。無鎖編程技術(shù)雖然提高了軟件性能,但是其高度復(fù)雜性使得軟件開發(fā)過程充滿了挑戰(zhàn),所以這樣的技術(shù)目前并沒有獲得廣泛的使用。
2、ZeroMQ消息中間件技術(shù)
ZeroMQ是由iMatix公司開發(fā)的一款開源的消息中間件。最初的設(shè)計目標(biāo)是在股票交易系統(tǒng)中實現(xiàn)極快的數(shù)據(jù)交換,所以性能是設(shè)計的首要考慮因素。ZeroMQ看起來像是一套嵌入式的網(wǎng)絡(luò)鏈接庫,但工作起來更像是一個并發(fā)式的框架。它可以在多種協(xié)議中傳輸消息,如線程間、進(jìn)程間、TCP、廣播等。開發(fā)人員可以據(jù)此構(gòu)建多種連接模式,如:-訂閱、任務(wù)分發(fā)、請求-應(yīng)答等。它對幾乎所有主流語言均可支持,并能在幾乎所有的操作系統(tǒng)上運行。ZeroMQ目前已經(jīng)在很廣泛的范圍內(nèi)獲得使用,包括:金融服務(wù)、游戲開發(fā)、嵌入式系統(tǒng)、科學(xué)研究,以及航天系統(tǒng)中。為了達(dá)到高性能,ZeroMQ采用了兩項核心技術(shù)來實現(xiàn)高效的消息傳輸,分別為并發(fā)模型和無鎖隊列。
2.1ZeroMQ的并發(fā)模型
為了充分利用CPU的多核特性,ZeroMQ被設(shè)計成完全避免使用鎖,從而使得每個線程能夠全速運行。線程之間的通信采用基于事件的異步消息發(fā)送模式,即經(jīng)典的參與者模式。它為每一個CPU核啟動一個工作線程,從而避免了當(dāng)兩個線程共享一個核時所做的線程上下文切換操作(見圖1)。ZeroMQ的內(nèi)部對象緊密地與特定工作線程綁定到一起。這樣就不需要使用任何臨界區(qū)、鎖,以及信號量等同步操作。并且每個ZeroMQ內(nèi)部對象與特定的CPU核也是關(guān)聯(lián)的,這樣也避免了上下文切換,有效利用CPU緩存區(qū)機(jī)制。這種設(shè)計避免了傳統(tǒng)多線程開發(fā)所面臨的諸多問題,因為線程之間不再需要共享對象。不過在該設(shè)計中,需要提供一個調(diào)度器。調(diào)度器采用基于事件驅(qū)動的方式管理ZeroMQ內(nèi)部對象,從而避免了在整個循環(huán)中去檢測對象,也避免了對象長時間地占用CPU這種情況。這樣,整個系統(tǒng)工作在異步模式下,所有的對象以狀態(tài)機(jī)的方式運行。
2.2ZeroMQ的無鎖隊列
為了保證并發(fā)操作,ZeroMQ使用了無鎖隊列在用戶線程以及ZeroMQ工作線程之間交換數(shù)據(jù)。無鎖隊列中用到無鎖算法,該算法不依賴操作系統(tǒng)所提供的鎖以及信號量等機(jī)制實現(xiàn)數(shù)據(jù)共享,但是需要依賴CPU提供的原子操作。無鎖算法本質(zhì)上并不是“無鎖”的,只是它的鎖是在硬件層面上實現(xiàn)。此外,無鎖隊列的兩個特別設(shè)計使得其擁有很高的性能。第一個特點是:每個隊列對應(yīng)一個寫線程和一個讀線程(見圖2)。在一個寫線程對應(yīng)多個讀線程的通信環(huán)境下,ZeroMQ將創(chuàng)建多個隊列。這種讀寫之間一一對應(yīng)的模式,加上無鎖操作,使得無鎖隊列的實現(xiàn)非常高效。第二個特點是:采用批處理的方法來寫入或者讀取消息。雖然無鎖編程算法比傳統(tǒng)的基于信號量的算法更高效,但是CPU的原子操作很費時,特別是當(dāng)CPU的多個核之間存在競爭時。為了解決這個問題,ZeroMQ采用了批處理的方法來應(yīng)對。假設(shè)從網(wǎng)絡(luò)上收到了一個數(shù)據(jù)包,其中包含了10個小消息。為了將這些消息寫入無鎖隊列中去,需要使用10次原子操作。ZeroMQ采用的方式是,先將單個消息保存到一個預(yù)寫區(qū)域中,累積到一定數(shù)目后,使用一次原子操作,一起寫入隊列中;類似地,在讀取時也應(yīng)用了預(yù)讀取緩沖區(qū)。
3、ZeroMQ性能驗證
3.1測試方法
通過對ZeroMQ工作原理的分析,知道其性能無疑會超過傳統(tǒng)多線程方法的。但是這樣的性能差距到底有多大,需要通過實驗來分析。ZeroMQ作為消息中間件可以在多種應(yīng)用場合傳遞消息。其中的線程間通信模式,使得其可以很好地用于多線程應(yīng)用程序。在其多種消息傳遞模型中,任務(wù)分發(fā)的消息模式特別適合典型的生產(chǎn)者-消費者這種應(yīng)用形式。傳統(tǒng)多線程編程方法采用了互斥鎖以及信號量來實現(xiàn)生產(chǎn)者-消費者線程之間的數(shù)據(jù)共享。每一個生產(chǎn)者線程與一個消費者線程作為一個線程對。線程的執(zhí)行時間以生產(chǎn)者線程開始工作,到消費者線程處理完最后一個數(shù)據(jù)之間的時間間隔作為該線程對的執(zhí)行時間。多線程情況下,將各個線程對的執(zhí)行時間做相加處理。在每次測試期間,指定采用ZeroMQ的方法與采用傳統(tǒng)多線程的方法這兩種程序所處理的消息數(shù)是相等的。對不同條件下的執(zhí)行時間進(jìn)行統(tǒng)計,從而比較哪種方法性能更優(yōu)。
3.2性能分析
通過測試,分別采用兩種方法的多線程程序所用的時間如表1所示。表1中的數(shù)據(jù)是在一個采用了超線程技術(shù)的2核i5CPU上執(zhí)行結(jié)果。從表1中可以看出,采用ZeroMQ的多線程編程方法比采用傳統(tǒng)的方法在各種情況下性能均占優(yōu)勢,這表明其對于并發(fā)編程有更好的支持。此外,在與其他主流消息隊列,比如:RabitMQ、ActiveMQ以及MSMQ的性能比較中,ZeroMQ也大幅勝出??紤]到ZeroMQ在軟件開發(fā)以及調(diào)試上的便利性,采用其進(jìn)行多線程軟件開發(fā)將帶來巨大的成本優(yōu)勢。
4、結(jié)語
隨著CPU內(nèi)核數(shù)越來越多,如何有效地發(fā)揮硬件運算能力成為越來越重要的任務(wù)。傳統(tǒng)的基于加鎖以及信號量做線程同步的方法已經(jīng)越來越不適應(yīng)性能要求;最新的基于無鎖算法的編程技術(shù)雖然能夠提升性能,但是實現(xiàn)的過程非常復(fù)雜,使得軟件開發(fā)充滿了挑戰(zhàn)性。ZeroMQ這一消息中間件很好地彌補了性能與易用性之間的鴻溝,使得普通開發(fā)人員也可以編寫出高性能、可靠的軟件產(chǎn)品。
參考文獻(xiàn)
[1]葉崧,姚健東.基于ZeroMQ&JSON的分布式測控系統(tǒng)消息通信架構(gòu)設(shè)計[J].現(xiàn)代電子技術(shù),2014(2):105-109.
[2]張俊帥.多線程技術(shù)在數(shù)據(jù)通信中的應(yīng)用[J].科技創(chuàng)新與應(yīng)用,2016(11):87.
[3]蒲鳳平,陳建政.基于ZeroMQ的分布式系統(tǒng)[J].電子測試,2012(7):24-27.
關(guān)鍵詞:計算機(jī)應(yīng)用程序;編程模型;發(fā)展
計算機(jī)的運行主要是通過計算機(jī)硬件和應(yīng)用程序相互協(xié)調(diào)來實現(xiàn)的,從這兩個部分可以看出,任何部分都不能缺少,然而應(yīng)用程序這一方面是計算機(jī)的心臟,決定著計算機(jī)的運行和計算,計算機(jī)開始運行時,先是把對應(yīng)的信息和數(shù)據(jù)錄入計算機(jī),這時計算機(jī)的儲存器會對這些信息進(jìn)行識別和儲存,然后計算機(jī)會啟動計算功能對數(shù)據(jù)進(jìn)行計算,最后把所得結(jié)果運用用戶可以查看的方法保存在硬盤中,這樣有助于用戶對其查看和計算,對于應(yīng)用程序的結(jié)構(gòu),一般包括數(shù)據(jù)保存、邏輯和桌面操作等,然而不同部分的性能相比較也是不同的,所以,必須根據(jù)相關(guān)程序來運行計算機(jī)。
1單層模型
計算機(jī)經(jīng)過了很長時間的發(fā)展,自從計算機(jī)誕生以來的很長時間里,計算機(jī)都包括兩個硬件板塊,其中一個板塊是計算機(jī)的主機(jī)系統(tǒng),另外一個板塊是次要部分,計算機(jī)應(yīng)用程序和以及硬件系統(tǒng)儲存在主機(jī)部分,這就是單層應(yīng)用模型,然而這種類型道德計算機(jī)性能不高,不能滿足用戶使用計算機(jī)的各種需要,所以,在接下來的發(fā)展過程中這種類型的計算機(jī)慢慢被淘汰了。
2雙層模型
在計算機(jī)應(yīng)用程序前進(jìn)歷程中,因為單層模型性能不高,不能滿足用戶的需要,所以,出現(xiàn)了使用雙層模型的計算機(jī),這種模型的基本原理其實就是對計算機(jī)進(jìn)行創(chuàng)新,把主機(jī)板塊劃分為兩個部分,其中一個結(jié)構(gòu)是服務(wù)器, 另一個結(jié)構(gòu)是客戶端。對于服務(wù)器,其功能主要是搜集和處理數(shù)據(jù)和信息,并展示在計算機(jī)服務(wù)器上面,對于信息和數(shù)據(jù)的反映在計算機(jī)桌面,需要借助客戶端來實現(xiàn)。雙層模型相比較單層應(yīng)用模型,雙層模型有很多優(yōu)點,在形式方面有著一定的相同,計算機(jī)的處理形式相比更完善,工作效率得到了較大的提高,達(dá)到了計算機(jī)正常運行的目的。然而雙層模型在使用的時候,也會出現(xiàn)一些問題,這說明其存在一些不足有待完善,所以,繼續(xù)完善是一種正常的趨勢。
3多層模型
多層模型是基于雙層模型的發(fā)展而出現(xiàn)的,通過較長時間的研究和分析,創(chuàng)新性的把雙層模型的優(yōu)點完美加入到了多層模型中,還依靠現(xiàn)論和科學(xué)技術(shù)來完善計算機(jī)的運行方式和計算機(jī)性能,多層模型主要解決了雙層模型存在的問題,這些問題包括不穩(wěn)定和不安全,讓計算機(jī)實現(xiàn)了快速運行,運行起來非常靈活,此外,還彌補了操作方面的不足,通過多層模型可以看出,該模型使用的是模塊分開方式,這使得計算機(jī)使用和維護(hù)起來非常方便,而且存儲器與事務(wù)之間的交流越來越頻繁,可以進(jìn)行信息和數(shù)據(jù)的交換,能夠?qū)崿F(xiàn)不利用其他渠道來得到需要的信息和數(shù)據(jù),這種模型的優(yōu)點使得其在計算機(jī)應(yīng)用中穩(wěn)固了地位,不但沒有被淘汰還得到了人們的認(rèn)可,但是,隨著科學(xué)技術(shù)的進(jìn)步,人們的生活水平得到了快速提升,因此,這種模型必然會隨著時間的推移而被再次創(chuàng)新或者直接淘汰。
4分布式模型
通過觀察計算機(jī)應(yīng)用程序多層模型的使用情況,我們可以知道,這種模型的基本原理中的上層為下層提供服務(wù),還有上層控制和調(diào)節(jié)下層,這一方式有可能會縮短計算機(jī)的使用壽命,所以,相關(guān)技術(shù)人員非常重視這個問題,如果想提升計算機(jī)的性能和運行效率,在完善的時候,應(yīng)該依據(jù)有關(guān)規(guī)則和程序分解應(yīng)用程序的代碼,接下來遵循著計算機(jī)工作規(guī)律準(zhǔn)確確定應(yīng)用程序代碼的功能,在保持現(xiàn)存計算機(jī)功能的情況下,又增添了新功能,然而需要借助分解對象才可以實現(xiàn)。
5基于萬維網(wǎng)的多層模型
隨著萬維網(wǎng)的快速發(fā)展,因特網(wǎng)也得到了快速發(fā)展,因特網(wǎng)具有的功能表現(xiàn)出較大的復(fù)雜性,包括數(shù)據(jù)和信號的方式等,具體的說,萬維網(wǎng)應(yīng)用程序具備的特征比較顯眼,一般可以通過以下幾方面來說明:(1)通過萬維網(wǎng)創(chuàng)建的計算機(jī)編程模型的使用桌面比較簡化,可以使用便捷的搜索系統(tǒng)完成搜索工作,快速發(fā)現(xiàn)軟件所在的位置和使用的操作模式,而且,因特網(wǎng)在其中起著非常顯著的作用。(2)這個基于萬維網(wǎng)的多層模型的使用使得管理人員的工作更加簡單,管理人員可以把一些操作系統(tǒng)安裝在系統(tǒng)中實現(xiàn)搜索,不用依靠其他系統(tǒng)來開展搜索工作,這樣,使得花費在系統(tǒng)維護(hù)上面的費用大幅度被減少,而且工作效率也獲得了快速提高。(3)研究人員可以借助萬維網(wǎng)技術(shù)來有效做好發(fā)明工作,在制作網(wǎng)頁的時候,只需要借助有關(guān)的工具就可以開展工作,不會使得工作變得很復(fù)雜,關(guān)于應(yīng)用開發(fā),舊式的使用單獨的軟件包方式出現(xiàn)的部分應(yīng)用程序慢慢的被應(yīng)用到了互聯(lián)網(wǎng)中,采用出租服務(wù)的形式為用戶提供服務(wù),這不但提升了研發(fā)效率,還使得研發(fā)工作不再那么繁瑣。
6結(jié)論
伴隨著計算機(jī)的快速發(fā)展和信息技術(shù)的不斷進(jìn)步,我們發(fā)現(xiàn)無論是在生活中還是在工作上都有計算機(jī)的參與,人們對計算機(jī)具備的功能提出了越來越高的要求,這樣引起了應(yīng)用程序編程模型向著更高方向發(fā)展,本文以計算機(jī)應(yīng)用程序編程模型的發(fā)展探討為題,對其所有的發(fā)展環(huán)節(jié)進(jìn)行了細(xì)致的研究,發(fā)展環(huán)節(jié)包括單層模型、雙層模型、多層模型、分布式模型以及以萬維網(wǎng)為視角的多層模型,由于人們對計算機(jī)越來越依賴,未來計算機(jī)應(yīng)用程序編程模型會繼續(xù)發(fā)展下去。
參考文獻(xiàn):
[1]李紅巖.計算機(jī)應(yīng)用程序編程模型的發(fā)展探討[J].電子制作,2014(20):71.
[2]高書豪.計算機(jī)應(yīng)用程序編程模型的發(fā)展探討[J].硅谷,2014(07):157-158.
[3]譚曦.論計算機(jī)應(yīng)用程序編程模型的發(fā)展[J].電腦與信息技術(shù),2001(02):51-53.
[4]羅新建.計算機(jī)應(yīng)用程序編輯模型的發(fā)展[J].數(shù)字技術(shù)與應(yīng)用,2013(08):89.
[5]王執(zhí)源.計算機(jī)應(yīng)用程序編程模型發(fā)展方向探析[J].信息與電腦(理論版),2016(17):55-56.
關(guān)鍵詞:PLC;結(jié)構(gòu)化;給排水
1 引言
隨著現(xiàn)代工業(yè)發(fā)展進(jìn)程的不斷加快,工業(yè)自動化控制技術(shù)發(fā)揮著越來越大的作用,PLC控制系統(tǒng)的應(yīng)用也日益廣泛。PLC程序設(shè)計的水平優(yōu)劣往往決定著工程能否及時竣工投產(chǎn),工業(yè)設(shè)備能否充分發(fā)揮其設(shè)計生產(chǎn)能力。傳統(tǒng)的PLC編程方式程序繁瑣冗長,結(jié)構(gòu)不清晰,不利于控制程序在多個項目中的重復(fù)使用。如何迅速、優(yōu)質(zhì)地編制符合不同設(shè)備工藝特點,參數(shù)的PLC程序,對工業(yè)控制系統(tǒng)的及時完工,提高自動化控制水平具有較大的意義。本文結(jié)合給排水行業(yè)常用設(shè)備及工藝程序的編寫,對結(jié)構(gòu)化編程在PLC中的應(yīng)用進(jìn)行了初步的探索,取得了較理想的效果。
2 PLC程序設(shè)計方法簡介
常見的程序設(shè)計方法分為三種:線性化方法、模塊化方法以及結(jié)構(gòu)化方法[1]。
線性化編程方法:將所有的程序代碼全部放在一個程序塊中,如對S7-300/400來說,在OB1中寫入數(shù)據(jù)采集、設(shè)備控制、臺時統(tǒng)計等全部用戶程序。該方法與PLC所代替的繼電器控制電路類似,系統(tǒng)按照順序處理各條指令。它適用于小型設(shè)備配套PLC的編程,對于大中型項目則顯得程序結(jié)構(gòu)不清晰,同時由于需要對不同設(shè)備編制大量類似的代碼,導(dǎo)致代碼冗長,難以調(diào)試和維護(hù)。
模塊化編程方法:將程序根據(jù)不同功能需求分成不同的塊,每個功能的控制指令在各自的塊內(nèi),OB1按順序調(diào)用每個塊。該方法程序結(jié)構(gòu)清晰,便于調(diào)試和維護(hù),但僅將功能按塊分配,加以有條件的調(diào)用,故雖然CPU效率得到提高,但代碼冗長、調(diào)試?yán)щy的缺點未得到明顯改善。
結(jié)構(gòu)化編程方法:將復(fù)雜的自動化任務(wù)分割成過程相關(guān)的功能或可多次處理的小任務(wù),以提供可以用于類似任務(wù)的通用的程序代碼,這樣更易于控制復(fù)雜任務(wù)。而這些小任務(wù)以相應(yīng)的程序段表示,稱為塊。只需要在調(diào)用程序塊時針對不同的設(shè)備和工藝流程代入不同的參數(shù)或地址,即可實現(xiàn)不同設(shè)備的控制,無須多處重復(fù)輸入相同功能的代碼。當(dāng)需要對功能進(jìn)行修改時只需要修改程序塊即可,提高了編程的效率和可靠性。
3 結(jié)構(gòu)化編程方法設(shè)計實例
在實際應(yīng)用中,在對給排水行業(yè)通用設(shè)備和工藝進(jìn)行詳細(xì)分析的基礎(chǔ)上,針對典型設(shè)備和工藝分別編制了水泵、儀表、閥門、泵站水泵調(diào)度、自動加藥等不同的控制模塊,使高效開發(fā)PLC程序在給排水行業(yè)的應(yīng)用成為可能。下面以變頻水泵及泵站的水泵調(diào)度為例來介紹結(jié)構(gòu)化編程方法。
3.1 變頻水泵功能塊
變頻水泵是給排水行業(yè)最常見的設(shè)備,其調(diào)用如圖2所示。
圖2為變頻水泵控制塊的調(diào)用實例,該FB的輸入輸出參數(shù)如圖3示。
功能塊接口參數(shù)共分為三種類型:輸入(INPUT);輸出(OUTPUT);輸入輸出(IN_OUT)。其中輸入?yún)?shù)主要有:遠(yuǎn)程信號,上電信號,運行信號,水泵故障,電回路故障,變頻器故障,頻率輸入等;輸出參數(shù)主要有:開??刂?,頻率控制輸出,實際運行頻率等;輸入輸出類型參數(shù)主要有:變頻電機(jī)狀態(tài),變頻電機(jī)控制命令,電機(jī)臺時及開停次數(shù)統(tǒng)計,頻率設(shè)定值等。
輸入輸出類型參數(shù)可由人工或自控程序在功能塊外部進(jìn)行賦值,也可由本功能塊內(nèi)部邏輯進(jìn)行修改。其中的State、Command等參數(shù)均為WORD類型,其每一位分別代表了不同的含義。
該功能塊包含了除電流外的變頻水泵常見的絕大部分信號處理及控制功能,對于部分實際工程中未使用的參數(shù),可通過直接設(shè)置默認(rèn)值或空置的方式進(jìn)行處理。水泵電流可通過專門的模擬量處理程序塊進(jìn)行數(shù)據(jù)轉(zhuǎn)換和上下限報警判斷,當(dāng)電流超過上下限設(shè)定值時發(fā)出報警信號(過流、欠流)傳送給變頻水泵功能塊,從而實現(xiàn)水泵的電流超限保護(hù)功能。
3.2 泵站水泵調(diào)度功能塊
污水廠一般具有進(jìn)水泵房、中間提升泵站、出水泵房等工藝段,其水泵控制模式基本相同,都是根據(jù)液位的變化來調(diào)節(jié)運行的水泵頻率和臺數(shù),調(diào)泵時又要考慮單臺設(shè)備的運行臺時和啟停間隔等因素。其基本原理介紹如下:
泵站的液位控制一般采用根據(jù)液位分段啟停泵的模式,不同的液位分別對應(yīng)當(dāng)前需要開泵的臺數(shù),同時具備死區(qū)保護(hù)功能,停泵液位設(shè)定值比啟泵液位設(shè)定值略低,以防止特殊情況下水泵的頻繁啟停[2]。
水泵的啟停選擇需要考慮以下幾個條件:
(1)熱備狀態(tài)。PLC首先檢測水泵上電情況,遠(yuǎn)程狀態(tài),控制模式,故障情況等,當(dāng)以上條件均滿足時認(rèn)為該泵處于熱備狀態(tài),可被自控程序進(jìn)行開停調(diào)度。
(2)平衡調(diào)泵。累計運行時間最短的泵優(yōu)先被啟動,運行時間最長的泵優(yōu)先停止,使每臺泵運轉(zhuǎn)時間大致相等。當(dāng)運行時間相同時,按泵的順序啟停。
(3)啟動間隔保護(hù)。控制程序使每一臺泵每小時起動次數(shù)少于6次,兩次起動間隔≥10分鐘,且不論何種情況,不同時起動2臺及2臺以上水泵。
在實際應(yīng)用中,根據(jù)分段啟泵原理以及低水位保護(hù)等條件編制泵站自控功能塊,計算當(dāng)前需要開泵臺數(shù)。根據(jù)上述三條件,編制了水泵啟停調(diào)度選擇功能塊,用于選擇當(dāng)前需要啟動的水泵編號。兩功能塊配套使用,可快速完成泵站自動調(diào)泵程序的編制工作。限于篇幅,本處不再詳述其具體實現(xiàn)過程。
【關(guān)鍵詞】程序設(shè)計 梯形圖 經(jīng)驗法
由于可編程控制器的控制功能以程序的形式出現(xiàn),所以程序設(shè)計是一個重要環(huán)節(jié)。梯形圖是可編程序控制器的重要程序設(shè)計方法。一般應(yīng)用程序設(shè)計可以分為經(jīng)驗設(shè)計法、邏輯設(shè)計法、順序功能圖設(shè)計法等。本文以工作臺自動往返循環(huán)工作為例主要介紹采用經(jīng)驗設(shè)計法進(jìn)行梯形圖程序設(shè)計。
由于生產(chǎn)過程控制要求的復(fù)雜程度不同,可將程序按結(jié)構(gòu)形式分為模塊化程序和基本程序。
基本程序既可以作為獨立程序控制簡單的生產(chǎn)工藝過程,也可以作為組合模塊結(jié)構(gòu)中的單元程序;依據(jù)計算機(jī)程序的設(shè)計思想,基本程序的結(jié)構(gòu)方式只有三種:順序結(jié)構(gòu)、條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
模塊化程序:把一個總的控制目標(biāo)程序分成多個具有明確子任務(wù)的程序模塊,分別編寫和調(diào)試,最后組成一個完整總?cè)蝿?wù)的完整程序。這種方法稱為模塊化程序設(shè)計
經(jīng)驗設(shè)計法需要設(shè)計者掌握大量的基本程序。這些基本程序例如電動機(jī)正反轉(zhuǎn)聯(lián)鎖控、斷開延時和接通延時控制程序、警燈閃爍控制程序等。
我們以工作臺自動往返循環(huán)工作來進(jìn)行說明。
1 設(shè)計要求
(1)自動循環(huán)工作。
(2)點動控制。
(3)單循環(huán)運行,即工作臺前進(jìn)、后退一次循環(huán)后停在原位。
(4)8次循環(huán)計數(shù)控制。即工作臺前進(jìn)、后退為一個循環(huán),循環(huán)8次后自動停在原位。
2 分析控制要求
(1)工作臺前進(jìn)與后退是通過電動機(jī)正反轉(zhuǎn)來控制的,所以要用電動機(jī)正反轉(zhuǎn)這一基本程序;
(2)工作臺工作方式有點動控制和自動控制兩種方式,可以采用程序(軟件的方法)實現(xiàn)兩種運行方式的轉(zhuǎn)換。
(3)工作臺有單循環(huán)和多次循環(huán)兩種工作狀態(tài),可以采用控制開關(guān)來選擇。
(4)多次循環(huán)因要限定循環(huán)次數(shù),所以選擇計數(shù)器來進(jìn)行控制。
3 分配I/O點
PLC控制系統(tǒng)I/O分配,依據(jù)生產(chǎn)流水線從前到后,I/O點數(shù)由小到大,盡可能把一個系統(tǒng)、設(shè)備或部件的I/O信號集中編制,以利于維護(hù)。表1為本例的I/O分配地址表。
4 控制程序設(shè)計
4.1 基本控制環(huán)節(jié)的程序
本控制要求的對象是工作臺,工作方式有前進(jìn)和后退。電動機(jī)正轉(zhuǎn)時,使工作臺前進(jìn),電動機(jī)反轉(zhuǎn)時,使工作臺后退,因此基本控制程序是正反轉(zhuǎn)控制程序。
4.2 實現(xiàn)自動往返功能的程序設(shè)計
工作臺前進(jìn)過程中撞塊壓合SQ2后,SQ2動作,X6常閉觸點應(yīng)先斷開Y0線圈,使工作臺停止前進(jìn),后X6的常開觸點再接通Y1線圈,使工作臺后退,完成工作臺由前進(jìn)轉(zhuǎn)為后退的動作,同理,撞塊壓合SQ1后,工作成由后退轉(zhuǎn)為前進(jìn)的動作,因此在圖(1)中加入二個限位開關(guān),如圖(2)所示。
4.3 實現(xiàn)點動控制功能和單循環(huán)控制功能程序設(shè)計
根據(jù)點動的概念可知,如果在上述梯形圖中解除自鎖,就能實現(xiàn)點動控。所以利用開關(guān)SA1來選擇點動和自動控制。SA1閉合后實現(xiàn)點動,SA1斷開,實現(xiàn)自動控制。
單循環(huán)工作方式是指啟動按鈕按下后,工作臺由原位前進(jìn),當(dāng)撞塊壓合SQ2后由工作臺前進(jìn)轉(zhuǎn)為后退,后退到原位后撞塊壓合SQ1后,使工作臺停在原位。如果撞塊壓合SQ1后,則X5常閉觸點斷開,使Y1線圈失電,工作臺停止后退。在X5常開觸點閉合后,只要不使Y0線圈得電,工作臺就不會前進(jìn),這樣便實現(xiàn)了單循環(huán)控制。如圖(3)所示。
根據(jù)上面這個例子,我總結(jié)出經(jīng)驗法設(shè)計梯形圖的一般規(guī)律:
(1)根據(jù)控制要求,設(shè)計出基本程序;
(2)逐步補充完善程序;使其能完生滿足控制要求;
(3)設(shè)置必要的聯(lián)鎖保護(hù)程序。
PLC控制系統(tǒng)的程序設(shè)計是一個步驟有序的系統(tǒng)工程,要想做到熟練自如,需要反復(fù)實踐和練習(xí)。設(shè)計的每一步,都要依靠平時所積累的程序設(shè)計經(jīng)驗來設(shè)計程序。
參考文獻(xiàn)
[1]張夢欣.可編程序控制器及其應(yīng)用[M].中國勞動社會保障出版社,2006.
關(guān)鍵詞:可編程程序控制器;特點;工作原理;電器控制;應(yīng)用
中圖分類號:TP314 文獻(xiàn)標(biāo)識碼:A 文章編號:1006-8937(2016)18-0074-02
1 可編程程序控制器(PLC)
1.1 可編程程序控制器(PLC)簡介
可編程程序控制器作為一種現(xiàn)代化自動控制裝置,其結(jié)構(gòu)復(fù)雜多變,囊括了計算機(jī)技術(shù)、自動化技術(shù)、智能化技術(shù)、通訊技術(shù)等多種技術(shù),通過用計算機(jī)處理器對程序進(jìn)行操作和控制,不僅可以提高設(shè)備的工作效率和安全性,還可應(yīng)用于新產(chǎn)品的開發(fā)與建設(shè)。
1.2 可編程程序控制器(PLC)的特點
可編程程序控制器采用的是一種數(shù)字電子化操作控制系統(tǒng),具有操作簡便性、使用可靠性高和抗干擾力強等優(yōu)點。因此,廣泛的應(yīng)用在電器控制系統(tǒng)當(dāng)中,其優(yōu)勢主要體現(xiàn)在以下幾方面。
1.2.1 降低操作難度,易于掌控
梯形圖語言作為PLC的基礎(chǔ)編程語言,具有辨識度高、具體形象、使用便利等優(yōu)點,降低了工作人員的操作難度。對工業(yè)生產(chǎn)中的電器控制系統(tǒng)進(jìn)行了改進(jìn)與完善,提高了工作效率。
1.2.2 系統(tǒng)程序功能完整
隨著科技和社會地不斷發(fā)展,可編程程序控制器(PLC)的功能也日益完善。除原本的基礎(chǔ)功能外,它還具有自動診斷功能、智能化功能、遠(yuǎn)程輸入和輸出功能、定時功能、計算功能、圖形顯示功能和動態(tài)組合顯示功能等,系統(tǒng)控制從離散性轉(zhuǎn)變到連續(xù)性的流程模式,提高了設(shè)備的控制技術(shù)水平和控制質(zhì)量。
1.2.3 安全可靠性高
相比傳統(tǒng)的電器控制器,PLC系統(tǒng)中植入了抗干擾的系統(tǒng)體系,可進(jìn)行電波過濾、電波干擾、光電隔離等,在不良環(huán)境中還可進(jìn)行集中采樣并輸出,提高了設(shè)備對惡劣環(huán)境的適應(yīng)性,增強其抗干擾能力,為系統(tǒng)的穩(wěn)定運行提供保障。當(dāng)設(shè)備出現(xiàn)運行故障時,可編程程序控制器可啟動自我診斷系統(tǒng),對發(fā)生故障的位置進(jìn)行精確定位,有利于電器維修工作的開展。PLC的故障處理流程,如圖1所示。
1.2.4 降低了生產(chǎn)成本,提高收益
可編程程序控制器的控制盤比傳統(tǒng)的繼電器體積縮小了近一半,減少了配線的使用,不僅體積大大縮小,而且降低了生產(chǎn)成本的投入,大大提高了經(jīng)濟(jì)收益,推動了現(xiàn)代工業(yè)自動化的發(fā)展進(jìn)程。
1.2.5 適用范圍廣
現(xiàn)可編程程序控制器已具有較為完善的產(chǎn)品體系,有各有型號的產(chǎn)品可供用戶選擇,具有很強的通用性,擴(kuò)大了可編程程序控制器的使用范圍。
2 工作流程
作為現(xiàn)代電器控制系統(tǒng)支柱之一的可編程程序控制器,擁有很強的抗干擾功能和精準(zhǔn)的故障自我診斷及修復(fù)功能,既保障了設(shè)備運營的安全可靠性,又提高了電器控制的技術(shù)水平??删幊坛绦蚩刂破鳛榱烁玫剡m應(yīng)到電器控制系統(tǒng)當(dāng)中,在其設(shè)計中大大提高了設(shè)備的通用性。PLC的工作流程具體如下:
首先,輸入功能進(jìn)行信息的錄入。PLC的系統(tǒng)做出指令,根據(jù)現(xiàn)場的實際情況進(jìn)行實時準(zhǔn)確錄入和讀取。
其次,運算系統(tǒng)的運行。PLC按照操作者發(fā)出的指令進(jìn)入邏輯及算法程序,對指定的輸入指令進(jìn)行計算。
最后,邏輯控制功能的操作。根據(jù)對以上給出的邏輯運算結(jié)果進(jìn)行指定系統(tǒng)傳達(dá),使相應(yīng)的系統(tǒng)做出用戶所需要的功能反應(yīng),完成控制器的整個工作流程。
可編程程序控制器在工作過程中按照連續(xù)掃描式的工作方式對各個指令進(jìn)行分步進(jìn)操作,整個掃描工作內(nèi)容包含了樣點輸入、系統(tǒng)處理、通訊處理、結(jié)果輸出等,具有運行速率快、數(shù)據(jù)處理精確度高等優(yōu)點,大大提高了工作效率。
3 可編程程序控制器的運用
可編程程序控制器在電器控制系統(tǒng)中有著重要的作用。因此,加強可編程程序控制器的系統(tǒng)裝備,保證電器控制系統(tǒng)處于安全、高效的工作狀態(tài),更好地服務(wù)社會和人民大眾。實踐表明,由于可編程程序控制器系統(tǒng)完善、技術(shù)過硬、可靠性高等諸多優(yōu)勢,以使其迅速在電器控制中占領(lǐng)市場。
3.1 開關(guān)量的邏輯控制
不同于傳統(tǒng)的繼電器電路,可編程程序控制器對設(shè)備的開關(guān)量控制從原本的單臺設(shè)備轉(zhuǎn)變?yōu)檎麄€生產(chǎn)流水線的設(shè)備控制模式,如組合機(jī)床和生產(chǎn)線等,大大減少了工業(yè)生產(chǎn)成本的投入資金,提高了工作效率,有利于實現(xiàn)最大化的經(jīng)濟(jì)效益。
3.2 對運動物體的控制
可編程程序控制器具有對圓周及直線運動軌跡的電器設(shè)備進(jìn)行控制的能力。PLC針對物體的運動軌跡,啟動傳感器操作系統(tǒng)對其軌道的運行速度及運動方向進(jìn)行系統(tǒng)控制,如可實現(xiàn)對電梯、機(jī)器人、機(jī)床的控制操作。
3.3 主要參數(shù)的處理
現(xiàn)代大多數(shù)產(chǎn)品的生產(chǎn)都是依靠電器控制系統(tǒng)完成的,生產(chǎn)過程中需要對溫度、濕度、壓強、速度、液體流速及高度等主要參數(shù)的變化進(jìn)行及時錄入及監(jiān)測,這個環(huán)節(jié)工作量大且非常復(fù)雜,但可編程程序控制器可通過D/A轉(zhuǎn)換器進(jìn)行及時處理,提高了編程控制器的準(zhǔn)確度及工作效率。
3.4 總分式控制系統(tǒng)
這種電器控制方式是通過設(shè)置一臺主可編程程序控制器,通過其對各個設(shè)備進(jìn)行集中監(jiān)控操作,負(fù)責(zé)各個設(shè)備間的信息連接與傳遞??偡质娇刂葡到y(tǒng)分工明確,統(tǒng)一由可編程程序控制器發(fā)出指令操作,可使各個設(shè)備各司其職,避免了單一設(shè)備間的信息傳遞不準(zhǔn)確、操作復(fù)雜等缺點。同時,當(dāng)其中一個程序控制要求發(fā)生改變時,可編程程序控制器可及時對設(shè)備發(fā)出指令,使全部設(shè)備終止運行,提高工作效率。
3.5 多層次獨立控制系統(tǒng)
這種電器控制方式是對每個控制對象都配備一個可編程程序控制器,通過多層次間的可編程程序控制器進(jìn)行信息的傳遞及指令的下達(dá)。多層次獨立電器控制方式可對每個控制對象的信息進(jìn)行詳細(xì)掌握,提高控制的精確度。除此之外,當(dāng)某一PLC設(shè)備發(fā)生故障時,不會對其他控制對象產(chǎn)生影響,可將受害損失降低到最小。
4 結(jié) 語
在科技快速發(fā)展的今天,人們應(yīng)該提高對可編程程序控制器的認(rèn)識,不斷探索與研究,尋找出更好地提高可編程程序控制器的相關(guān)控制措施,將可編程程序控制器的穩(wěn)定性、安全性、高效性提高到最大程度。提高可編程程序控制器的應(yīng)用水平,為我國電器控制的質(zhì)量提供了保障,不斷提高我國電器控制領(lǐng)域的發(fā)展步伐。
參考文獻(xiàn):